Hatalar, hatalar, sorular - sayfa 2226

 
Andrey Khatimlianskii :

KB'de bekliyorum ;)

Çözüm düşündüğümden çok daha kolay çıktı.

Zamanlayıcının durumunu öğrenebileceğiniz bir gösterge örneği. Kontrol altında #include <Timer.mqh> ve OnTimer() satırının eklenmesi yeterlidir.

 #property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_chart_window
#include   <Timer.mqh>

int OnInit ()
  {
   if (iTimer.On) Print ( "Таймер включен, период таймера = " + IntegerToString (iTimer.curPer)+ " миллисеккунд" ); else Print ( "Таймер выключен" );
   EventSetMillisecondTimer ( 2201 );
   return ( INIT_SUCCEEDED );
  }
////////////////////////////////////////////  
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   return (rates_total);
  }
///////////////////////////////////////////// 
void OnTimer ()
  {
   if (iTimer.On) Print ( "Таймер включен, период таймера = " + IntegerToString (iTimer.curPer)+ " миллисеккунд" ); else Print ( "Таймер выключен" );
   EventKillTimer ();
   if (iTimer.On) Print ( "Таймер включен, период таймера = " + IntegerToString (iTimer.curPer)+ " миллисеккунд" ); else Print ( "Таймер выключен" );
  }

Ve işte sınıfın kendisi:

 //+------------------------------------------------------------------+
//|                                                        Timer.mqh |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                         https://www.mql5.com/ru/users/nikolay7ko |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Nikolay Semko"
#property link        "https://www.mql5.com/ru/users/nikolay7ko"
#property link        "SemkoNV@bk.ru"   

///////////////////////////////////////////////////////////////////////////
class CTimer
  {
public :
                     CTimer() {curPer= 0 ; On= false ;}
                    ~CTimer() {}
   bool               On;
   int                curPer;
   void               AddNewProgTimerSec( int per){ EventSetTimer (per); curPer=per* 1000 ; On= true ;}
   void               AddNewProgTimerMilliSec( int per) { EventSetMillisecondTimer (per); curPer=per; On= true ;}
   void               KillProgTimer() { EventKillTimer (); curPer= 0 ; On= false ;}
  };
///////////////////////////////////////////////////////////////////////////
static CTimer iTimer;

#define EventSetMillisecondTimer iTimer.AddNewProgTimerMilliSec
#define EventSetTimer iTimer.AddNewProgTimerSec
#define EventKillTimer iTimer.KillProgTimer
Sonuç:
2018.07.12 21:10:37.177	TestСTimer (EURUSD.m,M5)	Таймер выключен
2018.07.12 21:10:39.385	TestСTimer (EURUSD.m,M5)	Таймер включен, период таймера = 2201 миллисеккунд
2018.07.12 21:10:39.385	TestСTimer (EURUSD.m,M5)	Таймер выключен
Dosyalar:
Timer.mqh  3 kb
 
Nikolai Semko :

Çözüm düşündüğümden çok daha kolay çıktı.
...


Bir bütün olarak topluluktaki kodlama düzeyi hakkında yazmak istedim, ancak sorun çıkmasın diye atlayacağım...
Benim düşünceme göre, görev, zamanlayıcı kontrolünü uygulayan ve zamanlayıcı olayına "abone olma" yeteneği sağlayan bir singleton veya statik bir sınıfın uygulanmasıyla çözülür,
"abonelik", belirli bir sıklıkta çağrılması gereken bir işleve bir işaretçi geçirilerek gerçekleştirilir.

 

Alım satım sonuçları, tüm keneler için yapılan testten farklıdır. Bana nerede kazacağımı söyle - alıntılar yeniden çizilir veya nasıl?

Tüm keneler üzerinde test edin - her zaman aynı sonucu verir. Gerçek ticaret - aynı dönemde ekstra fırsatlar verir.

Danışman 2 hafta boyunca kapanmadı. Test ayrıca 2 haftadır. 50 kez koştum - her zaman aynı

 
Anton Ohmat :

Alım satım sonuçları, tüm keneler için yapılan testten farklıdır. Bana nerede kazacağımı söyle - alıntılar yeniden çizilir veya nasıl?

Tüm keneler üzerinde test edin - her zaman aynı sonucu verir. Gerçek ticaret - aynı dönemde ekstra fırsatlar verir.

Danışman 2 hafta boyunca kapanmadı. Test ayrıca 2 haftadır. 50 kez koştum - her zaman aynı

"Tüm işaretler" veya "gerçek işaretler" ile test edin?

 
Tüm keneler için - en üstteki parametre
 
Anton Ohmat :
Tüm keneler için - en üstteki parametre

"Tüm işaretler" modunda, işaretler, dakika çubuklarından test cihazı tarafından simüle edilir. İşte farklı test modları hakkında bir makale. https://www.mql5.com/en/articles/2612

Тестирование торговых стратегий на реальных тиках
Тестирование торговых стратегий на реальных тиках
  • www.mql5.com
В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: "OHLC на M1" с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме "Все тики", и самое достоверное тестирование в режиме "Каждый тик на основе реальных тиков" с использованием записанных тиков из...
 
sadece koştu - aynı sonucu aldım
 
Sergey Dzyublik :


Bir bütün olarak topluluktaki kodlama düzeyi hakkında yazmak istedim, ancak sorun çıkmasın diye atlayacağım...
Benim düşünceme göre, görev, zamanlayıcı kontrolünü uygulayan ve zamanlayıcı olayına "abone olma" yeteneği sağlayan bir singleton veya statik bir sınıfın uygulanmasıyla çözülür,
"abonelik", belirli bir sıklıkta çağrılması gereken bir işleve bir işaretçi geçirilerek gerçekleştirilir.

Böyle mantıklı şeyler söylüyorsan çok iyi bir programcı gibi görünüyorsun. Ve politik doğruluk için teşekkürler :)).
Kesinlikle uygun bir politimerin nasıl oluşturulacağına dair bir vizyonum var. Bakışların vizyonumu daha da genişletti. Teşekkür ederim.

 
Sergey Dzyublik :

sorun, bir singleton uygulanmasıyla çözüldü

MQL5'te bir singleton nasıl uygulanabilir?
 
fxsaber :

Dosya yüklemede hata. İki yerel Aracı, FILE_COMMON bayrağıyla FileLoad aracılığıyla verileri okumaya çalışırsa, Aracılardan biri bozulur.

Uygun bayrakları FileOpen'da ayarlayabilirsiniz , ancak FileLoad'da ayarlayamazsınız. Bu nedenle, başka bir FileLoad okursa lütfen dosyaya FileLoad aracılığıyla erişime izin verin.

Bu bayraklar size nasıl yardımcı olacak? İşte bir örnek https://www.mql5.com/en/forum/1111/page1628#comment_2702870

İki Uzman Danışman , FileOpen aracılığıyla ( FILE_SHARE_READ bayrağıyla) verileri okumaya çalışır. Sonuç: Danışmanlardan biri ayrıldı


Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2016.08.03
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы