impedir robô de abrir nova ordem X pips da anterior.

 

Olá, estou precisando de um codigo para impedir que um EA abra ordens antes que o preço esteja acima ou abaixo da ordem anterior em X pips.


tenho um codigo que é de tempo então se eu definir nele 30 minutos, ele só abrira uma nova ordem após 30 minutos da abertura da ordem anterior, neste caso eu gostaria de um sistema igual porem invez de minutos usar  X pips da abertura da ordem anterior.


Ex : 

Distancia da primeira para as demais ordens é 30 PIPS 

Abriu COMPRA no  PREÇO > 1.000 

Sinal de  COMPRA no PREÇO > 1.015  NÂO ABRE ORDEM 

Sinal de  COMPRA no PREÇO > 1.030   ABRE ORDEM 

 

Você poderia atribuir uma variável para guardar o preço da compra e verificar se o módulo da diferença do preço atual é X pips maior do que ela, caso contrário, não faz nada...

Seria algo do tipo:

double ultimoTrade = 0;  //importante definir como zero pois assim você garante que a primeira compra/venda sempre irá ocorrer
double xPips;
//preçoAtual é auto-explicável

...

if(!(MathAbs(ultimoTrade - preçoAtual) >= xPips)) // aqui utilizei o negado da comparação para maior simplicidade
{
        return; //nesse caso, desconsideraria todo o resto do código até a condição deixar de ser alcançada (até o preço atual ser maior do que o último operado)
} 


Se entendi corretamente, seria isso... Utilizei o módulo pois assim garante a mesma lógica tanto para venda quanto para compra, por exemplo:

Compra:
ultimoTrade = 1000
preçoAtual = 1015
xPips = 10
|1000 - 1015| = 15
15 >= 10 .: opera

Venda:
ultimoTrade = 1000
preçoAtual = 985
xPips = 10
|1000 - 985| = 15
15 >= 10 .: opera

Note que utilizando "ultimoTrade" inicial como "0" irá garantir que a diferença seja sempre o preçoAtual na primeira operação...

Espero ter entendido corretamente a pergunta, att

 
Fernando Santos:

Olá, estou precisando de um codigo para impedir que um EA abra ordens antes que o preço esteja acima ou abaixo da ordem anterior em X pips.


tenho um codigo que é de tempo então se eu definir nele 30 minutos, ele só abrira uma nova ordem após 30 minutos da abertura da ordem anterior, neste caso eu gostaria de um sistema igual porem invez de minutos usar  X pips da abertura da ordem anterior.


Ex : 

Distancia da primeira para as demais ordens é 30 PIPS 

Abriu COMPRA no  PREÇO > 1.000 

Sinal de  COMPRA no PREÇO > 1.015  NÂO ABRE ORDEM 

Sinal de  COMPRA no PREÇO > 1.030   ABRE ORDEM 

Se você não sabe MQL5, recomendo fortemente contratar um desenvolvedor...

Aplicativos de negociação para o MetaTrader 5 por encomenda
Aplicativos de negociação para o MetaTrader 5 por encomenda
  • www.mql5.com
Preciso de um robô que opere mini/contratos utilizando cruzamento de 2 médias móveis (opção de tipo), opções de entrada/saída/ambos, opção de comprado/vendido/ambos, opção de reversão/dobra mão, opção para stop móvel, opção para SL/ TP fixo ou variável (baseado em indicador+valor fixo), limite de perda/ganho diário, opção de realização parcial...
 
Yan Haeffner:

Você poderia atribuir uma variável para guardar o preço da compra e verificar se o módulo da diferença do preço atual é X pips maior do que ela, caso contrário, não faz nada...

Seria algo do tipo:


Se entendi corretamente, seria isso... Utilizei o módulo pois assim garante a mesma lógica tanto para venda quanto para compra, por exemplo:

Compra:
ultimoTrade = 1000
preçoAtual = 1015
xPips = 10
|1000 - 1015| = 15
15 >= 10 .: opera

Venda:
ultimoTrade = 1000
preçoAtual = 985
xPips = 10
|1000 - 985| = 15
15 >= 10 .: opera

Note que utilizando "ultimoTrade" inicial como "0" irá garantir que a diferença seja sempre o preçoAtual na primeira operação...

Espero ter entendido corretamente a pergunta, att

Obrigado

Razão: