Hatalar, hatalar, sorular - sayfa 818

 
sion :

Bir siparişin verilip verilmediğini belirlemek için OnTradeTransaction kullanan var mı?

Strateji test edicide, 3 tik içinde bir işlem ve 2 emir gönderirken, son gönderilen emire sadece 1 TRADE_TRANSACTION_REQUEST gelir.

Test kullanıcısı günlüklerine veya aracı günlüklerine mi bakıyorsunuz? Servis Masasına yazıp detayları verebilir misiniz ?
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Rosh :
Test kullanıcısı günlüklerine veya aracı günlüklerine mi bakıyorsunuz? Servis Masasına yazıp detayları verebilir misiniz ?

Aracıdaki günlüklere baktım ve orada bile günlüğün çok büyük bir parçası yazdırılmalı. Yaklaşık bir kod yazdım, servis masasıyla uğraşamayacak kadar tembelim. 2011.10.10'dan beri roboforex'te çalıştırıyorum, burada üç TRADE_TRANSACTION_REQUEST'den biri, üçte iki meta alıntıda görünüyor. Görünüşe göre kenelerin oluşma sıklığına bağlıdır.

2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 başladı

Dosyalar:
test5.mq5  8 kb
 
sion :

Aracıdaki günlüklere baktım ve orada bile günlüğün çok büyük bir parçası yazdırılmalı. Yaklaşık bir kod yazdım, servis masasıyla uğraşamayacak kadar tembelim. 2011.10.10'dan beri RoboForex'te çalıştırıyorum, burada üç TRADE_TRANSACTION_REQUEST'den biri ve Metaquote'ta üçten ikisi görünüyor. Görünüşe göre kenelerin oluşma sıklığına bağlıdır.

2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 başladı

OnTradeTransaction hiçbir şekilde kenelere bağlı değildir, bir ticari olay işleyicisidir.

Ve kendi kuyruğunu, ticaret olaylarının kuyruğunu işler.

 
Urain :

OnTradeTransaction hiçbir şekilde kenelere bağlı değildir, bir ticari olay işleyicisidir.

Ve kendi kuyruğunu, ticaret olaylarının kuyruğunu işler.

Bu örnekte, sipariş verme hızı tiklere bağlıdır, her tik için yeni bir sipariş verilir.

İlginç bir şekilde, TRADE_TRANSACTION_REQUEST'in olmaması geliştiriciler tarafından tekrarlandı veya hizmet masası olmadan mümkün değil (

 
sion :

Bu örnekte, sipariş verme hızı tiklere bağlıdır, her tike yeni bir sipariş verilir.

İlginç bir şekilde, TRADE_TRANSACTION_REQUEST'in olmaması geliştiriciler tarafından tekrarlandı veya hizmet masası olmadan mümkün değil (

Muhtemelen SD olmadan, nasıl olursa olsun, işlev yenidir ve hatalar mümkündür. Ayrıntılı olarak anlamanız gerekir.

ZY Burada bu işlevin uygulanması hakkında bir makale hazırlıyorum, ancak böyle bir durum benim için ortaya çıkmadı.

ZZY gerçekten yalnızca Alpari ve MQ sunucularında kontrol edildi,

Sunucunun doğru adını verin, kontrol etmeye çalışacağım.

 
Urain :

Muhtemelen SD olmadan, nasıl olursa olsun, işlev yenidir ve hatalar mümkündür. Ayrıntılı olarak anlamanız gerekir.

ZY Burada bu işlevin uygulanması hakkında bir makale hazırlıyorum, ancak böyle bir durum benim için ortaya çıkmadı.

ZZY gerçekten yalnızca Alpari ve MQ sunucularında kontrol edildi,

Sunucunun doğru adını verin, kontrol etmeye çalışacağım.

RoboForex-MetaTrader 5

MetaQuotes-Demo

EURUSD bir para birimidir ancak yukarıdaki loglarda belirtilmiştir.

Yukarıda ekli dosyada, lansman 10'unda yapıldı, bu yüzden testin başlangıcını 2011.10.10'a ayarladım. Şu anda tekrar kontrol ettim, roboforex kararlında sadece son 1 TRADE_TRANSACTION_REQUES geliyor.

 
sion :

RoboForex-MetaTrader 5

MetaQuotes-Demo

EURUSD bir para birimidir ancak yukarıdaki loglarda belirtilmiştir.

Yukarıda ekli dosyada, lansman 10'unda yapıldı, bu yüzden testin başlangıcını 2011.10.10'a ayarladım. Şu anda tekrar kontrol ettim, roboforex kararlında sadece son 1 TRADE_TRANSACTION_REQUES geliyor.

Hata yeniden üretilemez.

Hem MQ'da hem de RoboForex'te, gerçek zamanlı olarak ve test cihazında, tüm TRADE_TRANSACTION_REQUEST normal olarak alınır.

Sistem x86, şimdi x64'te kontrol edemiyorum.

 

