Documentación
Aplicaciones
Última actualización el 18. 11. 2021 por clonex / Ivan Hudec
Ejemplo - Trade Edge Ratio
Contenido de la página
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
¡¡¡muy bueno !!!