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

 
lütfen söyleyin 4-ke'de böyle bir fonksiyon var ama MQL5'te nasıl uygulanıyor?

Uzman Danışman tarafından çağrılan göstergeleri gizleme bayrağını ayarlar.

 void    HideTestIndicators
(
   bool hide // флаг
);

 
fxsaber :

Bunu yapmak için, "telefon dinleme" danışmanı paralel olarak çalışmalıdır, yani. yardımcı bir çizelge gereklidir.

Örnekte durum biraz farklıdır: Bir tablo vardır ve bir Uzman Danışman zaten üzerinde çalışmaktadır. Ve yenilerini açmadan OrderSend'i göstergeden geçirmek istiyorum.

Tabii ki, Market için DLL olmadan geçmek.

Bunu yapmak için, baykuşa emir alma olasılığının panelini sürdüm ve bazen manuel modda emir atıyorum ama baykuş onları aldığı gibi gidiyorlar.

 
Konstantin Nikitin :

Bunu yapmak için, baykuşa emir alma olasılığının panelini sürdüm ve bazen manuel modda emir atıyorum ama baykuş onları aldığı gibi gidiyorlar.

Başlangıçta, göstergenin kendisi OBJ_CHART üzerinde Order komut dosyasını başlattığında bir yaşam kesmekten bahsediyorduk.

 

Postfix operatörleri (operatör ++ ve operatör --) aşağıdaki gibi tanımlanır

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

Bazı küçük hataları tespit etmek için yardıma ihtiyacınız var.

whroeder1 , 2014.07.07 11:37


  1. Önek operatörü++
    Sonek operatörü++
    RaRev* RaRev:: operator ++( void ){         // prefix
    
    RaRev RaRev:: operator ++( int ){               // postfix
 
Pavel Verveyko :
lütfen söyleyin 4-ke'de böyle bir fonksiyon var ama MQL5'te nasıl uygulanıyor?

EA tarafından çağrılan göstergeleri gizlemek için bayrağı ayarlar.


Bunun gibi, yardıma bakın

MQL5 Referansı / Özel Göstergeler / Örneklerdeki Gösterge Stilleri / DRAW_NONE
 
MQL4 taraftarları için, MQL5'te TF'lerle tanıdık bir tarzda çalışmanın eski bir yolu vardır.

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

'CopyTicks'in Test Edilmesi

fxsaber , 2016.10.19 07:59

// Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.

#define DEFINE_TIMESERIE(NAME,FUNC,T)                                                                         \
   class CLASS ##NAME                                                                                           \
  {                                                                                                           \
   public :                                                                                                     \
     static T Get( const string Symb, const int TimeFrame, const int iShift )                                  \
    {                                                                                                         \
      T tValue[];                                                                                             \
                                                                                                              \
       return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \
    }                                                                                                         \
                                                                                                              \
    T operator []( const int iPos ) const                                                                      \
    {                                                                                                         \
       return (CLASS ##NAME::Get(_Symbol, _Period , iPos));                                                       \
    }                                                                                                         \
  };                                                                                                          \
                                                                                                              \
  CLASS ##NAME NAME;                                                                                           \
                                                                                                              \
  T i ##NAME( const string Symb, const int TimeFrame, const int iShift )                                       \
  {                                                                                                           \
     return (CLASS ##NAME::Get(Symb, TimeFrame, iShift));                                                        \
  }

DEFINE_TIMESERIE( Volume , TickVolume, long )
DEFINE_TIMESERIE( Time , Time , datetime )
DEFINE_TIMESERIE( Open , Open , double )
DEFINE_TIMESERIE( High , High , double )
DEFINE_TIMESERIE( Low , Low , double )
DEFINE_TIMESERIE( Close , Close , double )

Kene geçmişiyle çalışırken birilerinin MQL4 yaklaşımına ihtiyacı olabilir

 // Позволяет работать с тиковой историей в MQL4-стиле
struct TICK_HISTORY
{
   const string Symb;
  
  TICK_HISTORY( const string sSymb = NULL ) : Symb(sSymb)
  {
  }
  
   const MqlTick operator []( const int Pos ) const
  {
     static const MqlTick NullTick = { 0 };
     static MqlTick Ticks[];
    
     return ((:: CopyTicks ( this .Symb, Ticks, COPY_TICKS_INFO , 0 , Pos + 1 ) > Pos) ? Ticks[:: ArraySize (Ticks) - Pos - 1 ] : NullTick);
  }
};

const TICK_HISTORY Tick;


Başvuru

 if (Tick[ 0 ].bid > Tick[ 100 ].bid) // сравниваем текущий и исторический тики
   Print ( "Hello World!" );

if ( High [ 0 ] > Close [ 100 ]) // https://www.mql5.com/ru/forum/42122/page24#comment_2904023
   Print ( "Hello World!" );
 
Alexey Volchanskiy :

Bunun gibi, yardıma bakın

MQL5 Referansı / Özel Göstergeler / Örneklerdeki Gösterge Stilleri / DRAW_NONE

çok teşekkür ederim, deneyeceğim, SD, IndicatorRelease'in böyle bir işlem yapması gerektiğini söyledi

 

yapıdaki alanları hizalama açısından düzenlemenin nasıl daha doğru olacağını kim buldu:

 struct A
  {
   uchar   arr[ 20 ];
   // тут поля заполнители
   double val;
  };

struct B
  {
   double val;
   // тут поля заполнители
   uchar   arr[ 20 ];
  };

teoride, yapılardaki hizalama yukarıdan aşağıya gider, ancak altında 20 eleman için bir bellek tahsisi olan bir dizimiz var, A yöntemi doğru olacak gibi görünüyor
 
fxsaber :
MQL4 taraftarları için, MQL5'te TF'lerle tanıdık bir tarzda çalışmanın eski bir yolu vardır.

 // Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T)                                                                         \
   class CLASS ##NAME                                                                                           \
  {                                                                                                           \
   public :                                                                                                     \
     static T Get( const string Symb, const int TimeFrame, const int iShift )                                  \
    {                                                                                                         \
      T tValue[];                                                                                             \
                                                                                                              \
       return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \
    }                                                                                                         \
                                                                                                              \
    T operator []( const int iPos ) const                                                                      \
    {                                                                                                         \
       return (CLASS ##NAME::Get(_Symbol, _Period , iPos));                                                       \
    }                                                                                                         \
  };                                                                                                          \
                                                                                                              \
  CLASS ##NAME NAME;                                                                                           \
                                                                                                              \
  T i ##NAME( const string Symb, const int TimeFrame, const int iShift )                                       \
  {                                                                                                           \
     return (CLASS ##NAME::Get(Symb, TimeFrame, iShift));                                                        \
  }

DEFINE_TIMESERIE( Volume , TickVolume, long )
DEFINE_TIMESERIE( Time , Time , datetime )
DEFINE_TIMESERIE( Open , Open , double )
DEFINE_TIMESERIE( High , High , double )
DEFINE_TIMESERIE( Low , Low , double )
DEFINE_TIMESERIE( Close , Close , double )

Başvuru...


Tüm sınıfı bir Makro'ya sokmanın harika bir yolu. Hata Ayıklayıcı'da böyle bir sınıfla çalışmanın mümkün olmaması üzücü :-((

 
Konstantin :

yapıdaki alanları hizalama açısından düzenlemenin nasıl daha doğru olacağını kim buldu:

teoride, yapılardaki hizalama yukarıdan aşağıya gider, ancak altında 20 eleman için bir bellek tahsisi olan bir dizimiz var, A yöntemi doğru olacak gibi görünüyor

MQL'den bahsediyorsanız, içinde hizalama yoktur.

Ve eğer C ++ ile ilgiliyse, o zaman B yapısı daha iyidir.

Her neyse, C++'da hizalama programcıya kalmıştır.