MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1444

 

이렇게 할 수 있습니다. 이름의 불변 부분이 앞에 오고 그 다음 "RED-LINE"이 오고 이름의 변수 부분이 앞에 옵니다.

이제 접두사는 이름의 변경할 수 없는 부분에 "RED-LINE"을 더한 것입니다.

 
Aleksei Stepanenko :

이렇게 할 수 있습니다. 이름의 불변 부분이 앞에 오고 그 다음 "RED-LINE"이 오고 이름의 변수 부분이 앞에 옵니다.

이제 접두사는 이름의 변경할 수 없는 부분에 "RED-LINE"을 더한 것입니다.

그곳에서 앞서가는 것이 변하고 있습니다. 질문은 정확히 이름 중간에 있는 것입니다.

 
Andrey Sokolov :

그곳에서 앞서가는 것이 변화하고 있습니다. 질문은 정확히 이름 중간에 있는 것입니다.

글쎄, 당신은 그렇게 당신을 도우려는 사람들을 비웃을 수 없습니다 ...

객체는 어디에서 생성됩니까? 객체 이름은 어떻게 형성됩니까?

 
Alexey Viktorov :

글쎄, 당신은 그렇게 당신을 도우려는 사람들을 비웃을 수 없습니다 ...

확인

 

iMAOnArray () 질문

mql5에 적용하는 방법에 대한 코드가 있습니까?

   double buff[ 1 ];
   for (i = 0 ; i < counter; i++)
      Array[i] = 2.0 * ma(i, val) - ma(i, a);
   for (i = 0 ; i < counter - a; i++)
     // buf_3[i] = iMAOnArray(Array, 0, period, 0, MODE_SMMA, i) ; // Оригинал mql4
      buf_3[i] = iMA(NULL, 0, period, 0, MODE_SMMA, PRICE_LOW); ???
      CopyBuffer(10,0,i,1,buff); ???
      buf_3[i] = buff[ 0 ];
 

안녕하세요.

나중에 어드바이저가 작업할 수 있도록 어드바이저에서 특정 가격으로 운전할 수 있는 "창"을 만드는 방법을 알려주세요. (그림 참조)

파일:
GBPUSDM5.png  35 kb
 
SanAlex :

방법은 다음과 같습니다. https://www.mql5.com/en/articles/81

읽었습니다. 너무 무겁고 최적화되지 않은 코드입니다.

 
SanAlex :

방법은 다음과 같습니다. https://www.mql5.com/en/articles/81

방법이 최선은 아닙니다.

 
Vitaly Muzichenko :

iMAOnArray () 질문

mql5에 적용하는 방법에 대한 코드가 있습니까?

   double buff[ 1 ];
   for (i = 0 ; i < counter; i++)
      Array[i] = 2.0 * ma(i, val) - ma(i, a);
   for (i = 0 ; i < counter - a; i++)
     // buf_3[i] = iMAOnArray(Array, 0, period, 0, MODE_SMMA, i) ; // Оригинал mql4
      buf_3[i] = iMA(NULL, 0, period, 0, MODE_SMMA, PRICE_LOW); ???
      CopyBuffer(10,0,i,1,buff); ???
      buf_3[i] = buff[ 0 ];

Array[]는 버퍼여야 합니다(지시자인 경우)

그리고 이제 표준 분포를 살펴보십시오. \MQL5\Include\MovingAverages.mqh - 버퍼에 계산이 있습니다. Such-and-such-MAOnBuffer()

 
Artyom Trishkin :

Array[]는 버퍼여야 합니다(지시자인 경우)

그리고 이제 표준 분포를 살펴보십시오. \MQL5\Include\MovingAverages.mqh - 버퍼에 계산이 있습니다. Such-and-such-MAOnBuffer()

고맙습니다!

시도했는데 오류가 발생했습니다. 잘못된 작업을 수행하고 있습니다.

   double buff[];
   for (i = 0 ; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);
   for (i = 0 ; i < counter - a; i++) {
       // buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i);
      SmoothedMAOnBuffer(rates_total, prev_calculated, i, period, Array_1, buff);
      buf_3[i] = buff[ 0 ];
   }
....

//+------------------------------------------------------------------+
int SmoothedMAOnBuffer( const int rates_total, const int prev_calculated, const int begin, const int period, const double & price[], double & buffer[])
{
//--- check period
   if (period<= 1 || period>(rates_total-begin))
       return ( 0 );
//--- save as_series flags
   bool as_series_price= ArrayGetAsSeries (price);
   bool as_series_buffer= ArrayGetAsSeries (buffer);
   ArraySetAsSeries (price, false );
   ArraySetAsSeries (buffer, false );
//--- calculate start position
   int start_position;
   if (prev_calculated== 0 ) { // first calculation or number of bars was changed
       //--- set empty value for first bars
      start_position=period+begin;
       for ( int i= 0 ; i<start_position- 1 ; i++)
         buffer[i]= 0.0 ; // array out of range (188,16)
       //--- calculate first visible value
       double first_value= 0 ;
       for ( int i=begin; i<start_position; i++)
         first_value+=price[i];
      buffer[start_position- 1 ]=first_value/period;
   } else
      start_position=prev_calculated- 1 ;
//--- main loop
   for ( int i=start_position; i<rates_total; i++)
      buffer[i]=(buffer[i- 1 ]*(period- 1 )+price[i])/period;
//--- restore as_series flags
   ArraySetAsSeries (price,as_series_price);
   ArraySetAsSeries (buffer,as_series_buffer);
//---
   return (rates_total);
}
//+------------------------------------------------------------------+