初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 266

 
jommerbot:

なるほど、一番シンプルなケースでもうまくいかないんですね。

自分のミスがどこにあるのか理解できない。同じインジケータのバッファをEAやスクリプトでコピーするとうまくいくが、インジケータではうまくいかない。インジケータ・ハンドルはエラーなく初期化されます。

違いを見つける。)

#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrRed
//---
double ExtLineBuffer[];
int    iRocHandleEURUSD =INVALID_HANDLE;
int    iPlotShift       =0;
int    iPeriod          =6;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA);
   PlotIndexSetInteger(0,PLOT_SHIFT,iPlotShift);
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,iPeriod-1);
//---
   iRocHandleEURUSD=iCustom("EURUSD",0,"Examples\\ROC");
   if(iRocHandleEURUSD==INVALID_HANDLE)
      Print("Не удалось получить хендл индикатора ROC EURUSD");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//---
   if(rates_total<iPeriod)
      return(0);
//---
   int first=0;
   double aRocRatesEURUSD[];
   ArraySetAsSeries(ExtLineBuffer,true);
//---
   if(prev_calculated==0)
      first=0;
   else
      first=prev_calculated-1;
//---
   for(int bar=first; bar<rates_total; bar++)
     {
      CopyBuffer(iRocHandleEURUSD,0,bar,1,aRocRatesEURUSD);
      Print("bar: ",bar,"; value: ",DoubleToString((aRocRatesEURUSD[0]!=EMPTY_VALUE)?aRocRatesEURUSD[0]:0,2));
      ExtLineBuffer[bar]=aRocRatesEURUSD[0];
     }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

最後のバージョンのコードでは、インジケータハンドラが変数の間違ったスコープに入り込んでいたんだ。懐かしいです、ありがとうございます。しかし、一つ問題があります。テスターでは、テスト 期間開始前のヒストリカルバーでは、インジケータは 正常に動作しますが、テスト期間開始後は、新しく到着したティックは考慮されません。例:子ディケータのバッファが更新されない。

 

良い人は、コードを修正するために助けてください、そのジョブラインから顧問の "入力パラメータ "で
extern string Lot = "0.2 0.2 0.3 0.4 0.5"; // (スペースを介して)
最後の値(この場合は0.5)は無限に繰り返すだろう、すなわち、入力しない
"0.2 0.2 0.3 0.4 0.5 0.5 0.5" 0.5 0.5 0.5 0.5;

//----------------------------

StringToArrayLot(Lot,xiLot)です。

//---------------------------------------------------

int StringToArrayLot(string st,double &ad[])
{
int i=0,np; string stp;ArrayResize(ad,0);
while(StringLen(st)>0)
{
np=StringFind(st," ");
if(np<0)
{
stp=st;
st="";
}.else{
stp=StringSubstr(st,0,np);
st=StringSubstr(st,np+1);
}
i++;
ArrayResize(ad,i);
ad[i-1]=StrToDouble(stp);
}
return(ArraySize(ad));
}.

 
ウェブサイトや端末で自分のEAが表示されないのはなぜですか?
 
Krasev157:
ウェブサイトや端末で自分のEAが表示されないのはなぜですか?
ウェブサイトで見るには、アップロードする必要があります。ターミナルでコンパイルする場合。
 
zfs:
サイトで見るには、アップロードする必要があります。ターミナルでコンパイルする場合。

プロフィールに表示されないのですが、どうしたらいいですか?

 
Krasev157:

プロフィールに表示されないので、ウェブサイトに掲載します。

アルバニア語の辞書のリンク先を教えてください。
 
barabashkakvn:
アルバニア語の辞書のリンク先を教えてください。

http://www.txtblog.ru/blog/1165306807 はい、どうぞ

 
Krasev157:

http://www.txtblog.ru/blog/1165306807 はい、どうぞ

ハッタールさんが燃 えています。

さあ!

バジンガ!

 
こんにちは、もしご迷惑でなければ教えていただけませんか?過去5ティックの価格を配列に入れるにはどうしたらよいですか?
理由: