초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 841

 
Vitaly Muzichenko :

코드베이스는 라이브러리로 가득 차 있으며 기사 도 있습니다.

알려진 기사 이것은 당신이 필요로하는 것이 아닙니다

매번 정의하기가 불편하다

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


코드베이스는 라이브러리로 가득 차 있지만, 한 번에 마이닝을 할 수 있었던 특정 라이브러리에 대해 아는 사람이 있는지 묻습니다.

 
Stefan Stoyanov :
알려진 기사 이것은 당신이 필요로하는 것이 아닙니다

코드베이스는 라이브러리로 가득 차 있지만 특정 라이브러리에 대해 아는 사람이 있는지 묻습니다.

2-3개의 라이브러리를 가져와야 하며 그 중에서 자신의 라이브러리 중 하나를 수집해야 합니다.

 
Vitaly Muzichenko :

2-3개의 라이브러리를 가져와야 하며 그 중에서 자신의 라이브러리 중 하나를 수집해야 합니다.


그리고 어떻게 특정 라이브러리가 필요한지, 어떻게 통신해야 하는지에 대한 정보를 제공하는 라이브러리 색인은 어디에 있습니까?

일반적으로 나는 라이브러리를 수집하고 만들고 싶지 않습니다.
내 질문은 기성 라이브러리의 존재에 관한 것입니다. 다시 만들면 기사를 통해 작업하는 것이 좋습니다.
 
Stefan Stoyanov :

그리고 어떻게 특정 라이브러리가 필요한지, 어떻게 통신해야 하는지에 대한 정보를 제공하는 라이브러리 색인은 어디에 있습니까?

일반적으로 나는 라이브러리를 수집하고 만들고 싶지 않습니다.
내 질문은 기성 라이브러리의 존재에 관한 것입니다. 다시 만들면 기사를 통해 작업하는 것이 좋습니다.

조립하기가 매우 쉽고 포럼에 더 오래 글을 쓰고 스스로 문제를 만들 수 있습니다.

다음은 일부입니다.

 #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
 

그런 코드를 찾았습니다

이 코드를 이름이 있는 파일로 축소할 수 있는지 묻고 싶습니다. 그래서 매번 재설정되지 않고 폴더에 그대로 있습니다.



 // Позволяет, как в 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 )





 

이전에 다음과 같이 open 을 정의했습니다.


   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;


이 방법이 당신의 방법과 같습니까?

 //-------------------------------------------------------------------------------------------------------
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 :

그런 코드를 찾았습니다

이 코드를 이름이 있는 파일로 축소할 수 있는지 묻고 싶습니다. 그래서 매번 재설정되지 않고 폴더에 그대로 있습니다.

작업 파일의 시작 부분에 이 줄을 추가합니다.

 #include  "your_file.mqh" 

터미널의 "include" 폴더에 your_file.mqh를 배치합니다.

 
휴!! 확장자 ....mq5에는 물론 오류가 있습니다.
파일:
 
Stefan Stoyanov :
휴!! 확장자 ....mq5에는 물론 오류가 있을 것입니다.

OnTick() 내부에 코드를 삽입하지 마십시오.

내 이전 게시물에서 말했듯이 귀하의 Expert_file.mq5에 대한 정의와 함께 your_file.mqh 파일을 포함하십시오.

 
Kirill Belousov :

OnTick() 내부에 코드를 삽입하지 마십시오.

내 이전 게시물에서 말했듯이 귀하의 Expert_file.mq5에 대한 정의와 함께 your_file.mqh 파일을 포함하십시오.

나는 이미 그것을 했다. 감사해요!
사유: