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

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum


angevoyageur , 2014.02.11 17:59

Merhaba,

Lütfen kod gönderirken SRC butonunu kullanın. Teşekkür ederim.


Bu sefer sizin için düzenledim.


 
jitanic :

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)


Böyle bir notasyonu ne kullanıyorsunuz, anlamak zor:

   request.action= 5 ;
   request.type= 6 ;
   request.type_filling= 2 ;

bunun yerine bunu kullanarak:

   request.action= TRADE_ACTION_PENDING ;
   request.type= ORDER_TYPE_BUY_STOP_LIMIT ;
   request.type_filling= ORDER_FILLING_RETURN ;  

Bu arada, her iki durumda da benim için çalışıyor.


 

Üzgünüm

lütfen bu betiği kontrol edin ve bana yanlışımı verin:

 

 #property description "Expert Advisor for sending trade requests "
" using OrderSendAsync() function.\r\n"
#property description "Handling trading events using"
" OnTrade() and OnTradeTransaction() handler functions is displayed\r\n"
#property description "Expert Advisor parameters allow setting Magic Number"
" (unique ID) "
#property description "and the mode of displaying messages in Experts log. All details are displayed by default.\r\n"
input int   MagicNumber= 1234567 ;       // Expert Advisor ID
input bool DescriptionModeFull= true ; // Detailed output mode
input double   Price= 2652 ;
input double   Volume= 1000 ;
input double   stoplimit= 2681 ;
input double   sl= 1000 ;
input double   tp= 2681 ;
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- check if autotrading is allowed
   if (! TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ))
     {
       Alert ( "Autotrading in the terminal is disabled, Expert Advisor will be removed." );
       ExpertRemove ();
       //--     return(-1);
     }
   CreateBuySellButtons();
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   ObjectDelete ( 0 , "Buy" );
   ObjectDelete ( 0 , "Sell" );
   ObjectDelete ( 0 , "HALL" );
  }
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {

  }
//+------------------------------------------------------------------+
void OnTrade ()
  {

  }
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//--- handling CHARTEVENT_CLICK event ("Clicking the chart")
   if (id== CHARTEVENT_OBJECT_CLICK )
     {
       //--- if "Buy" button is pressed, then buy
       if (sparam== "Buy" )
        {
         BuyA(Volume);
         //--- unpress the button
         ObjectSetInteger ( 0 , "Buy" , OBJPROP_STATE , false );
        }
       //--- if "Sell" button is pressed, then sell
       if (sparam== "Sell" )
        {
         SellA(Volume);
         //--- unpress the button
         ObjectSetInteger ( 0 , "Sell" , OBJPROP_STATE , false );
        }
       ChartRedraw ();
     }
  }
//+------------------------------------------------------------------+
void CreateBuySellButtons()
  {
   ObjectCreate ( 0 , "Buy" , OBJ_BUTTON , 0 , 0 , 0 ); // create "Buy" button
   ObjectSetInteger ( 0 , "Buy" , OBJPROP_CORNER , CORNER_RIGHT_UPPER );
   ObjectSetInteger ( 0 , "Buy" , OBJPROP_XDISTANCE , 100 );
   ObjectSetInteger ( 0 , "Buy" , OBJPROP_YDISTANCE , 50 );
   ObjectSetInteger ( 0 , "Buy" , OBJPROP_XSIZE , 70 );
   ObjectSetInteger ( 0 , "Buy" , OBJPROP_YSIZE , 30 );
   ObjectSetString ( 0 , "Buy" , OBJPROP_TEXT , "Buy" );
   ObjectSetInteger ( 0 , "Buy" , OBJPROP_COLOR , clrRed );
   ObjectCreate ( 0 , "Sell" , OBJ_BUTTON , 0 , 0 , 0 ); // create "Sell" button
   ObjectSetInteger ( 0 , "Sell" , OBJPROP_CORNER , CORNER_RIGHT_UPPER );
   ObjectSetInteger ( 0 , "Sell" , OBJPROP_XDISTANCE , 100 );
   ObjectSetInteger ( 0 , "Sell" , OBJPROP_YDISTANCE , 100 );
   ObjectSetInteger ( 0 , "Sell" , OBJPROP_XSIZE , 70 );
   ObjectSetInteger ( 0 , "Sell" , OBJPROP_YSIZE , 30 );
   ObjectSetString ( 0 , "Sell" , OBJPROP_TEXT , "Sell" );
   ObjectSetInteger ( 0 , "Sell" , OBJPROP_COLOR , clrBlue );
   ObjectCreate ( 0 , "HALL" , OBJ_LABEL , 0 , 0 , 0 ); // create LABEL
   ObjectSetInteger ( 0 , "HALL" , OBJPROP_CORNER , CORNER_RIGHT_UPPER );
   ObjectSetInteger ( 0 , "HALL" , OBJPROP_XDISTANCE , 100 );
   ObjectSetInteger ( 0 , "HALL" , OBJPROP_YDISTANCE , 150 );
   ObjectSetInteger ( 0 , "HALL" , OBJPROP_XSIZE , 70 );
   ObjectSetInteger ( 0 , "HALL" , OBJPROP_YSIZE , 30 );
   ObjectSetString ( 0 , "HALL" , OBJPROP_TEXT , _Symbol );
   ObjectSetInteger ( 0 , "HALL" , OBJPROP_COLOR , clrBlue );
   ChartRedraw ();
  }
//+------------------------------------------------------------------+
void BuyA( double volume)
  {
//--- prepare the request
   MqlTradeRequest request;
   MqlTradeResult   result;
   MqlTradeCheckResult check;
   ZeroMemory (request);
   ZeroMemory (result);
   ZeroMemory (check);
   request.action= TRADE_ACTION_PENDING ;
   request.symbol= _Symbol ;
   request.volume= 1000.00 ;
  request.price= 2652.000 ;
   request.stoplimit= 2652.000 ;
   request.sl= 0 ;
   request.tp= 0 ;
request.type= ORDER_TYPE_BUY_STOP_LIMIT ;
request.type_filling= ORDER_FILLING_RETURN ; 
   request.type_time= 0 ;
   request.expiration= 0 ;
  request.magic= 0 ;
request.comment= "" ;
   if (! OrderSend (request,result))
     {
       Print ( __FUNCTION__ , ": error " , GetLastError (), ", retcode = " ,result.retcode);
     }
//---
  }
//+------------------------------------------------------------------+
void SellA( double volume)
  {
//--- prepare the request
   MqlTradeRequest request;
   request.action= TRADE_ACTION_DEAL ;
   request.symbol= _Symbol ;
   request.magic= 0 ;
   request.volume=Volume;
   request.type= ORDER_TYPE_SELL ;
   request.price= SymbolInfoDouble (request.symbol, SYMBOL_BID );
   request.deviation= 10 ;
   request.comment= "Sell using OrderSendAsync()" ;
   MqlTradeResult   result;
   if (! OrderSendAsync (request,result))
     {
       Print ( __FUNCTION__ , ": error " , GetLastError (), ", retcode = " ,result.retcode);
     }
  }
//+------------------------------------------------------------------+
 
jitanic :

Üzgünüm

lütfen bu betiği kontrol edin ve bana yanlışımı verin:

 

Benim için çalışıyor. Test etmek için TadbirTrader-Server'ı kullandım.
 
angevoyageur :
Benim için çalışıyor. Test etmek için TadbirTrader-Server'ı kullandım.
gerçek bir hesabınız var mı veya demo hesabınız var mı ?!!
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Environment State / Account Properties - Reference on algorithmic/automated trading language for MetaTrader 5
 
jitanic :
gerçek bir hesabınız var mı veya demo hesabınız var mı ?!!

Sadece demo hesap.

Not: Üzgünüm, sizin için de demo hesap üzerinde çalıştığı noktayı kaçırdım.

Gerçek hesabınızda hangi değer döndürülür:

   printf ( "expiration=%i" , SymbolInfoInteger ( _Symbol , SYMBOL_EXPIRATION_MODE ));
   printf ( "filling=%i" , SymbolInfoInteger ( _Symbol , SYMBOL_FILLING_MODE ));
 

benim için demoda çalışıyor,

sunucudan kısıtlanmış olabilir mi?

 
jitanic :

benim için demoda çalışıyor,

sunucudan kısıtlanmış olabilir mi?

Belli ki bu bekleyen siparişi vermenizi kısıtlayan bir şey var. Gerçek hesapta bu sembol için muhtemelen bazı farklı ayarlar vardır (önceki gönderime bakın).

Hata 10006: istek reddedildi, çok kullanışlı bir mesaj değil. Bu siparişi vermeyi kaç kez denediniz?

Mevcut Teklif/Sor/Son demo hesapta 2638/2652/2640, gerçek hesapta aynı mı?

 
angevoyageur :

Belli ki bu bekleyen siparişi vermenizi kısıtlayan bir şey var. Gerçek hesapta bu sembol için muhtemelen bazı farklı ayarlar vardır (önceki gönderime bakın).

Hata 10006: istek reddedildi, çok kullanışlı bir mesaj değil. Bu siparişi vermeyi kaç kez denediniz?

Mevcut Teklif/Sor/Son demo hesapta 2638/2652/2640, gerçek hesapta aynı mı?

merhaba cevap için teşekkürler

sembol özelliklerinin resmini ekliyorum

eğer yardımcı olmazsa, dedi ki: kodumda baskı emri nereye eklenir?

Dosyalar:
Untitled.png  47 kb
 
jitanic :

merhaba cevap için teşekkürler

sembol özelliklerinin resmini ekliyorum

eğer yardımcı olmazsa, dedi ki: kodumda baskı emri nereye eklenir?

Neden işe yaramadığını göremiyorum.

Şimdi tekrar deneyebilir misin? Hala çalışmıyor mu?