Resposta

Ajuda com a definição de Shift

4 respostas

eawNewbie

Cliente, bbp_participante, comunidade, 11 respostas.

Perfil da visita

9 anos atrás #113451

Também não entendo muito bem o que você quer alcançar, mas você pode usar o parâmetro Shift.

 

Shift = 0 significa o valor na barra atual, Shift = 1 significa o valor do indicador na barra anterior e assim por diante.

Shift = 9 significa o valor do indicador 9ª barra para trás.

Citei isso em outro tópico. O tópico não era aplicável ao meu problema, mas esta postagem é, portanto, espero que não haja problema em citá-la

 

 

Entendo que shift = 0 significa a barra atual (por exemplo, barra em andamento), o que não está claro é "valor na barra atual"?

 

A última afirmação "Shift = 0 significa valor na barra atual" significa o preço/valor no momento exato do evento durante o período de tempo da barra atual?

 

Desde então, tenho procurado uma definição completa de deslocamento, tanto aqui quanto na MQL5

 

 

Deparei-me com esse problema ao tentar abrir uma posição depois que a barra atual é pelo menos 3 pips mais alta do que a alta da barra anterior.

 

Entretanto, esse código funcionará como desejado?

 

//Var

Deslocamento=3

 

//regra

E (High[0] > (High[1] + ConvertToRealPips(Offset))

 

 

obrigado

0

eawNewbie

Cliente, bbp_participante, comunidade, 11 respostas.

Perfil da visita

9 anos atrás #129243

Como não consegui fazer com que a regra de condição acima funcionasse, decidi removê-la e, em vez disso, aplicar uma ordem "enter at stop" usando este código

 

      // Ação
      sqOpenOrder("NULL", OP_BUYSTOP, getOrderSize(MagicLong, OP_BUYSTOP ), getOrderPrice(MagicLong), "", MagicLong, "OffsetBuy");
 

 

Infelizmente, isso também falha, então estou fazendo algo errado... ?

0

Marca Fric

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

9 anos atrás #129245

Sim, ao usar Shift = 0 em High, Low ou indicadores, você obterá seus valores no momento especificado quando a função foi chamada.

 

Quando eu testar sua condição

E (High[0] > (High[1] + ConvertToRealPips(Offset))

 

ele funciona corretamente, o que não funciona para você? Ele abre em horários diferentes do esperado?

 

Ou ele não abre negociações de forma alguma? Em seguida, verifique o registro de erros para ver se não há nenhum erro; erros de tamanho de negociação são bastante comuns.

Marcar
EstratégiaQuant arquiteto

0

eawNewbie

Cliente, bbp_participante, comunidade, 11 respostas.

Perfil da visita

9 anos atrás #129287

Obrigado por sua confirmação sobre o Shift.

 

Quando uso a regra acima, a condição não parece ser atendida, pois todas as ações após o "then" não são analisadas. Não consigo encontrar nenhuma pista sobre o motivo ao ler os registros, mesmo com verbose = 2, como se não houvesse erro, apenas a condição não retorna verdadeiro.

 

Removi a condição e as negociações são abertas como esperado. A condição filtra todas as oportunidades durante o período de backtesting; terei de verificar se a condição realmente existe no período de teste. Sem a condição, obtenho literalmente centenas de negociações, mas com a condição resulta em zero negociações.

 

Se você disser que não há problema com a estrutura da condição, verificarei manualmente se a condição realmente existe. Talvez eu tente alterar "é maior que" para "é menor que"

 

O que é mais rápido: verificar a condição na instrução If ou verificar a condição alterando o comando open at market para open at stop e executar o teste se o stop for atingido na instrução "then"? Descobri que, ao adicionar o comando dentro da construção "then", a ação não é executada, mas a próxima ação é executada.

0

eawNewbie

Cliente, bbp_participante, comunidade, 11 respostas.

Perfil da visita

9 anos atrás #129288

Ok, tentei novamente e a condição está funcionando

 

Não tenho certeza do que aconteceu 

obrigado

0

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