BOA NOITE!!!
CRIEI UM EA,
QUANDO ELE ENTRA NUMA OPERAÇÃO NO CANDLE DE 5 MINUTO E ENCERRAR NESSE MESMO CANDLE O QUAL DEU O SINAL, ELE ACABA ENTRANDO NOVAMENTE NA OPERAÇÃO.
GOSTARIA SE ALGUEM PUDER ME AJUDAR A COLOCAR UM TEMPO APÓS UMA ENTRADA, PARA QUE ISSO NÃO ACONTEÇA.
DESDE JÁ AGRADEÇO, QUEM ME AJUDAR!!
ABS
Talvez usando a função OnTimer você consiga, eu pessoalmente nunca usei mas parece que ela é pra isso.
- www.mql5.com
...
Dando minha contribuição para o assunto...Eu não faria via OnTimer, motivo? vc terá apenas um temporizador, e isso não quer dizer que seja no momento do trade...
Eu usaria a OnTradeTransaction, nela basta capturar a data/hora atual, e multiplicar por um delta de tempo....apos isso feito basta compara a data/hora atual com a variável que recebe esse delta.
Então... se TimeLocal() >= last_execute => se passaram X minutos
//declaração datetime last_execute=0; int delta = 1; // delta in minutes //OnTradeTransaction last_execute=TimeLocal(); //OnTick last_execute+delta*PeriodSeconds(PERIOD_M1)
- www.mql5.com
Dando minha contribuição para o assunto...Eu não faria via OnTimer, motivo? vc terá apenas um temporizador, e isso não quer dizer que seja no momento do trade...
Eu usaria a OnTradeTransaction, nela basta capturar a data/hora atual, e multiplicar por um delta de tempo....apos isso feito basta compara a data/hora atual com a variável que recebe esse delta.
Então... se TimeLocal() >= last_execute => se passaram X minutos
//declaração datetime last_execute=0; int delta = 1; // delta in minutes void OnTradeTransaction() { last_execute=TimeLocal(); } void OnTick() {last_execute+delta*PeriodSeconds(PERIOD_M1)if(SETUP_COMPRA) { if(PositionsTotal() == 0 && OrdersTotal()==0) { if(trade.Buy(lote, Symbol(), 0, 0, 0, "Compra")) { addTakeStop(stopLoss, takeProfit); } } } }
Boa tarde!!
Obrigado pela dica, no caso eu colocaria a variavel last_execut... aonde eu coloquei ou teria que esta dentro do if do setup de compra??
....
Na OnTradeTrasaction vc tem que capturar eventos de adição de posição, ou seja, o momento que a posição foi registrada no historico...
Ja a utlização de last_execute vai depender do seu objetivo...Pelo que eu entendi vc so quer entrar ou olhar para novos sinais apos X minutos certo? Então teria que estar em um if dentro de ontick validando se o tempo atual já é = ou superior ao valor que vc atribuiu.
Note que quando vc captura a data/hora atual e soma com o delta e multiplica por PeriodSeconds vc esta jogando uma data/hora futura...
imagine:
28/11/2020 16:22:30 + 3 * PeriodSeconds(PERIOD_M1) = 28/11/2020 16:25:30
Na OnTradeTrasaction vc tem que capturar eventos de adição de posição, ou seja, o momento que a posição foi registrada no historico...
Ja a utlização de last_execute vai depender do seu objetivo...Pelo que eu entendi vc so quer entrar ou olhar para novos sinais apos X minutos certo? Então teria que estar em um if dentro de ontick validando se o tempo atual já é = ou superior ao valor que vc atribuiu.
Note que quando vc captura a data/hora atual e soma com o delta e multiplica por PeriodSeconds vc esta jogando uma data/hora futura...
imagine:
28/11/2020 16:22:30 + 3 * PeriodSeconds(PERIOD_M1) = 28/11/2020 16:25:30
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
BOA NOITE!!!
CRIEI UM EA,
QUANDO ELE ENTRA NUMA OPERAÇÃO NO CANDLE DE 5 MINUTO E ENCERRAR NESSE MESMO CANDLE O QUAL DEU O SINAL, ELE ACABA ENTRANDO NOVAMENTE NA OPERAÇÃO.
GOSTARIA SE ALGUEM PUDER ME AJUDAR A COLOCAR UM TEMPO APÓS UMA ENTRADA, PARA QUE ISSO NÃO ACONTEÇA.
DESDE JÁ AGRADEÇO, QUEM ME AJUDAR!!
ABS