MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1384

 
Mikhail Mishanin :

"Zaman değerini" gelen (yeni) zaman ile son hesaplanan zaman arasındaki farkla değiştirirsek? Uygun?

Onlar. yeni zamanın geldiğini bileceğiz:

-yeni bir günden

- yeni haftadan

-veya belirtilenden daha büyük bir farkla

Nasıl uygulanacağı hakkında hiçbir fikrim yok!


Ekran rollover ve yayılma genişlemesi 22-00'de, diğer birçok işlemde 00-00'da, yayılma genişlemesinden tam olarak 1 saat sonra.

Programı giriş parametrelerinde zamanla sınırlamadan bir rollover gerçekleştiğinde programlı olarak nasıl öğrenebilirim?

---

Not: Bu kod iyi çalışır, ancak rollover'dan 500 kene önce başlatılması koşuluyla

 bool CheckSpr( int _sp)
{
   static int ts= 0 , res= 0 ;
   static long tc= 0 ;
   // Comment( res,"=",tc );
   if (tc> 500 && res* 3 <_sp) return ( false ); // если уже собрали 500 тиков и есть средний спред - смотрим на расширенный spr*3
   tc++;
   ts += _sp;
   res =ts/tc;
   if (tc> LONG_MAX - 1 ) {
      tc= 0 ;
      ts= 0 ;
   }
   // Comment( res,"=",tc );
   if (tc< 500 ) return ( false );
   return (res>_sp? true : false );
}
 
Vitaly Muzichenko :

Nasıl uygulanacağı hakkında hiçbir fikrim yok!


Ekran rollover ve yayılma genişlemesi 22-00'de, diğer birçok işlemde 00-00'da, yayılma genişlemesinden tam olarak 1 saat sonra.

Programı giriş parametrelerinde zamanla sınırlamadan bir rollover gerçekleştiğinde programlı olarak nasıl öğrenebilirim?

---

Not: Bu kod iyi çalışır, ancak rollover'dan 500 kene önce başlatılması koşuluyla

İşlemler yoluyla yayılmanın genişlemesinin nedeni , bir ticaret seansının açılmasıdır, yani. çok sayıda siparişi işlemek için "düşme" ve buna bağlı olarak, her şeyin nasıl (hangi fiyata) "yerleşeceğine" dair belirsizlik. İşlem yapmak sigortalıdır ve yayılmayı genişletir. İşlem seansının sonundan/başlangıcından geri adım atmanız yeterlidir.

 
Mikhail Mishanin :

İşlemler yoluyla yayılmanın genişlemesinin nedeni , bir ticaret seansının açılmasıdır, yani. çok sayıda siparişi işlemek için "düşme" ve buna bağlı olarak, her şeyin nasıl (hangi fiyata) "yerleşeceğine" dair belirsizlik. İşlem yapmak sigortalıdır ve yayılmayı genişletir. İşlem seansının sonundan/başlangıcından geri adım atmanız yeterlidir.

Evet, ancak araç spesifikasyonunda yok

Burası rollover'ın 22-00'de olduğu yer

Ve bu 00-00'da bir rollover


 
Vitaly Muzichenko :

Evet, ancak araç spesifikasyonunda yok

 TimeCurrent ()- TimeGMT ()
 

Umarım son versiyon her şeyi hesaba katar

 MqlDateTime dt;
bool CheckSpr( int _sp)
{
   TimeGMT (dt);
   static int ts= 0 , res= 0 ;
   static long tc= 0 ;
   if (dt.hour== 22 ) return ( false );
   tc++;
   ts += _sp;
   res =ts/tc;
   if (tc> LONG_MAX - 1 ) {
      tc= 0 ;
      ts= 0 ;
   }
   // Comment( res,"=",tc );
   if (tc< 500 ) return ( false );
   return (res>_sp? true : false );
}
 
Vitaly Muzichenko :

Umarım son versiyon her şeyi hesaba katar

iki değişken

tarihsaat daLAST=0;

tarihsaatOLD=0;


"Ticaret" yapabilen her işlevde, yani. kene zamanı alabilir

daOLD = daSON;

daLAST= "tik zamanı"

if ( daLAST - daOLD > "zaman aralığı") - yeni bir oturum başladı, bir tür zaman aralığı vardı

{

// uygun gördüğünüz gibi kaydedin, kullanın ve atın

}

 
Mikhail Mishanin :

iki değişken

tarihsaat daLAST=0;

tarihsaatOLD=0;


"Ticaret" yapabilen her işlevde, yani. kene zamanı alabilir

daOLD = daSON;

daLAST= "tik zamanı"

if ( daLAST - daOLD > "zaman aralığı") - yeni bir oturum başladı, bir tür zaman aralığı vardı

{

// uygun gördüğünüz gibi kaydedin, kullanın ve atın

}

Asya seansında birkaç dakikaya kadar bir tik olmayabilecek bazı çiftler ve anlaşmalar vardır, öte yandan devir süresi 21-59'dan 22-01'e, yani Asya'ya bir kene gelişinden daha hızlıdır.

 
Vitaly Muzichenko :

Asya seansında birkaç dakikaya kadar bir tik olmayabilecek bazı çiftler ve anlaşmalar vardır, öte yandan devir süresi 21-59'dan 22-01'e, yani Asya'ya bir kene gelişinden daha hızlıdır.

Aslına dönelim.

görev nedir? aşırı derecede genişlemiş bir yayılma ile esnaf atlayın - değil mi?

o zaman belki de zaman tamamen göz ardı edilebilir, yayılmanın kendisini analiz ederiz.

eğer Sor - Teklif > "eşik" - bir tür izlemeyi/birikmeyi etkinleştirin.

eğer A sk - Teklif < "eşik" - kapatın veya biriktirin.

Böyle bir "inek" benim için faydalı gibi görünüyor, böyle bir şey toplayacağım, istatistik toplayacak ...


Ve birkaç dakika boyunca yeni bir kene yoksa, ticarette ilkini (biraz) atlamak daha mantıklı olacaktır.

Belirli çiftler ve ilişkiler için istatistikler toplanmalıdır, çünkü herhangi bir "eğrilik" hem "-" hem de "+" içinde çalışabilir

 
Mikhail Mishanin :

Aslına dönelim.

görev nedir? aşırı derecede genişlemiş bir yayılma ile esnaf atlayın - değil mi?

o zaman belki de zaman tamamen göz ardı edilebilir, yayılmanın kendisini analiz ederiz.

eğer Sor - Teklif > "eşik" - bir tür izlemeyi/birikmeyi etkinleştirin.

eğer A sk - Teklif < "eşik" - kapatın veya biriktirin.

Böyle bir "inek" benim için faydalı gibi görünüyor, böyle bir şey toplayacağım, istatistik toplayacak ...


Ve birkaç dakika boyunca yeni bir kene yoksa, ticarette ilkini (biraz) atlamak daha mantıklı olacaktır .

Belirli çiftler ve ilişkiler için istatistikler toplanmalıdır, çünkü herhangi bir "eğrilik" hem "-" hem de "+" içinde çalışabilir

Açıklanan her şey, sarı ile vurgulananın dışında, daha önce yayınlanan kodla yapılır - gereksiz ve tamamen doğru olmadığını düşünüyorum. Her nasılsa, birinin farklı bir zamanda devrildiğini hiç görmedim, herkes her zaman aynı şeyi yaşıyor - 22-00 GMT'de, yanılıyor olabilirim.

Ancak çoğu zaman farklı devir süreleri ile karşılaştım, bazılarının 5 dakikası varken bazılarının bir dakikadan biraz fazla süresi var.

---

Doğrulama kodu, bir şeyi değiştirebilir misiniz:

 //+------------------------------------------------------------------+
void OnTick ( void )
{
   int sp = SymbolInfoInteger ( Symbol (), SYMBOL_SPREAD );
   static int ts= 0 ;

   if (CheckSpr(sp)) {
       // Здесь код отправки
       Comment ( sp, "=" ,ts++, "=" ,res );
   } else Comment ( "false: " ,sp, "=" ,ts++, "=" ,res );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlDateTime dt;
int res= 0 ;
bool CheckSpr( int _sp)
{
   TimeGMT (dt);
   static int ts= 0 ;
   static long tc= 0 ;
   if (dt.hour== 22 ) return ( false );
   tc++;
   ts += _sp;
   res =ts/tc;
   if (tc> LONG_MAX - 1 ) {
      tc= 0 ;
      ts= 0 ;
   }
   // Comment( res,"=",tc );
   if (tc< 500 ) return ( false );
   return (res>_sp? true : false );
}
 
Vitaly Muzichenko :

herkes aynı şeye sahip - 22-00 GMT'de, yanılıyor olabilirim.

yanılmıyorsun.