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

 
Mikhail Toptunov # :

Nasıl olduğunu çözemediğim prev_calculated hesaplamasının bir analogunun nasıl organize edileceğini önerebilir misiniz? Derslerde gezinmekte zorlanıyorum.


 BarsCalculated - 1 ?
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CNewBar::PrevCalculated( void )
  {
   int pc=( int )( this .RatesTotal()- this .m_rt);
   return (pc);
  }
//+------------------------------------------------------------------+
//| CNewBar IsNewBar Основная функция класса                         |
//+------------------------------------------------------------------+
bool CNewBar::IsNewBar( void )
  {
   datetime tm= this .Time();
   Print ( "this.m_time " , this .m_time, " tm " ,tm, " this.m_pc " , this .m_pc, " this.m_rt " , this .m_rt);
   if (tm== 0 )
       return false ;
   if (tm!= this .m_time)
     {
       //--- определяем время
       this .m_time=tm;
       //--- определяем кол-во
        this .m_pc= this .PrevCalculated();
        this .m_rt=( int ) this .RatesTotal();
       return true ;
     }
   this .m_pc=( int ) this .m_rt;
   return false ;
  }

Ben böyle yaptım daha mantıklı bir yöntem söylerseniz harika olur!!!

 
Fast235 # :

Bu sistem için daha becerikli ama benim yaptığımdan daha verimli, sürdürülebilirlik açısından düşünüyorum.

 
Mikhail Toptunov # :

Ben böyle yaptım daha mantıklı bir yöntem söylerseniz harika olur!!!

Saçmalık bozuk mantık. Aşağıda daha doğru.




class CNewBar : public CObject
  {
private :
   string             m_symbol;
   ENUM_TIMEFRAMES    m_timeframe;
   datetime           m_time;
   int                m_rt;
   int                m_pc;
   datetime           Time( void );
   int                PrevCalculated( void );
   int                RatesTotal( void );
   string              Symbol ( void )         { return this .m_symbol;    }
public :
   ENUM_TIMEFRAMES    Timeframe( void )      { return this .m_timeframe; }
   datetime           GetTime( void )        { return this .m_time;      } //  Возвращает время последнего обращения
   int                GetRatesTotal( void )  { return this .m_rt;        }
   int                GetPrevCalculated( void ) { return this .m_pc;       }
   bool               IsNewBar( void );                                   //  Основная функция класса
                     CNewBar( const string symbol, const ENUM_TIMEFRAMES timeframe);
                    ~CNewBar( void ) {;}
  };
//+------------------------------------------------------------------+
//| Кол-во отработанных                                              |
//+------------------------------------------------------------------+
int CNewBar::PrevCalculated( void )
  {
   int _rt= this .RatesTotal();
   int rt=_rt-(_rt- this .m_rt);
   return (rt < 0 ? 0 : rt);
  }
//+------------------------------------------------------------------+
//| CNewBar IsNewBar Основная функция класса                         |
//+------------------------------------------------------------------+
bool CNewBar::IsNewBar( void )
  {
   datetime tm= this .Time();
   int       rt= this .RatesTotal();
   if (tm== 0 )
       return false ;
   if (tm!= this .m_time)
     {
       //--- определяем время
       this .m_time=tm;
       //--- определяем кол-во
       this .m_pc= this .PrevCalculated();
       this .m_rt=rt;
       return true ;
     }
     this .m_pc=rt< 0 ? 0 : rt;
   return false ;
  }

Ancak bazı nedenlerden dolayı, değerlere başlarken sıfır sarı bir şeritle işaretlenmiştir.

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   for ( int i= 1 ; i< 2 ; i++)
     {
       ENUM_TIMEFRAMES n_period=( ENUM_TIMEFRAMES )GetPeriodEnumerator(( uchar )i);
      CNewBar *nb = new CNewBar( Symbol (), n_period);
       if (nb== NULL )
         continue ;
       if (!list_new_bar.Add(nb))
        {
         delete nb;
         continue ;
        }
       Print (nb.IsNewBar(), " ***** " , Symbol (), " ***** " , nb.Timeframe(), " RatesTotal " ,nb.GetRatesTotal(), " Calculated " ,nb.GetPrevCalculated());
     }
//--- create timer
   EventSetTimer ( 1 );

//---
   return ( INIT_SUCCEEDED );
  }
 
Mikhail Toptunov # :

Saçmalık bozuk mantık. Aşağıda daha doğru.

Ancak bir nedenden dolayı, değerin başlangıcında sıfır sarı bir şeritle işaretlenmiştir.

yeni bir bar mı inşa ediyorsun?

 
Fast235 # :

yeni bir bar mı inşa ediyorsun?

Stratejiyi uygulamak için parametrelere ihtiyacım var

RatesTotal
PrevCalculated

Ve tüm TF'leri sıralayabilme özelliğine sahip bonus olarak yeni bir çubuk

yine de her bir çubuk için fiyatı hesaplamanız gerekiyor

 //+------------------------------------------------------------------+
//| Расчет цены                                                      |
//+------------------------------------------------------------------+
int CNewBar::PriceHL2( void )
  {
   int res= ArrayResize ( this .m_pr_hl2, this .m_rt);
   for ( int b= this .m_pc; b< this .m_rt; b++)
      m_pr_hl2[b]= MathAbs (( iHigh ( this .m_symbol, this .m_timeframe,b) + iLow ( this .m_symbol, this .m_timeframe,b))/ 2 );
   return (res);
  }

Ama Expert Advisor'daki diziyi ayıklarken değerler çıksa da çıkaramıyorum



Onu bir uzmana havale etmek nasıl daha okuryazar olurdu? Hesaplama için gerekli parametre


 
Herkese selam! Lütfen bize bir ticaret robotunun bir ticaret danışmanından nasıl farklı olduğunu söyleyin?
 
Daniil Osipov # :
Herkese selam! Lütfen bize bir ticaret robotu ile bir ticaret danışmanı arasındaki farkın ne olduğunu söyleyin?

Kelime oyunu.

 
Gösterge alt penceresinin numarasını nasıl bulabilir?
Örneğin, alt pencerenize bir şeyler yazmak veya çizmek için.
"IndicatorGetInteger" türünde açık bir işlev bulamadım.
 
Evgeny Dyuka # :
Gösterge alt penceresinin numarasını nasıl bulabilir?
Örneğin, alt pencerenize bir şeyler yazmak veya çizmek için.
"IndicatorGetInteger" türünde açık bir işlev bulamadım.
GrafikPencereBul
Документация по MQL5: Операции с графиками / ChartWindowFind
Документация по MQL5: Операции с графиками / ChartWindowFind
  • www.mql5.com
ChartWindowFind - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5