Marcel Cardoso:
Estou tentando encerrar um EA quando atingi um valor máximo e mínimo(por exemplo, encerrar se atingir +R$50 ou -R$100). Tentei utilizando o PositionGetDougle(POSITION_PROFIT) porém não está batendo, não sei se está relacionado ao fato de o EA realizar várias operações e alterar várias vezes o médio das operações.
Como posso conseguir realizar essa operação?
Estou tentando encerrar um EA quando atingi um valor máximo e mínimo(por exemplo, encerrar se atingir +R$50 ou -R$100). Tentei utilizando o PositionGetDougle(POSITION_PROFIT) porém não está batendo, não sei se está relacionado ao fato de o EA realizar várias operações e alterar várias vezes o médio das operações.
Como posso conseguir realizar essa operação?
Voce tem um problema conceitual, se voce quer bloquear o EA nesses ganhos/prejuizos. Voce tem que olhar o histórico do periodo, além do valor atual que é o que o PositionGetDouble() se refere. Lembre-se que voce se so fizer o teste por PositionGetDouble() quando a operação encerrar seja por perda ou por ganho, o "bloqueio" sumiria.
Marcel Cardoso:
Estou tentando encerrar um EA quando atingi um valor máximo e mínimo(por exemplo, encerrar se atingir +R$50 ou -R$100). Tentei utilizando o PositionGetDougle(POSITION_PROFIT) porém não está batendo, não sei se está relacionado ao fato de o EA realizar várias operações e alterar várias vezes o médio das operações.
Como posso conseguir realizar essa operação?
Estou tentando encerrar um EA quando atingi um valor máximo e mínimo(por exemplo, encerrar se atingir +R$50 ou -R$100). Tentei utilizando o PositionGetDougle(POSITION_PROFIT) porém não está batendo, não sei se está relacionado ao fato de o EA realizar várias operações e alterar várias vezes o médio das operações.
Como posso conseguir realizar essa operação?
Poderia enviar o código?
Eu consegui assim:
double lucro_realizado = PositionGetDouble(POSITION_PROFIT); double lucro_corrente = Results(dia, MN_estrutura); double lucro_final = NormalizeDouble((lucro_corrente+lucro_realizado), 2); if(lucro_final >= meta) Fechar();
double Results(datetime time_start, ulong MN_EA){ double result = 0.0; ulong ticket; int cnt; if(HistorySelect(time_start, TimeCurrent())){ for(cnt = HistoryDealsTotal() - 1; cnt >= 0; cnt--){ ticket = HistoryDealGetTicket(cnt); if(ticket != 0){ if(HistoryDealGetInteger(ticket, DEAL_MAGIC) == MN_EA){ result += HistoryDealGetDouble(ticket, DEAL_PROFIT); } } else{ Print("Error getting deal ticket in history ..."); result = EMPTY_VALUE; break; } } } else{ Print("Error getting operations history ..."); result = EMPTY_VALUE; } return(result); }
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Como posso conseguir realizar essa operação?