2 günlük karşılaştırıldığında, OnTradeTransaction'ın yeni bir siparişin ortaya çıkmasından önce çalışacak zamanı yoksa, TRADE_TRANSACTION_REQUEST'in düştüğü görülebilir.

İşte 1/3

GM 0 Trade 03:35:28 2011.10.10 02:00:00 instant sell 1.00 EURUSD at 1.3385 (1.3385 / 1.3387 / 1.3385)
OL 0 Trades 03:35:28 2011.10.10 02:00:00 deal #2 sell 1.00 EURUSD at 1.3385 done (based on order #2)
JQ 0 Trade 03:35:28 2011.10.10 02:00:00 deal performed [#2 sell 1.00 EURUSD at 1.3385]
RJ 0 Trade 03:35:28 2011.10.10 02:00:00 order performed sell 1.00 at 1.3385 [#2 sell 1.00 EURUSD at 1.3385]       <== 1
MH 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_DEAL Установлен 1 ордер
HE 0 Trade 03:35:28 2011.10.10 02:00:00 buy limit 1.50 EURUSD at 1.3234 (1.3384 / 1.3386 / 1.3384)                    <== 2
MP 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_PENDING Установлен 2 ордер
QN 0 Trade 03:35:28 2011.10.10 02:00:00 buy limit 1.50 EURUSD at 1.3285 (1.3385 / 1.3387 / 1.3385)                    <== 3
MM 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_PENDING Установлен 2 ордер
HI 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==6----- n=0
GE 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
GD 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==2----- n=1
CF 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
MF 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==3----- n=2
OS 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
OQ 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=3
KL 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
JL 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=4
GN 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
EO 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=5
CK 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
PI 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=6
OD 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
LG 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==10----- n=7
OJ 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 EnumToString(type)=TRADE_TRANSACTION_REQUEST
QN 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ------------trans===
TRADE_TRANSACTION_REQUEST

burada 2/3

CL 0 İşlem 03:36:07 2011.10.10 02:00:00 anında satış 1.00 EURUSD 1.33989'dan (1.33989 / 1.34003 / 1.33989)
NP 0 İşlemler 03:36:07 2011.10.10 02:00:00 anlaşma #2 1.00 EURUSD 1.33989'dan satıldı (2. sıraya göre)
QR 0 İşlem 03:36:07 2011.10.10 02:00:00 anlaşma yapıldı [#2 1.33989'dan 1.00 EURUSD satmak]
DJ 0 İşlem 03:36:07 2011.10.10 02:00:00 emir gerçekleştirildi satış 1.00 1.33989'dan [#2 1.33989'dan 1.00 EURUSD sat] <== 1
RK 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 TRADE_ACTION_DEAL 1 sipariş verildi
QE 0 İşlem 03:36:07 2011.10.10 02:00:00 alım limiti 1.50 EURUSD 1.32490'da (1.33990 / 1.34004 / 1.33990) <== 2
LS 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 TRADE_ACTION_PENDING 2. sipariş verildi
GP 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 //////////////////// trans.type==6-- ---n=0
JM 0 testi5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ******************************* ******************************************************* **
DM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 //////////////////// trans.type==2-- ---n=1
JH 0 testi5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ******************************* ******************************************************* **
FJ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 //////////////////// trans.type==3-- ---n=2
JG 0 testi5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ******************************* ******************************************************* **
DG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 /////////////////// trans.type==0-- - --n=3
JR 0 testi5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ******************************* ******************************************************* **
ID 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 //////////////////// trans.type==0-- ---n=4
JQ 0 testi5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ******************************* ******************************************************* **
IR 0 testi5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 //////////////////// trans.type==10-- ---n=5
RP 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 EnumToString(type)=TİCARET_TRANSACTION_REQUEST
RG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ------------trans===
TRADE_TRANSACTION_REQUEST
...
FD 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ******************************* ******************************************************* **
OG 0 İşlem 03:36:07 2011.10.10 02:00:01 alış limiti 1.50 EURUSD 1.32992'den (1.33992 / 1.34006 / 1.33992) <== 3
QQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 TRADE_ACTION_PENDING 2. sipariş verildi
RQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ////////////////// trans.type==0-- - -- n=6
OO 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ******************************* ******************************************************* **
RM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 /////////////////// trans.type==10-- - --n=7
CF 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 EnumToString(type)=TİCARET_TRANSACTION_REQUEST
CJ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ------------trans===
TRADE_TRANSACTION_REQUEST

...

 
Urain :

Hata yeniden üretilemez.

Hem MQ'da hem de RoboForex'te, gerçek zamanlı olarak ve test cihazında, tüm TRADE_TRANSACTION_REQUEST normal olarak alınır.

Sistem x86, şimdi x64'te kontrol edemiyorum.

Eski bir dizüstü bilgisayarda denedim, sırayla çalıştı: siparişleri belirleme - yanıtlama - siparişleri belirleme - yanıtlama - siparişleri belirleme - yanıtlama

1 tik için 2 sipariş gönderilirse çoğaltılması gerektiğini düşünüyorum. OnTradeTransaction'ın o zaman zamanında çalışmak için zamanı olmayacak.

Dosyayı biraz düzenledi.

Dosyalar:
test5.mq5  8 kb
 

Tünaydın.

Zarf satırlarındaki isabetleri saymak için bir blok oluşturdum, her şey doğru sayılıyor gibi görünüyor, ancak günlükte bazı girişler eksik - örneğin, günlükte sayım[Sayı] =3 var   ve sonraki sayı[Sayı] =5. Hesaplamanın doğru olduğu görülebilir, ancak bir nedenden dolayı kayıt defterinde eksiktir. sayım[Sayı] = 4 ile ilgili giriş. Bazen dergide tüm girdiler bulunur. Bunun neden olduğu belli değil mi? Kodda bir hata görürseniz, kodu düzeltebilir misiniz?

Yine de, bazen test cihazını başlatmak "OnTick kritik hatası" hatasını verir, ancak bir dahaki sefere test etmeye başlar. Sorun ne olabilir?

 input string             Symb0 = "EURUSD" ;
input    bool             Trade0 = true ;
int MA_Shift0= 1 ;
input int MA_Per0 = 11 ;
input double      Envelopes_Deviation0     = 0.1 ; 
//+-----------------------------------+
input string             Symb1 = "USDCHF" ;
input    bool             Trade1 = true ;
int MA_Shift1= 1 ;
input int MA_Per1 = 11 ;
input double      Envelopes_Deviation1     = 0.1 ; 

bool MA ( int Number,
         string   Symbol_,           // имя символа
         bool     Trade,
         int      MA_Per,         // период для расчета средней линии
         int      MA_Shift,           // смещение индикатора по горизонтали   
         double   Envelopes_Deviation,           // отклонение границ от средней линии    
         double   &Bid[],
         int &env[],
         int &count[],
         bool &flagenv[],
         bool &flagenv1[]      
        )

  {
   if (!Trade) return ( true );

   static int Size_= 0 ;

   static int Handle[];
   static int Recount[],MinBars[];
   double ma[];
   double Env_Up[ 2 ];  
double Env_Dn[ 2 ];   
 double   norm_Env_Dn;
 double   norm_Env_Up;

 
     if (Number+ 1 >Size_) 
     {
      Size_=Number+ 1 ; 

       ArrayResize (Handle,Size_);
       ArrayResize (Recount,Size_);
       ArrayResize (MinBars,Size_);

      MinBars[Number]= 3 *MA_Per;

       ArraySetAsSeries (Env_Dn, true );

      Handle[Number]= iEnvelopes (Symbol_, 0 ,MA_Per,MA_Shift, MODE_SMA , PRICE_CLOSE ,Envelopes_Deviation); 
         
     }

   if ( Bars (Symbol_, 0 )<MinBars[Number]) return ( true );

       if ( CopyBuffer (Handle[Number], LOWER_LINE , 0 , 2 ,Env_Dn)< 0 || CopyBuffer (Handle[Number], UPPER_LINE , 0 , 2 ,Env_Up)< 0 )
        {
         Recount[Number]= true ; 

         return ( false );  
        }
      
     
   int Digits_= int ( SymbolInfoInteger (Symbol_, SYMBOL_DIGITS )+ 1 );
  norm_Env_Dn = NormalizeDouble (Env_Dn[ 0 ], Digits_);
  norm_Env_Up = NormalizeDouble (Env_Up[ 0 ], Digits_);   
     
 Bid[Number]= SymbolInfoDouble (Symbol_, SYMBOL_BID ); 
    
if (Bid[Number] < norm_Env_Dn && !flagenv1[Number]) env[Number] += 1 ;
if (Bid[Number] > norm_Env_Up && !flagenv[Number]) env[Number] += 2 ;      
if (env[Number]<= 2 )env[Number] *= 10 ;

if (env[Number]== 20 )flagenv[Number] = true ;
if (env[Number]== 10 )flagenv1[Number] = true ;

if (env[Number]== 3 || env[Number]== 12 || env[Number]== 21 || env[Number]> 21 ) 
{
env[Number]= 0 ;
flagenv[Number] = false ;
flagenv1[Number] = false ;
count[Number]++;

Print ( "+++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@ count---------= " , count[Number], "      Number= " ,Number);
}
  
   return ( true );
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   static double Bid[ 2 ];
   static int env[ 2 ],count[ 2 ];
   static bool flagenv[ 2 ],flagenv1[ 2 ]; 
MA( 0 ,Symb0,Trade0,MA_Per0,MA_Shift0,Envelopes_Deviation0,Bid,env,count,flagenv,flagenv1);
MA( 1 ,Symb1,Trade1,MA_Per1,MA_Shift1,Envelopes_Deviation1,Bid,env,count,flagenv,flagenv1);

  }
//+------------------------------------------------------------------+