Hatalar, hatalar, sorular - sayfa 2321

 

Anlıyorum, kendini kontrol edebilirsin ...

Test Cihazında, hangi olay daha önce oluşturulur, bir onay işareti mi yoksa bir zamanlayıcı mı?

Örneğin, Zamanlayıcı 12:00:00.000'de çağrılmalıdır. Ve aynı zamana sahip bir kene var. İlk kim çalışacak, OnTimer veya OnTick?

 
Vladimir Pastushak :
Favorilerimde yüzlerce konu vardı, hepsi temizlendi... Bilgim dışında.

Merhaba!

Lütfen tekrar kontrol edin. En sevdiğiniz konular yerinde.

 
fxsaber :

Anladığım kadarıyla kendini kontrol edebilirsin...

Test Cihazında, hangi olay daha önce oluşturulur, bir onay işareti mi yoksa bir zamanlayıcı mı?

Örneğin, Zamanlayıcı 12:00:00.000'de çağrılmalıdır. Ve aynı zamana sahip bir kene var. İlk kim çalışacak, OnTimer veya OnTick?

Önce zamanlayıcı

 
Slava :

Önce zamanlayıcı

Teşekkürler, iyi çözüm.

 
Pavel Kozlov :

Merhaba!

Lütfen tekrar kontrol edin. En sevdiğiniz konular yerinde.

Teşekkürler, her şey geri döndü.

 

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

Farklı sonuçlar. Nasıl? Niye ya? Neye inanmalı?

Sergey Tabolin , 2018.11.10 12:15

Tam bir baskın yapıyorum. Dosya yazılıyor. Ve her zaman farklı uzunluklarda. Belki TF yüzünden ama TF sonucu hiçbir şekilde etkilememeli! Daha fazla init için hiçbir şey gitmez!

Nasıl niçin? Yoksa bir test hatası mı?


 //+------------------------------------------------------------------+
//|                                               KrL_write_func.mq5 |
//|                                     Copyright 2018, Tabolin S.N. |
//|                           https://www.mql5.com/ru/users/vip.avos |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Tabolin S.N."
#property link        "https://www.mql5.com/ru/users/vip.avos"
#property version    "1.00"
//+------------------------------------------------------------------+
typedef void (*TFunc)( void );
TFunc entry_func[ 7 ];
//+------------------------------------------------------------------+
enum f_entry
{
   no_f,             // не использовать
   reb,               // отскок
   brd1,             // пробой 1
   brd2,             // пробой 2
   lim,               // лимитный
   lw,               // недельный
   cust,             // пользовательский
};

