A EA que escrevi há três meses não pode passar nos testes de estratégia agora, mas funcionava bem há dois ou três meses!! - página 2

 
angevoyageur:
Mostre seu código, para que possamos lhe dizer onde adicionar esta linha.

Bonsoir Angevoyageur,

Aqui está meu código. As duas partes estão separadas na seção onTick.

Obrigado.

Vivaldie


      MqlTick latest_price;      // To be used for getting recent/latest price quotes
      MqlTradeRequest mrequest;  // To be used for sending our trade requests
      MqlTradeResult mresult;    // To be used to get our trade results
      MqlRates mrate[];          // To be used to store the prices, volumes and spread of each bar
      ZeroMemory(mrequest);      // Initialization of mrequest structure
   if(ConditionDICrossMain = -1)
     {
      if(Buy_opened)
        {
         return;    // Don't open a new Buy Position
        }
      mrequest.action = TRADE_ACTION_DEAL;                                  // immediate order execution
      mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // latest ask price
      mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
      mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
      mrequest.symbol = _Symbol;                                            // currency pair
      mrequest.volume = Lot;                                                 // number of lots to trade
      mrequest.magic = EA_Magic;                                             // Order Magic Number
      mrequest.type = ORDER_TYPE_BUY;                                        // Buy Order
      mrequest.type_filling = ORDER_FILLING_FOK;                             // Order execution type
      mrequest.deviation=100;                                                // Deviation from current price
      //--- send order
        
      OrderSend(mrequest,mresult);
      // get the result code
      if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
        {
         Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
        }
      else
        {
         Alert("The Buy order request could not be COMPLETE -error:",GetLastError());
         ResetLastError();           
         return;
        }
     }
 
Nesta página eu posso ver o erro na seção ACCOUNT. Eu tentei com outro MT5 e conta diferente, mas tenho a mesma mensagem.
 
Vivaldi:

Bonsoir Angevoyageur,

Aqui está o meu código. As duas partes estão separadas na seção onTick.

Obrigado.

Vivaldie


  • Qual é o valor do mresult.retcode quando você tem um erro?
  • Qual é o valor de STP, TKP ?
  • OrderSend devolveu um bool, você tem que verificar o valor retornado também.
  • Como não tenho o que você tem entre as duas partes, é melhor colocar ZeroMemory(mrequest) imediatamente antes de "mrequest.action=TRADE_ACTION_DEAL".
 

Não vi mensagens no diário de bordo e diz que o problema veio do stop loss.

Com valor 0, funciona muito bem : )

 
Vivaldi:

Não vi mensagens no diário de bordo e diz que o problema veio do stop loss.

Com valor 0, funciona muito bem : )

Para seus estolhos (SL e TP) você tem que levar em conta o valor STOP_LEVELS para o símbolo que você está comercializando. Veja este tópico.
 
angevoyageur:
  • Qual é o valor do mresult.retcode quando você tem um erro?
  • Quais são os valores de STP, TKP ?
  • OrderSend devolvido um bool, você tem que verificar o valor devolvido também.
  • Como não tenho o que você tem entre as duas partes, é melhor colocar ZeroMemory(mrequest) imediatamente antes de "mrequest.action=TRADE_ACTION_DEAL".


Ange I get it working now :) o problema veio da variável STP.

Necessidade de alterar a declaração com tipo duplo (ao invés de int) para agradar o Sr. NormalizeDouble.

Obrigado

double STP, TKP;
 

Eu errei e alterando a declaração da variável não resolvi a mensagem de erro. O problema vem da variável STP e TKP que são 0 fazendo sl = tp.

 

é a necessidade de acrescentar

ZeroMemory(request);

um bug no build 975 (x86)?

Recentemente encontrei o erro 4756 durante um teste de estratégia e a adição da linha acima o corrigiu.

 
k.doras:

é a necessidade de acrescentar

um bug no build 975 (x86)?

Recentemente encontrei o erro 4756 durante um teste de estratégia e a adição da linha acima o corrigiu.

Esta linha é obrigatória (ou a inicialização equivalente da estrutura de solicitação).
 

oi

enviar pedido trabalho em conta demo mas em conta real não funciona(2014.11.30 18:21:00.062 55 (اخابر,D1) BuyA: erro 4756, retcode = 10006)

{
//--- prepare the request
   MqlTradeRequest request;
   MqlTradeResult  result;
   MqlTradeCheckResult check;
   ZeroMemory(request);
   ZeroMemory(result);
   ZeroMemory(check);
   request.action=5;
   request.symbol=_Symbol;
   request.volume=1000.00;
   request.price=2652.000;
   request.stoplimit=2652.000;
   request.sl=0;
   request.tp=0;
   request.type=6;
   request.type_filling=2;
   request.type_time=0;
   request.expiration=0;
   request.magic=0;
   request.comment="";

   if(!OrderSend(request,result))
     {
      Print(__FUNCTION__,": error ",GetLastError(),", retcode = ",result.retcode);
     }
//---


Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results - Reference on algorithmic/automated trading language for MetaTrader 5