오류, 버그, 질문 - 페이지 1190

 
죄송합니다. MT4에 있습니다.
 
Luckhuman :
죄송합니다. MT4에 있습니다.
#property strict 지시문을 추가해 보세요. 아마도 어떤 종류의 오류가 로그에 기록될 것입니다.
 
Luckhuman :
죄송합니다. MT4에 있습니다.
불행히도 CopySpread() 함수는 MetaTrader 4에서 지원되지 않습니다(도움말에 오류가 있었습니다).
 
Automated-Trading :
불행히도 CopySpread() 함수는 MetaTrader 4에서 지원되지 않습니다(도움말에 오류가 있었습니다).
MT4는 몇 개의 표시기 버퍼를 지원합니까? 17개의 버퍼만 바인딩했습니다.
 
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#include <Object.mqh>

class CDoubleDynArray : public CObject
  {
public:
   double            Buffer[];

                     CDoubleDynArray(void){}
                    ~CDoubleDynArray(void){}
  };

CDoubleDynArray *buffers[];

int OnInit()
  {
//--- indicator buffers mapping
   ArrayResize(buffers,24);
   int i;
   for(i=0;i<ArraySize(buffers);i++)
      buffers[i]=new CDoubleDynArray;

   IndicatorBuffers(ArraySize(buffers));
   SetIndexBuffer(0,buffers[0].Buffer);
   for(i=1;i<ArraySize(buffers);i++)
     {
      if(!SetIndexBuffer(i,buffers[i].Buffer,INDICATOR_CALCULATIONS))
         Print(i," ",GetLastError());
      else
         Print(i," ",ArraySize(buffers[i].Buffer));
     }
//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   IndicatorBuffers(1);
   for(int i=1;i<ArraySize(buffers);i++)
     {
      delete buffers[i];
      buffers[i]=NULL;
     }
   delete buffers[0]; 
   ArrayResize(buffers,0); 
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


 
Luckhuman :


코드의 어디에서 17만 볼 수 있습니까? 당신은 24를 만듭니다

잡지가 무엇을 쓰는지 보여줍니다.

 
Luckhuman :
MT4는 몇 개의 표시기 버퍼를 지원합니까? 17개의 버퍼만 바인딩했습니다.

MT4에는 512개의 버퍼가 있습니다. IndicatorBuffers() :

버퍼 수는 512를 초과할 수 없으며 indicator_buffers 속성에 지정된 값보다 작아야 합니다. 사용자 지정 표시기가 카운트에 대한 추가 버퍼를 필요로 하는 경우 이 함수를 사용하여 총 버퍼 수를 지정합니다.

예에서 다음 행을 추가해야 합니다.

 #property indicator_buffers 24
IndicatorBuffers - Документация на MQL4
  • docs.mql4.com
IndicatorBuffers - Документация на MQL4
 
Automated-Trading :


예에서 다음 행을 추가해야 합니다.

누락된 속성 플롯에 대해 MT5에서와 같은 경고를 만들 수 있습니까?
 
Automated-Trading :

MT4에는 512개의 버퍼가 있습니다. IndicatorBuffers() :

예에서 다음 행을 추가해야 합니다.

이 줄에서 버퍼 수를 지정합니다.

IndicatorBuffers( ArraySize (buffers));

다음은 결과의 스크린샷입니다.

 
Automated-Trading :

MT4에는 512개의 버퍼가 있습니다. IndicatorBuffers() :

예에서 다음 행을 추가해야 합니다.

 #property indicator_buffers 24

이 라인은 작동합니다. 그러나 IndicatorBuffers() 함수는 작동하지 않습니다. 코드에서 값 24와 함께 사용되는 것은

실례합니다. 템플릿 표시기부터 시작하여 코드를 테스트 예제로 줄였습니다. 표시기에는 다음 줄이 포함되어 있습니다.

 #property indicator_buffers 1
#property indicator_plots    1