Resposta

SL e PT com atr para MultiCharts

2 respostas

Eastpeace

Cliente, bbp_participant, community, sq-ultimate, 305 respostas.

Perfil da visita

4 anos atrás #254805

Olá, Mark,

Embora esse problema tenha sido encerrado com status fixo. Gostaria de discutir novamente o SL e o PT com o ATR para Multicharts.

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

O código do MC está assim agora.

———-
if(MarketPosition > 0) then begin
LongSLPlaced = false;
If BarsSinceEntry = 0 then begin
IntLongSL = 0;
IntLongTS = 0;
fim;
// StopLoss
IntLongSL = Round2Fraction(EntryPrice - (StopLossCoef * SQ_ATR(20)[1]));
IntLongSL = SQ_CorrectMinMaxSLPT(IntLongSL, MinimumSL, MaximumSL, true);
….
————-

No código atual, como o valor ATR será alterado a cada barra após a entrada. SL, PT e RR Ratio também serão alterados, embora essa alteração não seja muito grande. Mas ela também é prejudicial.

Supondo que ele mantenha uma posição comprada, se a volatilidade diminuir e o mercado cair lentamente, o stop loss será ampliado.

 

A maioria das estratégias no MC é executada por barra e atualiza os sinais e as ações depois que a barra é fechada. Portanto, quando a ordem de entrada de parada é acionada, ela usa o valor ATR anterior (barra de sinal), não o da barra atual (barra de entrada).

Portanto, isso não é um problema para a caculação do MM. Ele pode e deve usar o valor ATR fixo. No código do Mc, é assim,

if(MarketPosition > 0) then begin
LongSLPlaced = false;
If BarsSinceEntry = 0 then begin
IntLongSL = entryprice - AtrSLmulti * ATRvalue[1] ;
IntLongPT = entryprice + AtrPTmulti * ATRvalue[1] ;
fim;

 

Isso será totalmente consistente com o valor ATR usado pelo cálculo da MM quando a condição de entrada for verdadeira.
Isso não tem nada a ver com variáveis globais. Funciona bem no MC. E descobri que o código gerado por outro software também define o SL no bloco de código if (BarsSinceEntry = 0)

 

Por favor, reconsidere essa abordagem, obrigado.

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

4 anos atrás #254893

Olá,

Atualmente, tem que ser assim. Isso significa que o SL precisa ser modificado de acordo com o valor do ATR. No futuro, poderíamos modificar isso, mas agora, em relação à forma como o TS funciona, preferimos mantê-lo operando dessa maneira

0

Eastpeace

Cliente, bbp_participant, community, sq-ultimate, 305 respostas.

Perfil da visita

4 anos atrás #254939

Outro motivo para a necessidade de ajustar a implementação do stop loss e do lucro iniciais.

A estratégia usa níveis de indicadores como stop loss. O stop loss inicial se tornaria um trailing stop loss ou a condição do indicador para a saída.

Isso enfraquecerá o efeito das regras de saída (condição dos indicadores para saída) ou do método de trailing stop, ou causará confusão lógica.

 

//--------
// Ordens de saída (SL, PT, Trailing) para a regra: Entrada longa
//--------
if(MarketPosition > 0) then begin
LongSLPlaced = false;
If BarsSinceEntry = 0 then begin
IntLongSL = 0;
IntLongTS = 0;
fim;
// StopLoss
IntLongSL = Round2Fraction(SQ_EMA(High, EMAPeriod2)[3]);
IntLongSL = SQ_CorrectMinMaxSLPT(IntLongSL, MinimumSL, MaximumSL, true);
Venda("LongSL") na próxima barra no stop IntLongSL;
LongSLPlaced = true;

...

 

Conforme mostrado na figura, se o stop loss inicial for executado na lógica correta, o stop loss intermediário não deverá ocorrer.

 

Quando modifico os códigos no MC. A estratégia é executada de forma lógica. O módulo de trailing stop desempenhará o papel que deve desempenhar.

 

if(MarketPosition > 0) then begin

LongSLPlaced = false;

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

IntLongTS = 0;
fim;

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

Venda("LongSL") na próxima barra no stop IntLongSL;
LongSLPlaced = true;

 

 

Anexos:
Você deve ser logado para ver os arquivos anexos.

0

Visualizando 2 respostas - 1 até 2 (de um total de 2)