Üç ay önce yazdığım EA şimdi strateji testini geçemiyor, ancak iki veya üç ay önce iyi çalışıyordu!! - sayfa 2

 
angevoyageur :
Kodunuzu gösterin, bu satırı nereye ekleyeceğinizi size söyleyebilelim.

Bonsoir Angevoyageur,

İşte kodum. İki kısım onTick bölümünde ayrılmıştır.

Teşekkür ederim

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 ;
        }
     }
 
Bu sayfada hatanın HESAP bölümünde olduğunu görebiliyorum. Başka bir MT5 ve farklı hesapla denedim ama aynı mesaja sahibim.
 
Vivaldi :

Bonsoir Angevoyageur,

İşte kodum. İki kısım onTick bölümünde ayrılmıştır.

Teşekkür ederim

Vivaldie


  • Bir hatanız olduğunda mresult.retcode'un değeri nedir?
  • STP, TKP'nin değerleri nedir?
  • OrderSend bir bool döndürdü, döndürülen değeri de kontrol etmeniz gerekiyor.
  • İki parça arasında sahip olduklarınızı bilmediğim için ZeroMemory(mrequest) öğesini "mrequest.action=TRADE_ACTION_DEAL"den hemen önce yerleştirmek daha iyidir.
 

Günlükte mesaj görmedim ve sorunun stoploss'tan geldiğini söylüyor.

0 değeriyle harika çalışıyor :)

 
Vivaldi :

Günlükte mesaj görmedim ve sorunun stop loss'tan geldiğini söylüyor.

0 değeriyle harika çalışıyor :)

Stop seviyeniz (SL ve TP) için işlem yaptığınız sembolün STOP_LEVELS değerini hesaba katmanız gerekir. Bu konuya bakın.
 
angevoyageur :
  • Bir hatanız olduğunda mresult.retcode'un değeri nedir?
  • STP, TKP'nin değerleri nedir?
  • OrderSend bir bool döndürdü, döndürülen değeri de kontrol etmeniz gerekiyor.
  • İki parça arasında sahip olduklarınızı bilmediğim için ZeroMemory(mrequest) öğesini "mrequest.action=TRADE_ACTION_DEAL"den hemen önce yerleştirmek daha iyidir.


Ange şimdi çalıştırıyorum :) sorun STP değişkeninden geldi.

Bay'i memnun etmek için bildirimi double türüyle ( int yerine) değiştirmeniz gerekir. Normalize Double.

teşekkürler

 double STP, TKP;
 

Yanıldım ve değişken bildirimini değiştirmek hata mesajını çözmedi. Problem STP ve TKP değişkeninin 0 olan sl = tp yapmasından kaynaklanmaktadır.

 

ekleme zorunluluğu var mı

 ZeroMemory (request);

975 (x86) yapısında bir hata mı var?

Geçenlerde bir strateji testi sırasında 4756 hatasıyla karşılaştım ve yukarıdaki satırı ekleyerek düzelttim.

 
k.doras :

ekleme zorunluluğu var mı

975 (x86) yapısında bir hata mı var?

Geçenlerde bir strateji testi sırasında 4756 hatasıyla karşılaştım ve yukarıdaki satırı ekleyerek düzelttim.

Bu satırlar zorunludur (veya istek yapısının eşdeğer başlatılması).
 

merhaba

demo hesapta sipariş çalışması gönder ama gerçek hesapta çalışmıyor (2014.11.30 18:21:00.062 55 (اخابر,D1) BuyA: hata 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