Documentación

Aplicaciones

Última actualización el 18. 11. 2021 por clonex / Ivan Hudec

Ejemplo - Trade Edge Ratio

El ratio de ventaja nos indica el potencial de una operación concreta. El cálculo es la relación entre el MFE normalizado y el MAE normalizado. Ya hemos escrito sobre el Edge Ratio en este artículo. En el siguiente tutorial, le mostraremos cómo crear una nueva columna de operaciones que nos permitirá analizar el Edge Ratio de cada operación.

Paso 1 - Crear una nueva columna Comercio

 

Abra CodeEditor, haga clic en Crear nuevo y elija la opción de columna Lista de operaciones. EdgeRatioTrade.

Esto creará un nuevo fragmento EdgeRatioTrade.java en carpeta Usuario/Snippets/SQ/Columnas/Trades

Pongamos Decimal2 en el constructor para obtener el valor con dos decimales.

 

public clase EdgeRatioTrade extends TradelistColumna {
    
    public EdgeRatioTrade() {
        super("EdgeRatioTrade", Decimal2);
        setWidth(80);
    }


Paso 2 - Implementar el método getValue()

 

Este método tiene en el parámetro Pida order es una clase que almacena los valores de cada orden de la estrategia. Al mismo tiempo, esta clase contiene métodos que nos permiten ordenar o identificar el orden. En segundo plano, StrategyQuant X llama al método getValue(Order order) y produce un valor para cada orden de la estrategia.

 

    @Override
    public Object getValue(Pedido pedido) {
    
    double mae = orden.PipsMAE; //obtener MAE de la orden en pips
    double mfe = orden.PipsMFE; //obtener MAE de la orden en pips
    double atrOnOpen = orden.ATROnOpen; //obtener el ATR de la orden en pips

    double normMAE = mae/atrOnOpen; // obtiene la MAE normalizada
    double normMFE = mfe/atrOnOpen; // obtiene el MFE normalizado

    double eRTrade = SQUtils.safeDivide(normMFE,normMAE); // SQUtils.safeDivide precede a la excepción null zero divide

    return eRTrade;

}

 

Consejo:

Si desea depurar el código de este fragmento sólo tiene que añadir la función fdebug("","") en su código. El registro donde se escriben los valores se puede encontrar en la carpeta user/Log/StrategyQuant.

 

@Override
    public Object getValue(Pedido pedido) {
        
        double mae = orden.PipsMAE; //obtener MAE de la orden en pips
        double mfe = orden.PipsMFE; //obtener MAE de la orden en pips
        double atrOnOpen = orden.ATROnOpen; //obtener el ATR de la orden en pips

        double normMAE = mae/atrOnOpen; // obtiene la MAE normalizada
        double normMFE = mfe/atrOnOpen; // obtiene el MFE normalizado

        double eRTrade = SQUtils.safeDivide(normMFE,normMAE); // SQUtils.safeDivide precede a la excepción null zero divide

        /// fdebug
        fdebug("EdgeRatioTrade---> "," orden.Ticket: "+orden.Ticket+" orden.PipsMAE: "+orden.PipsMAE+" orden.ATROnOpen: "+orden.ATROnOpen);

        devolver eRTrade;

    }

 

Paso 3 - Añadir fragmento a la lista de operaciones

 

Después de compilar el fragmento y reiniciar StrategyQuantX, puede añadir el fragmento a la lista de operaciones.

 

 

Código completo comentado del fragmento

 

paquete SQ.Columns.Trades;

import com.strategyquant.lib.*;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*;

public clase EdgeRatioTrade extends TradelistColumna {
    
    public EdgeRatioTrade() {
        super("EdgeRatioTrade", Decimal2);
        setWidth(80);
    }
    
    @Override
    public Object getValue(Orden orden) {
        
        double mae = orden.PipsMAE; //obtener MAE de la orden en pips
        double mfe = orden.PipsMFE; //obtener MAE de la orden en pips
        double atrOnOpen = orden.ATROnOpen; //obtener el ATR de la orden en pips

        double normMAE = mae/atrOnOpen; // obtiene la MAE normalizada
        double normMFE = mfe/atrOnOpen; // obtiene el MFE normalizado

        double eRTrade = SQUtils.safeDivide(normMFE,normMAE); // SQUtils.safeDivide precede a la excepción null zero divide

        return eRTrade;

    }

}

 

¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil

Suscríbase a
Notificar a
1 Comentario
Más antiguo
Más reciente Más votados
Feedbacks de Inline
Ver todos los comentarios
Emmanuel
23. 12. 2021 12:29 am

¡¡¡muy bueno !!!