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

 
Nikita Chernyshov :

Teşekkür ederim!

Ve bu daha eski bir kod, ancak resimlerde: TrailingStop

 
Test Cihazındaki OnInit'teki EventSetTimer, ilk onay gününün başlangıcından değil, test aralığının başlangıç tarihinden itibaren sayılır - bir denge ticareti.
 
fxsaber :
Test Cihazındaki OnInit'teki EventSetTimer, ilk onay gününün başlangıcından değil, test aralığının başlangıç tarihinden itibaren sayılır - bir denge ticareti.
EventSetTimer, zamanlayıcıyı her zaman EventSetTimer'ın çağrıldığı andan itibaren başlatır. Test cihazında ne var, terminalde ne var
 

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

Mql4 dilinin özellikleri, incelikleri ve çalışma yöntemleri

fxsaber , 2019.02.12 13:12

Çok boyutlu diziler için ArrayResize'ın özellikleri
 void OnStart ()
{
   int Array[][ 2 ];
  
   Print ( ArrayResize (Array, 7 )); // MQL5 - 7, MQL4 - 14
   Print ( ArraySize (Array));       // 14
}
 

Beşli için Kim'in işlevlerini görmek güzel olurdu. Lütfen bana söyle. Kim'in böyle bir işlevi vardı

 //+------------------------------------------------------------------+
//|  Проверяет был ли открыт последний ордер на этой же свече        |
//|  Checks whether the opened last the order on the same candle     |
//+------------------------------------------------------------------+
bool IfOrdOpClSelfBar( int magik = 0 , int bar = 0 , int typ = - 1 , string sy = "" , int per = 0 ){
   if (sy == "" ){sy = Symbol ();}
   if (per== 0 ){per= Period ();}
   for ( int i = OrdersTotal (); i>= 0 ; i--){
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )){
         if ( OrderSymbol ()!=sy){ continue ;}
         if ( OrderType ()==typ||typ==- 1 ){
             if ( OrderMagicNumber ()==magik||magik== 0 ){
               if ( OrderOpenTime ()>= iTime (sy,per,bar)){ return ( true );}
            }
         }
      }
   }
   for (i = OrdersHistoryTotal (); i>= 0 ; i--){
       if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )){
         if ( OrderSymbol ()!=sy){ continue ;}
         if ( OrderType ()==typ||typ==- 1 ){
             if ( OrderMagicNumber ()==magik||magik== 0 ){
               if ( OrderOpenTime ()>= iTime (sy,per,bar)){ return ( true );}
            }
         }
      }
   }   
   return ( false );
}

mql5'te yeniden yazmaya çalışıyorum. Ama çalışmak istemiyor. Onu nasıl zorlarsın? :)

 //+------------------------------------------------------------------+
//|  Проверяет был ли открыт последний ордер на этой же свече        |
//|  Checks whether the opened last the order on the same candle     |
//+------------------------------------------------------------------+
bool IfOrdOpClSelfBar( ENUM_ORDER_TYPE type)
{

   for ( int i = OrdersTotal (); i>= 0 ; i--){
       if ( OrderSelect ( OrderGetTicket (i)) > 0 )
        {
         if ( OrderGetString ( ORDER_SYMBOL )!= _Symbol ){ continue ;}
         if ( OrderGetInteger ( ORDER_TYPE )==type)
           {
             if ( OrderGetInteger ( ORDER_MAGIC ) == magicN)
             {
               if ( OrderGetInteger ( ORDER_TIME_SETUP ) >= iTime ( NULL , Period (), 0 )){ return ( true );}
             }
           }
        }
      }
      
   for ( int i = HistoryOrdersTotal (); i>= 0 ; i--){
     if ( HistoryOrderSelect ( OrderGetTicket (i)) > 0 )
          {
         if ( OrderGetString ( ORDER_SYMBOL )!= _Symbol ){ continue ;}
         if ( OrderGetInteger ( ORDER_TYPE )==type)
           {
             if ( OrderGetInteger ( ORDER_MAGIC ) == magicN)
             {
               if ( OrderGetInteger ( ORDER_TIME_SETUP ) >= iTime ( NULL , Period (), 0 )){ return ( true );}
             }
           }
          }
    }
   
   return ( false );
}
 
Nikita Chernyshov :

Beşli için Kim'in işlevlerini görmek güzel olurdu. Lütfen bana söyle. Kim'in böyle bir işlevi vardı

mql5'te yeniden yazmaya çalışıyorum. Ama çalışmak istemiyor. Onu nasıl zorlarsın? :)

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

Kitaplıklar: MT4Orders

fxsaber , 2019.01.13 17:23

Kim'in MT4 için işlevleri oldukça popüler, bu yüzden onun sitesinden tüm kaynakları indirdim ve MT5 için onlar için basit bir "dönüştürücü" yazdım.
 #include <KimIVToMT5.mqh> // https://c.mql5.com/3/263/KimIVToMT5.mqh

#include "e-Trailing.mq4" // http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=14

void OnTick () { start(); }
 
fxsaber :

Koltuk değneği için teşekkürler, çok faydalı :) Ama bu konuyu anlamak, anlamak için ilk beşi öğreniyorum, bu yüzden temelde kalemle halletmek önemli.

 

Milyonlarca kene ayrıştırırken, periyodik olarak bellek tüketimine bakmaya karar verdim.

Değişiklik yaptıktan sonra yürütme hızının önemli ölçüde düştüğünü fark ettim.


Neden: TerminalInfoInteger'ın bazı kullanımları çok uzun zaman alıyor

 #define BENCH(A)                                                              \
{                                                                             \
   const ulong StartTime = GetMicrosecondCount ();                              \
  A;                                                                          \
   Print ( "Time[" + #A + "] = " + ( string )( GetMicrosecondCount () - StartTime)); \
}  

void OnStart ()
{
  BENCH( TerminalInfoInteger ( TERMINAL_MEMORY_USED )); // 28220
}
Dikkat olmak.
 
TerminalInfoInteger ( TERMINAL_MEMORY_USED )

Çok pahalı bir özellik.

TERMINAL_MEMORY_AVAILABLE

TERMINAL_MEMORY_PHYSICAL ve TERMINAL_MEMORY_TOTAL, ilk istekten sonra önbelleğe alınır. Sonraki istekler önbelleğe alınmış değerleri döndürür.

 
FileIsExists bazı (*.bat vb.) dosyaları görmez, ancak FileFindNext onları bulur.