Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 841

 
Vitaly Muzichenko :

Kod tabanı kitaplıklarla dolu ve ayrıca bir makale var

Bilinen makale İhtiyacınız olan şey bu değil

Her seferinde tanımlamak sakıncalıdır

 
double Bid  double Ask  double Close[]  double Low[]  и так далее


Kod tabanı kitaplıklarla dolu, ancak bir kez ve herkes için madencilik yapabilen belirli kitaplıkları bilen var mı diye soruyorum.

 
Stefan Stoyanov :
Ünlü makale İhtiyacınız olan şey bu değil

Kod tabanı kitaplıklarla dolu, ancak bilen varsa belirli kitaplıkları soruyorum.

2-3 kitaplık almanız ve onlardan kendinizden birini toplamanız gerekir - tamamlayın.

 
Vitaly Muzichenko :

2-3 kitaplık almanız ve onlardan kendinizden birini toplamanız gerekir - tamamlayın.


Ve nasıl alınır Belirli bir kitaplığın neye ihtiyaç duyduğu ve onunla nasıl iletişim kuracağımız konusunda bize bilgi verecek kitaplıkların dizini nerede?

Genelde koleksiyon yapıp kitaplık yapmak istemiyorum.
Benim sorum hazır kitaplıkların varlığı ile ilgili, onları tekrar oluşturursam makale üzerinden çalışmak daha iyi olur.
 
Stefan Stoyanov :

Ve nasıl alınır Belirli bir kitaplığın neye ihtiyaç duyduğu ve onunla nasıl iletişim kuracağımız konusunda bize bilgi verecek kitaplıkların dizini nerede?

Genelde koleksiyon yapıp kitaplık yapmak istemiyorum.
Benim sorum hazır kitaplıkların varlığı ile ilgili, onları tekrar oluşturursam makale üzerinden çalışmak daha iyi olur.

Montajı çok kolay, foruma daha uzun yazıyorsunuz ve kendinize sorun yaratıyorsunuz.

İşte bir kısım:

 #ifdef __MQL5__
datetime iTime ( string symb, ENUM_TIMEFRAMES tf, int index) {
datetime Arr[ 1 ];
   return (( CopyTime (symb,tf,index, 1 ,Arr)== 1 )?Arr[ 0 ]: WRONG_VALUE );
 }
//-------------------------------------------------------------------------------------------------------
double iOpen ( string symb, ENUM_TIMEFRAMES tf, int index) {
double Arr[ 1 ];
   return (( CopyOpen (symb,tf,index, 1 ,Arr)== 1 )?Arr[ 0 ]: WRONG_VALUE );
 }
//-------------------------------------------------------------------------------------------------------
double iClose ( string symb, ENUM_TIMEFRAMES tf, int index) {
double Arr[ 1 ];
   return (( CopyClose (symb,tf,index, 1 ,Arr)== 1 )?Arr[ 0 ]: WRONG_VALUE );
 }
//-------------------------------------------------------------------------------------------------------
double iLow ( string symb, ENUM_TIMEFRAMES tf, int index) {
double Arr[ 1 ];
   return (( CopyLow (symb,tf,index, 1 ,Arr)== 1 )?Arr[ 0 ]: WRONG_VALUE );
 }
//-------------------------------------------------------------------------------------------------------
double iHigh ( string symb, ENUM_TIMEFRAMES tf, int index) {
double Arr[ 1 ];
   return (( CopyHigh (symb,tf,index, 1 ,Arr)== 1 )?Arr[ 0 ]: WRONG_VALUE );
 }
//-------------------------------------------------------------------------------------------------------
double AccountFreeMarginCheck ( const string Symb, const int Cmd, const double dVolume) {
 double Margin;
   return (:: OrderCalcMargin (( ENUM_ORDER_TYPE )Cmd, Symb, dVolume,
          :: SymbolInfoDouble (Symb,(Cmd==:: ORDER_TYPE_BUY ) ? :: SYMBOL_ASK : :: SYMBOL_BID ),Margin) ?
          :: AccountInfoDouble (:: ACCOUNT_MARGIN_FREE ) - Margin : - 1 );
 }
#endif
 

böyle bir kod buldum

Bu kodun bir adla bir dosyaya indirgenip indirgenemeyeceğini sormak istiyorum, böylece her seferinde sıfırlanmaz, sadece klasörde kalı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 )





 

Daha önce open tanımını şöyle yapmıştım:


   MqlRates mrate[];           // To be used to store the prices, volumes and spread of each bar  
   ArraySetAsSeries (mrate, true );
   if ( CopyRates ( _Symbol , _Period , 0 , 3 ,mrate)< 0 )
     {
       Print ( "Error copying rates/history data - error:" , GetLastError (), "!!" );
       return ( 0 );
     }
   double close=mrate[ 0 ].close; double open=mrate[ 0 ].open;
   double high=mrate[ 0 ].high;   double low=mrate[ 0 ].low;


Bu yöntem sizinkiyle aynı mı?

 //-------------------------------------------------------------------------------------------------------
double iOpen ( string symb, ENUM_TIMEFRAMES tf, int index) {
double Arr[ 1 ];
   return (( CopyOpen (symb,tf,index, 1 ,Arr)== 1 )?Arr[ 0 ]: WRONG_VALUE );
 }
//------------------------------------------------------------------------------




 
Stefan Stoyanov :

böyle bir kod buldum

Bu kodun bir adla bir dosyaya indirgenip indirgenemeyeceğini sormak istiyorum, böylece her seferinde sıfırlanmaz, sadece klasörde kalır

bu satırı çalışma dosyasının başına ekleyin.

 #include  "your_file.mqh" 

your_file.mqh'yi terminalinizin "include" klasörüne yerleştirin

 
Vay! ....mq5 uzantısında elbette bir hata olacaktır.
Dosyalar:
 
Stefan Stoyanov :
Vay! ....mq5 uzantısında elbette bir hata olacaktır.

OnTick() içine kod yerleştirmeyin

bir önceki yazımda size söylediğim gibi, sadece your_file.mqh dosyasını, tanımları ile birlikte Expert_file.mq5 dosyanıza ekleyin.

 
Kirill Belousov :

OnTick() içine kod yerleştirmeyin

bir önceki yazımda size söylediğim gibi, sadece your_file.mqh dosyasını, tanımları ile birlikte Expert_file.mq5 dosyanıza ekleyin.

Çoktan yaptım. Teşekkürler!