input     f_entry  func_entry_1         = reb;             // 1-я функция условий входа
input     f_entry  func_entry_2         = brd1;           // 2-я функция условий входа
input     f_entry  func_entry_3         = brd2;           // 3-я функция условий входа
input     f_entry  func_entry_4         = lim;             // 4-я функция условий входа
input     f_entry  func_entry_5         = lw;             // 5-я функция условий входа
input     f_entry  func_entry_6         = cust;           // 6-я функция условий входа

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
   if (paramIncorrect()) return ( INIT_PARAMETERS_INCORRECT );
   else
   {
       string    filename    = "KR\\func.txt" ;
       int       filehandle  = FileOpen (filename, FILE_WRITE | FILE_READ | FILE_TXT | FILE_ANSI | FILE_COMMON );
       if (filehandle != INVALID_HANDLE )
      {
         FileSeek (filehandle, 0 , SEEK_END );
         string str = string (func_entry_1)+ "," + string (func_entry_2)+ "," + string (func_entry_3)+ "," + string (func_entry_4)+ "," + string (func_entry_5)+ "," + string (func_entry_6)+ "\n" ;
         
         if ( FileWriteString (filehandle,str) == 0 ) Print ( "Ошибка записи файла" );
         FileClose (filehandle);
      }
      
       return ( INIT_FAILED );
   }

   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
{
   
}
//+------------------------------------------------------------------+
bool paramIncorrect()
{
   bool      ret_func = false ;
   
   if (func_entry_1 == no_f && func_entry_2 == no_f && func_entry_3 == no_f && func_entry_4 == no_f && 
      func_entry_5 == no_f && func_entry_6 == no_f) return ( true );
//--- Порядок следования
   if (func_entry_1 == no_f)                                                                                       ret_func = true ;
   else if (func_entry_2 == no_f && (func_entry_3 != no_f || func_entry_4 != no_f || func_entry_5 != no_f || 
                                    func_entry_6 != no_f))                                                        ret_func = true ;
   else if (func_entry_3 == no_f && (func_entry_4 != no_f || func_entry_5 != no_f || func_entry_6 != no_f))        ret_func = true ;
   else if (func_entry_4 == no_f && (func_entry_5 != no_f || func_entry_6 != no_f))                                ret_func = true ;
   else if (func_entry_5 == no_f &&  func_entry_6 != no_f)                                                         ret_func = true ;
//--- Повторяемость
   if (func_entry_1 == reb  && (func_entry_2 == reb    || func_entry_3 == reb  || func_entry_4 == reb  || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_1 == brd1 && (func_entry_2 == brd1   || func_entry_3 == brd1 || func_entry_4 == brd1 || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_1 == brd2 && (func_entry_2 == brd2   || func_entry_3 == brd2 || func_entry_4 == brd2 || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_1 == lim  && (func_entry_2 == lim    || func_entry_3 == lim  || func_entry_4 == lim  || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_1 == lw   && (func_entry_2 == lw     || func_entry_3 == lw   || func_entry_4 == lw   || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_1 == cust && (func_entry_2 == cust   || func_entry_3 == cust || func_entry_4 == cust || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_2 == reb  && (func_entry_3 == reb    || func_entry_4 == reb  || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_2 == brd1 && (func_entry_3 == brd1   || func_entry_4 == brd1 || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_2 == brd2 && (func_entry_3 == brd2   || func_entry_4 == brd2 || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_2 == lim  && (func_entry_3 == lim    || func_entry_4 == lim  || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_2 == lw   && (func_entry_3 == lw     || func_entry_4 == lw   || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_2 == cust && (func_entry_3 == cust   || func_entry_4 == cust || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_3 == reb  && (func_entry_4 == reb    || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_3 == brd1 && (func_entry_4 == brd1   || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_3 == brd2 && (func_entry_4 == brd2   || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_3 == lim  && (func_entry_4 == lim    || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_3 == lw   && (func_entry_4 == lw     || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_3 == cust && (func_entry_4 == cust   || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_4 == reb  && (func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_4 == brd1 && (func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_4 == brd2 && (func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_4 == lim  && (func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_4 == lw   && (func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_4 == cust && (func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_5 == reb  && func_entry_6 == reb)                                                                ret_func = true ;
   if (func_entry_5 == brd1 && func_entry_6 == brd1)                                                               ret_func = true ;
   if (func_entry_5 == brd2 && func_entry_6 == brd2)                                                               ret_func = true ;
   if (func_entry_5 == lim  && func_entry_6 == lim)                                                                ret_func = true ;
   if (func_entry_5 == lw   && func_entry_6 == lw)                                                                 ret_func = true ;
   if (func_entry_5 == cust && func_entry_6 == cust)                                                               ret_func = true ;
   
   if (ret_func) return ( true );
   
   return ( false );
}

 
Сергей Таболин :

Önbellek çalışır.

 

Merhaba!

MT5'teki "Sabit çizelge konumu" kaydırıcısının yanlış çalışmasıyla karşı karşıya kalındığında: örneğin, haftalık bir çizelgeden günlük bir çizelgeye geçerken, yaklaşık 280 gün kayar.

Terminali kurduktan sonra, ilk başta her şey yolunda gidiyor ve ardından eski profilleri yüklüyorsunuz ve aksaklıklar başlıyor. Ve bu eski bir sorun.

Küçük bir gösteri ile bir video ekliyorum ...



Dosyalar:
test.exe.zip  1300 kb
 

Bu durumda uyarıları kaldırabilir misiniz? Değişken üretmemek için. Yoksa mql'de hiç çalışmıyor mu?

 private :
   int                number_of_features;
     
public :
                     CBandit( int number_of_features) {                                      
                             this .number_of_features = number_of_features;
                            }
  

'number_of_features' bildirimi, 24. satırda üye bildirimini gizler


 
Maxim Dmitrievsky :

Bu durumda uyarıları kaldırabilir misiniz? Değişken üretmemek için. Yoksa mql'de hiç çalışmıyor mu?

'number_of_features' bildirimi, 24. satırda üye bildirimini gizler


ve değişkeni zaten "yeniden oluşturdunuz", burada CBandit( int number_of_features ) değişkeni int number_of_features zaten oluşturulacak veya daha doğrusu bir değişken değil , bu değişkenin değerinin bir kopyası olacak, bu nedenle CBandit(int number_of_features _my ) yazın. ayrılırsınız çünkü hiçbir şeyiniz değişmez ve derleyici özellikle bir uyarı verir, çünkü açıklama CBandit( int number_of_features ) Kapsamı kapattınız

özel:

int özellik_sayısı;

ve belki de bu int number_of_features'a ihtiyacınız vardı; CBandit() yönteminde alır veya almayabilir, derleyici bunu izler