Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 96

 

Bu arada, konuşma GetSystemTimePreciseAsFileTime'a değindi. Böyle bir işlev MQL'de çok eksiktir veya en azından mikro/mili-saniyeye yuvarlama ile. Saniye cinsinden süre çok kaba. MT'nin kendisinde, her yerde milisaniye kullanılır. Şimdi aynı GetMicrosecondCount'u kullanarak tam zamanı sentezleyerek bahçeyi çitle çevirmemiz gerekiyor:

 long TimeLocal_mcs() 
{ 
   static long time0_mcs= 0 ;
   if (time0_mcs== 0 ) { datetime t= TimeLocal ();   while ( TimeLocal ()==t);  time0_mcs= (t+ 1 )* 1 e6 - GetMicrosecondCount (); }
   datetime time= TimeLocal ();
   long time_mcs= time0_mcs + GetMicrosecondCount ();
   long delta= time_mcs - time*( long ) 1 e6; 
   if (delta< 0 ) { time0_mcs-=delta;  time_mcs-=delta; }  
   return time_mcs;
}
 
Alexey Navoykov :

Bu arada, konuşma GetSystemTimePreciseAsFileTime'a değindi. Böyle bir işlev MQL'de çok eksiktir veya en azından mikro/milisaniyeye yuvarlama ile. Saniye cinsinden süre çok kaba. MT'nin kendisinde, her yerde milisaniye kullanılır. Şimdi aynı GetMicrosecondCount'u kullanarak tam zamanı sentezleyerek bahçeyi çitle çevirmemiz gerekiyor:

WinApi işlevselliği aracılığıyla mcs'de oluşturma ile geri aramanızı oluşturun

 
Konstantin :

WinApi işlevselliği aracılığıyla mcs'de oluşturma ile geri aramanızı oluşturun

Geri arama neden burada?

 
Alexey Navoykov :

Geri arama neden burada?

peki, tüm akışı istiyorsanız, o zaman bir zil işlevi yeterlidir ve olaylarla çalışmak istiyorsanız, o zaman geri arama

 
Bir görünmezlik mekanizmasının varlığı için çalışmanızı (Piyasa ile ne yapacağımı bilmiyorum) kontrol edin. Cidden "vurabilirsin" ...
 
Eski konu , ancak sorunu anlamak için çok basit bir kod

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

PositionOpen çağrıldıktan sonra bir siparişin yürütülüp yürütülmediği nasıl kontrol edilir

fxsaber , 2018.08.09 20:35

Bu betiği orada deneyin ForexTimeFXTM-Demo01 (veya FXOpen-MT5 )

 #include <Trade/Trade.mqh>

void OnStart ()
{
   const int PrevTotal = PositionsTotal ();
  
  CTrade Trade;  
  
   while ( PositionsTotal () == PrevTotal)
    Trade.Buy( 1 );    
}

Bazen bir değil iki yeni pozisyon açılır.


Senaryo ile yeni bir pozisyon açmaya çalışıyoruz ama bazen iki pozisyon alıyoruz.

 
fxsaber :
Eski konu , ancak sorunu anlamak için çok basit bir kod

Senaryo ile yeni bir pozisyon açmaya çalışıyoruz ama bazen iki pozisyon alıyoruz.

KB'de zaten bir çözüm varmış gibi görünüyor:

 //+------------------------------------------------------------------+
//| Возвращает "неопределённое" состояние торгового окружения        |
//+------------------------------------------------------------------+
bool IsUncertainStateEnv( const string symbol_name, const ulong magic_number)
  {
   if ( MQLInfoInteger ( MQL_TESTER )) return false ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i> WRONG_VALUE ; i--)
     {
       if ( OrderGetTicket (i)== 0 ) continue ;
       if ( OrderGetInteger ( ORDER_TYPE )> ORDER_TYPE_SELL ) continue ;
       if ( OrderGetInteger ( ORDER_MAGIC )!=magic_number) continue ;
       if (! OrderGetInteger ( ORDER_POSITION_ID ) && OrderGetString ( ORDER_SYMBOL )==symbol_name)
         return true ;
     }
   return false ;
  }

//+------------------------------------------------------------------+
//| Заполняет массивы тикетов позиций                                |
//+------------------------------------------------------------------+
bool FillingListTickets( const uint number_of_attempts)
  {
//--- Проверка состояния окружения
   int n= 0 ,attempts= int (number_of_attempts< 1 ? 1 : number_of_attempts);
   while (IsUncertainStateEnv(symb,InpMagic) && n<attempts && ! IsStopped ())
     {
      n++;
       Sleep (sleep);
     }
   if (n>=attempts && IsUncertainStateEnv(symb,InpMagic))
     {
       Print ( __FUNCTION__ , ": Uncertain state of the environment. Please try again." );
       return false ;
     }
//---

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//--- Проверка нулевых цен
   if (! RefreshRates () || Point ()== 0 ) return ;
//--- Заполнение списков тикетов позиций
   int positions_total= PositionsTotal ();
   if (prev_total!=positions_total)
     {
       if (FillingListTickets(num_attempts))
         prev_total=positions_total;
       else return ;
     }

 
fxsaber :
Bir görünmezlik mekanizmasının varlığı için çalışmanızı (Piyasa ile ne yapacağımı bilmiyorum) kontrol edin. Cidden "vurabilirsin" ...

Bağlantıyı takip ettim ama nasıl bir görünmezlik mekanizmasından bahsettiğimizi anlamadım.

 
Alexey Navoykov :

Bağlantıyı takip ettim ama nasıl bir görünmezlik mekanizmasından bahsettiğimizi anlamadım.

Grafikte gizli modda gösterge. Danışmanları boşaltır. Cep telefonuma kısa bir bakışta anladığım buydu.

 
Alexey Navoykov :

Bağlantıyı takip ettim ama nasıl bir görünmezlik mekanizmasından bahsettiğimizi anlamadım.

Kaldırmayın.

Neden: