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

 

Tünaydın. bir süre sonra bir şey MT4'te bayrağı işlemeyi durdurdu. sadece mt onu görmezden gelmeye başlar, bana nedenini söyleyebilir misin:

 void OnTimer ()
  {
//---
   //-----------------
   int tmeLeftC = PeriodSeconds () - ( TimeCurrent ()- Time [ 0 ]);
   int tmeLeftL = PeriodSeconds () - ( TimeLocal ()- Time [ 0 ]);
   
   
//флаг на вкл отправки   
   if ((sendflag== 0 ) && (tmeLeftC >= 10 )) 
      {
         sendflag= 1 ;
      }
      

//Условия на отправку 
///------BAY 
   if ((sendflag== 1 ) && (fNewBar()) && ( TimeHour ( Time [ 0 ]) >= StartH) && ( TimeHour ( Time [ 0 ]) <= EndH) && ((tmeLeftC <= SecondsPrevToServer) || (tmeLeftL <= SecondsPrevToServer)))
      {
         Print ( "Predict data" );
         sendSig();
         Print ( "Send data" );
         sendflag= 0 ;
      }
 
itslek :

Tünaydın. bir süre sonra bir şey MT4'te bayrağı işlemeyi durdurdu. sadece mt onu görmezden gelmeye başlar, nedenini söyleyebilir:


100-200 ms'lik bir zamanlayıcı frekansını deneyin,
500ms, 1 saniyeyi yakalamak için çok fazla

sonuçta mum birkaç saniye, hatta bir dakika sonra açılabilir

 
Ivan Ivanov :

Denemek :

...ya da gerçekten extern'e ihtiyacınız var mı?


Teşekkür ederim. Yardım etmiş gibi görünüyor.

Ve giriş ve dış arasında anlayamadığım fark nedir?

 
Taras Slobodyanik :

100-200 ms'lik bir zamanlayıcı frekansını deneyin,
500ms, 1 saniyeyi yakalamak için çok fazla

sonuçta mum birkaç saniye, hatta bir dakika sonra açılabilir


yani sorun onu yakalamaması değil. Bununla her şey harika.

gerçek şu ki, bayrak çalışmayı durdurur ve bayrağın koşullarını göz ardı ederek her 500ms'de bir sinyal göndermeye başlar. Neler olduğunu anlamıyorum...

 
RichLux : giriş ve dış arasındaki fark nedir?


 

Lütfen arabelleği yeni bir görünümle nasıl sıfırlayacağımı söyleyin, ancak böylece arabellekteki önceki veriler silinmez, ancak grafikte görüntülenir. Nedense arabelleği sıfırlayamıyorum ve yeni bir barın gelmesiyle eski birikmiş veriler yenileriyle kaplanıyor. Kodda doğru bir şekilde açıklamadığım şey.

 void OnInit ()
{
   IndicatorDigits ( 0 );
   SetIndexBuffer ( 0 ,Buf_1);
   SetIndexBuffer ( 1 ,Buf_2);
   Bid1= Bid ;
  
   
}
 
 
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   datetime Вр= Time [ 0 ];   // Время текущего бара
   if (Вр>Время)           // Если новый бар
   {
      Время=Вр;           // Запомнить
      Buf_1[ 0 ]= 0 ;         // и обнулить последний элемент буфера
      Buf_2[ 0 ]= 0 ;
   }
   
      
   if ( Bid > Bid1) 
   {
   V1 = iVolume ( NULL , 0 , 0 );
   V2 = V1 + V2;
   Buf_1[ 0 ]= V2;
   }                             
   else 
   {
   V3 = iVolume ( NULL , 0 , 0 );
   V4 = V3 + V4;
   Buf_2[ 0 ]= (V4*- 1 );
   }
   Bid1= Bid ;
   
   
   return (rates_total);
}
 
itslek :

yani sorun onu yakalamaması değil. Bununla her şey harika.

gerçek şu ki, bayrak çalışmayı durdurur ve bayrağın koşullarını göz ardı ederek her 500ms'de bir sinyal göndermeye başlar. Neler olduğunu anlamıyorum...


Zamanla, hem yerel hem de sunucu olarak kafanız karışır.
Bir saniye şöyle bir şey yakalardım:

 //+------------------------------------------------------------------+
bool NewBar()
{
static bool flag= false ;
static int bar= Bars ;
static datetime lasttime= 0 ;

if (!flag && Bars !=bar)
   {
   bar= Bars ;
   lasttime= TimeLocal ();
   flag= true ;
   }
if (flag && TimeLocal ()-lasttime>=pause) //pause - пауза после начала бара, например 59 сек
   {
   flag= false ;
   return ( true );
   }
return ( false );
}
 

Tünaydın! Lütfen göstergede, iData'da yazılmışsa, grafiğin zaman dilimini belirtebileceğiniz çubuk verilerine herhangi bir program veya bağlantı önemli değil, diğer zaman dilimlerinden gelen verilerin neden doğru yansıtılmadığını söyleyin. zaman olarak farklı olan, ancak yalnızca belirtilen zaman çerçevesinin grafiğinde bulunan mevcut grafik? Teşekkür ederim.

 

Merhaba, belki biri cevap verir, yardım edin, tekrar deneyeceğim. İşte mesaj, sayfa 367 , her şey orada boyanmıştır.

 
Novaja :

Merhaba, belki biri cevap verir, yardım edin, tekrar deneyeceğim. İşte mesaj, sayfa 367 , her şey orada boyanmıştır.


Buraya bak

Neden: