Respuesta

SL y PT con atr para MultiCharts

2 respuestas

eastpeace

Cliente, bbp_participante, comunidad, sq-último, 305 respuestas.

Visitar el perfil

hace 4 años #254805

Hola, Mark,

Aunque este tema se ha cerrado con estado fijo. Quiero volver a discutir el SL y PT con ATR para Multicharts.

https://roadmap.strategyquant.com/tasks/sq4_5100

El código de MC es así ahora.

———-
if(PosiciónMercado > 0) then begin
LongSLPlaced = false;
Si BarsSinceEntry = 0 entonces begin
IntLongSL = 0;
IntLongTS = 0;
fin;
// StopLoss
IntLongSL = Round2Fraction(EntryPrice - (StopLossCoef * SQ_ATR(20)[1]);
IntLongSL = SQ_CorrectMinMaxSLPT(IntLongSL, MinimumSL, MaximumSL, true);
….
————-

En el código actual, ya que el valor de ATR cambiará cada barra después de la entrada. SL, PT y RR Ratio también cambiarán, aunque este cambio no es demasiado grande. Pero también es perjudicial.

Suponiendo que mantenga una posición larga, si la volatilidad disminuye y el mercado baja lentamente, el stop loss se ampliará.

 

La mayoría de las estrategias en MC se ejecutan por barra, actualizando las señales y acciones después de que la barra se cierra. Así que cuando se activa la orden de entrada de parada, utiliza el valor ATR anterior (barra de señal), no el de la barra actual (barra de entrada) .

Por lo que no es un problema para MM caculation. Puede y debe utilizar el valor ATR fijo. En el código de Mc. se ve así,

if(PosiciónMercado > 0) then begin
LongSLPlaced = false;
Si BarsSinceEntry = 0 entonces begin
IntLongSL = precio de entrada - AtrSLmulti * ATRvalue[1] ;
IntLongPT = precio de entrada + AtrPTmulti * ATRvalue[1] ;
fin;

 

Eso será totalmente coherente con el valor ATR utilizado por el cálculo de MM cuando la condición de entrada es verdadera.
Esto no tiene nada que ver con las variables globales. Funciona bien en MC. Y encuentro que el código generado por otro software, también establece el SL en el bloque de código if (BarsSinceEntry = 0)

 

Por favor, reconsidere este enfoque, gracias.

0

tomas262

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 4 años #254893

Hola,

Actualmente tiene que ser así. Es decir, el SL debe modificarse en función del valor del ATR. En el futuro podríamos modificar esto pero ahora con respecto a cómo funciona TS preferimos mantenerlo operando de esta manera

0

eastpeace

Cliente, bbp_participante, comunidad, sq-último, 305 respuestas.

Visitar el perfil

hace 4 años #254939

Otra razón para la necesidad de ajustar la aplicación de la pérdida inicial de la parada y el beneficio.

La estrategia utiliza los niveles del indicador como stop loss. El stop loss inicial se convertiría en un trailing stop loss o en la condición del indicador para la salida.

Esto debilitará el efecto de las reglas de salida (condición de los indicadores para la salida) o el método de trailing stop, o causará confusión lógica.

 

//--------
// Ordena Salidas (SL, PT, Trailing) para Regla: Entrada larga
//--------
if(PosiciónMercado > 0) then begin
LongSLPlaced = false;
Si BarsSinceEntry = 0 entonces begin
IntLongSL = 0;
IntLongTS = 0;
fin;
// StopLoss
IntLongSL = Round2Fraction(SQ_EMA(High, EMAPeriod2)[3]);
IntLongSL = SQ_CorrectMinMaxSLPT(IntLongSL, MinimumSL, MaximumSL, true);
Vender("LongSL") la próxima barra al stop IntLongSL;
LongSLPlaced = true;

...

 

Como se muestra en la figura, si el stop loss inicial se ejecuta en la lógica correcta, el stop loss intermedio no debería producirse.

 

Cuando modifico los códigos en MC. La estrategia se ejecuta lógicamente. El módulo trailing stop jugará el papel que debe jugar.

 

if(PosiciónMercado > 0) then begin

LongSLPlaced = false;

Si BarsSinceEntry = 0 entonces begin
//IntLongSL = 0;
IntLongSL = Round2Fraction(SQ_EMA(High, EMAPeriod2)[3]);
IntLongSL = SQ_CorrectMinMaxSLPT(IntLongSL, MinimumSL, MaximumSL, true);

IntLongTS = 0;
fin;

// StopLoss
//IntLongSL = Round2Fraction(SQ_EMA(High, EMAPeriod2)[3]);
//IntLongSL = SQ_CorrectMinMaxSLPT(IntLongSL, MinimumSL, MaximumSL, true);

Vender("LongSL") la próxima barra en el stop IntLongSL;
LongSLPlaced = true;

 

 

Adjuntos:
Debes acceda a para ver los archivos adjuntos.

0

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)