Rôbo não encerrando posições no Stop Loss e no Take profit definidos

Para adicionar comentários, por favor Faça o login ou registrar
Vinicius Lehmann
35
Vinicius Lehmann  

Bom dia pessoal,


Sou iniciante no desenvolvimento de robôs e provavelmente minha dúvida seja iniciante.

Estou programando este robô mas ele não sai das operações. Ele consegue entrar mas não consegue stopar nem no GAIN nem no LOSS.


Poderiam me ajudar?

bool Buy()
{
   MqlTradeRequest request;
   MqlTradeResult result;
   MqlTradeCheckResult checkResult;
   
   ZeroMemory(request);
   ZeroMemory(result);
   ZeroMemory(checkResult);
   
   request.action=TRADE_ACTION_DEAL;
   request.type=ORDER_TYPE_BUY;
   request.symbol=_Symbol;
   request.volume=lote;
   request.magic=EA_Magic;
   request.deviation=2.0;
   request.type_filling=ORDER_FILLING_RETURN;
   request.price=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK), 2);
   request.sl=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK) - 2.0, 2);
   request.tp=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK) + TP, 2);
   
   
   if(!OrderCheck(request, checkResult))
   {
      Print("Erro na checagem da ordem: ", GetLastError());
      Print("Código de erro: ", checkResult.retcode);
      return false;
   }
   
   
   Print("Saldo: ", ACCOUNT_BALANCE);
   Print("Saldo após operação: ", checkResult.balance);
   
   if(!OrderSend(request, result))
   {
      Print("Erro no envio da ordem: ", GetLastError());
      Print("Código de retorno do erro: ", result.retcode);
      return false;
   }
   
   return true;  
   
   
}
Joscelino
909
Joscelino  
Vlehmann:

Bom dia pessoal,


Sou iniciante no desenvolvimento de robôs e provavelmente minha dúvida seja iniciante.

Estou programando este robô mas ele não sai das operações. Ele consegue entrar mas não consegue stopar nem no GAIN nem no LOSS.


Poderiam me ajudar?

Você testou o que escreveu com um "Print", por exemplo?

Para que utilizar o NormalizeDouble??

O TP você declarou em algum lugar, o SL não. Nao seria boa pratica utilizar o mesmo padrão: se declarar um, declara o outro?

Você acompanhou a aba diário? O que diz la?

Outro alerta: Você apenas captura o código de erro e não faz tratamento. Precisa tratar os erros!! Que erro retornou no envio das ordens SL e TP?

Vinicius Lehmann
35
Vinicius Lehmann  
Joscelino Celso de Oliveira:

Você testou o que escreveu com um "Print", por exemplo?

Para que utilizar o NormalizeDouble??

O TP você declarou em algum lugar, o SL não. Nao seria boa pratica utilizar o mesmo padrão: se declarar um, declara o outro?

Você acompanhou a aba diário? O que diz la?

Outro alerta: Você apenas captura o código de erro e não faz tratamento. Precisa tratar os erros!! Que erro retornou no envio das ordens SL e TP?

Boa tarde Joscelino,

Obrigado pelo feedback.

Esse código é só pela aprendizagem mesmo. Eu testei o mesmo código com ativo de FOREX e funcionou. Não sei porque nos ativos da BOVESPA não funcionou.

Para adicionar comentários, por favor Faça o login ou registrar