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

 

친구, 저는 mql5에서 손을 보려고 합니다. "제로 막대"에서 iMA 표시기 데이터를 얻는 방법, 즉 현재 막대에서 표시기 값을 얻는 방법을 알려주십시오.

내가 그렇게 하면

 int OnInit ()
{handle.MA_CHART= iMA ( _Symbol , _Period ,period_MA_CHART, 0 ,Signal_MA_Method,Signal_MA_Applied);}

void OnTick ()
{ CopyBuffer (handle.MA_CHART, 0 , 0 , 3 , ind_date.MA_CHART);}


호출 시

ind_date.MA_CHART[ 0 ]

현재 막대가 아닌 이전 막대의 데이터를 얻습니다.

 
Yury Smagin :

친구, 저는 mql5에서 손을 보려고 합니다. "제로 막대"에서 iMA 표시기 데이터를 얻는 방법, 즉 현재 막대에서 표시기 값을 얻는 방법을 알려주십시오.

내가 그렇게 하면


호출 시

현재 막대가 아닌 이전 막대의 데이터를 얻습니다.

어레이 필요

 ArraySetAsSeries (ind_date.MA_CHART, true );

그런 다음 배열에서 인덱스가 "0"인 요소는 차트의 가장 오른쪽 막대에 해당합니다.

 
Vladimir Karputov :

어레이 필요

그런 다음 배열에서 인덱스가 "0"인 요소는 차트의 가장 오른쪽 막대에 해당합니다.

덕분에!
 
Yury Smagin :

친구, 저는 mql5에서 손을 보려고 합니다. "제로 막대"에서 iMA 표시기 데이터를 얻는 방법, 즉 현재 막대에서 표시기 값을 얻는 방법을 알려주십시오.

내가 그렇게 하면


호출 시

현재 막대가 아닌 이전 막대의 데이터를 얻습니다.

그 영화에서처럼 "막연한 의심이 나를 괴롭힌다 ..." 당신은 내 조언자를 연구에 사용합니까?

배열을 뒤집을 필요가 없습니다. 배열의 두 번째 인덱스 값을 취하는 것으로 충분합니다.

ind_date.MA_CHART[ 2 ]
 

OBJPROP_BACK

이런 식으로 시도했습니다. 하지만 그렇지 않습니다. 어떻게 작동하는지 전혀 명확하지 않습니다.

값에 관계없이 개체는 형성 순서(둘 중 마지막 쪽, 더 높은 쪽)로 간단하게 표시됩니다.

그리고 개체가 2개 이상인 경우 개체의 레벨(레이어)을 조정하는 방법은 무엇입니까? 다른 설정이 있는게 아닐까요? 누가 알겠어, 말해봐, plz.

 
Alexey Viktorov :

그 영화에서처럼 "막연한 의심이 나를 괴롭힌다 ..." 당신은 내 조언자를 연구에 사용합니까?

배열을 뒤집을 필요가 없습니다. 배열의 두 번째 인덱스 값을 취하는 것으로 충분합니다.

덕분에!

 

모두에게 행운을 빕니다))


말해봐, 결과에 차이가 나는 이유는 무엇입니까?

 //+------------------------------------------------------------------+
//|  exponential moving average multytimeframes   ДЛЯ БУФЕРА         |
//+------------------------------------------------------------------+
void CalculateExponentialMA( int rates_total, int prev_calculated, int begin, const double &price[])
  {
   int     i,limit;
   double SmoothFactor= 2.0 /( 1.0 +period_ma);
//--- first calculation or number of bars was changed
   if (prev_calculated== 0 )
     {
      limit=period_ma+begin;
      ExtLineBuffer[begin]=price[begin];
   for (i=begin+ 1 ;i<limit;i++)
         ExtLineBuffer[i]=price[i]*SmoothFactor+ExtLineBuffer[i- 1 ]*( 1.0 -SmoothFactor);
     }
   else limit=prev_calculated- 1 ;
//--- main loop
   for (i=limit;i<rates_total && ! IsStopped ();i++)
      ExtLineBuffer[i]=price[i]*SmoothFactor+ExtLineBuffer[i- 1 ]*( 1.0 -SmoothFactor);
//---
  }
//+------------------------------------------------------------------+
//|  exponential moving average       ДЛЯ ТОЧКИ                      |
//+------------------------------------------------------------------+
void CalculateEMA( int periodMA, int bgn)
  {
 int i,lmt=periodMA+bgn+ 1 ;
 double SmoothFactor= 2.0 /( 1.0 +periodMA);
   for (i= 0 ;i<lmt;i++)
              BufferPrice[i]= 0.0 ;
   switch (AppliedPrice)
     {
       case 1 : BufferPrice[lmt]= iClose ( NULL ,Timeframes,lmt); break ;
       case 2 : BufferPrice[lmt]= iOpen ( NULL ,Timeframes,lmt);   break ;
       case 3 : BufferPrice[lmt]= iHigh ( NULL ,Timeframes,lmt);   break ;
       case 4 : BufferPrice[lmt]= iLow ( NULL ,Timeframes,lmt);   break ;
   default :  BufferPrice[lmt]= iClose ( NULL ,Timeframes,lmt); break ;
     }
   for (i=lmt- 1 ;i>= 0 ;i--)
   switch (AppliedPrice)
     {
       case 1 : BufferPrice[i]= iClose ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor); break ;
       case 2 : BufferPrice[i]= iOpen ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor);   break ;
       case 3 : BufferPrice[i]= iHigh ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor);   break ;
       case 4 : BufferPrice[i]= iLow ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor);   break ;
   default :  BufferPrice[i]= iClose ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor); break ;
     }
      MA= NormalizeDouble (BufferPrice[bgn], _Digits );
  }
//+------------------------------------------------------------------+

질문: MA 계산의 두 번째 버전에서 내가 무엇을 잘못 썼습니까?

감사해요)))

 
최적화할 때 차트에서 읽을 수 있도록 그래픽 개체가 만들어졌습니까?
 
Aleksey Vyazmikin :
최적화할 때 차트에서 읽을 수 있도록 그래픽 개체가 만들어졌습니까?

아니다

 
Artyom Trishkin :

아니다

심하게...

사유: