初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 100 1...93949596979899100101102103104105106107...260 新しいコメント Vladim1203 2017.10.19 17:39 #991 こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには全て正しく書かれているようですが、プログラムが何らかの理由で正しく取引できませんアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。EAコードについては、下記および添付ファイルをご参照ください。//+-----------------------------------------------------------------------------------------------+//|Spacing_Candles。mq4|(エムキューブ//|Copyright 2017, Vladim|ブラディム//|vkcom/id229534564|株式会社ゆめかな//|メールVladim120385@yandex.ru |//+-----------------------------------------------------------------------------------------------+#property copyright "著作権 2017, Vladim"#プロパティリンク "vk.com/id229534564"#property version "1.00"#プロパティの厳密さ//--- EAパラメータextern string paramEA = ""; // パラメータ EAextern double volume = 0.01; // ボリュームextern double stopLoss = 5; // StopLoss.extern double takeProfit = 1.5; // テイクプロフィットextern double maxSpacing = 150; // MaxSpacingextern double minSpacing = 30; // 最小の間隔extern double TrailingStop = 0; // TrailingStopextern int magic = 127; // マジック//---グローバル変数datetime newCandle;int tipです。//+-----------------------------------------------------------------------------------------------+int OnInit(){return(INIT_SUCCEEDED);}//+-----------------------------------------------------------------------------------------------+void OnDeinit(const int reason){}//+-----------------------------------------------------------------------------------------------+void OnTick(){if(newCandle != Time[0]) FindPattern();newCandle = Time[0];}//+-----------------------------------------------------------------------------------------------+void OpenOrder(int type) // 成行注文を出す{if(type == OP_BUY) if(OrderSend(_Symbol, OP_BUY, volume, Ask, 0, 0, "", magic, 0))SetSLTP(OP_BUY)を設定します。if(type == OP_SELL) if(OrderSend(_Symbol, OP_SELL, volume, Bid, 0, 0, 0, "", magic, 0))SetSLTP(OP_SELL)を設定します。}//+-----------------------------------------------------------------------------------------------+void SetSLTP(int type) //ストップオーダーの設定{double sl = 0;double tp = 0;if(type == OP_BUY)for(int i = 0; i < オーダートータル(); i++)if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_BUY && OrderStopLoss() == 0){sl = NormalizeDouble(Low[1] - stopLoss * _Point, _Digits);tp = NormalizeDouble(OrderOpenPrice() + (OrderOpenPrice() - Low[1]))* takeProfit, Digits);if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) return;}if(type == OP_SELL)for(int i = 0; i < オーダートータル(); i++)if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_SELL && OrderStopLoss() == 0){sl = NormalizeDouble(High[1] + stopLoss * _Point, _Digits);tp = NormalizeDouble(OrderOpenPrice() - (High[1] - OrderOpenPrice()))* takeProfit, Digits);if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) return;}}//+-----------------------------------------------------------------------------------------------+void FindPattern() // ローソク足間の長い距離を探す{if(高値[1]<高値[2] && ビッド>高値[1] && 低値[1]<低値[2]){double spacing = NormalizeDouble((High[2] - High[1]) / _Point, 0);if(maxSpacing >= spacing && minSpacing <= spacing)OpenOrder(OP_BUY)です。}if(安値[1] > 安値[2] && ビッド < 安値[1] && 高値[1] > 高値[2]){double spacing = NormalizeDouble((Low[1] - Low[2]) / _Point, 0);if(maxSpacing >= spacing && minSpacing <= spacing)OpenOrder(OP_SELL)です。}{if(TrailingStop!=0) TrailingStop();}}//+-----------------------------------------------------------------------------------------------+void TrailingStop(){double StLo,OSL,OOP;bool error=true とする。for (int i=0; i<OrdersTotal(); i++){if (OrderSelect(i, SELECT_BY_POS)){tip = OrderType();if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){OSL = NormalizeDouble(OrderStopLoss(),Digits)。OOP = NormalizeDouble(OrderOpenPrice(),Digits)。if (tip==0){StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits)です。if (StLo < OOP) continue;if (StLo > OSL)error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White)。}if (tip==1){StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits)です。if (StLo > OOP) continue;if (StLo < OSL || OSL==0 )error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White)。}if (!error) Alert("Error TrailingStop ",GetLastError()," ",Symbol()," SL ",StLo);}}}}//+-----------------------------------------------------------------------------------------------+ ファイル: BUY_SELL.jpg 41 kb Spacing_Candles.mq4 11 kb Questions from Beginners MQL4 MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - Vitaly Muzichenko 2017.10.19 17:48 #992 Vladim1203:こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには正しく書かれているようですが、プログラムがなぜか正しく取引されないのですアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。EAコードは以下と添付ファイルをご覧ください。もう十分かもね、自分でスレを作りながら、どのスレにも書き込みを積み重ねてるんだから。 Baruandreas 2017.10.19 17:49 #993 kuzhakov:こんにちは。 EAの取引を時間帯で制限する方法を教えてください。 フォーラムにあった方法をいろいろ試しましたが、何もうまくいかず、ライティングについて何も理解できていません。 何を入れたらいいのか、指南してもらえるとありがたいですね。 起動後に挿入すると、eXpertは毎日、端末上で指定した時間間隔で取引しますint val=Hour(); double min=Minute(); double Dl = val + min/100; double L = xxxx+xxxx/100; //час + минуты вместо хххх - это начало времени double P = xxxx+xxxx/100; //час + минуты вместо хххх - это конец времени if(Dl<L)return; if(Dl>P)return; Baruandreas 2017.10.20 04:14 #994 Vladim1203:こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには全て正しく書かれているようですが、プログラムが何らかの理由で正しく取引できませんアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。以下のEAコードと、添付ファイルをご覧ください。チェック・コンディション・オブ・セールス・エントリー Konstantin Erin 2017.10.20 17:06 #995 Vladim1203:こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには正しく書かれているようですが、プログラムがなぜか正しく取引されないのですアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。以下のEAコードと添付ファイルをご覧ください。まず、見つけたローソクをチャート上にマークするEAの部分を書くと、すべてが明確になります。また、以下の行は、あなたの場合、不要です。extern string paramEA = ""; // Parameters EA и //+-----------------------------------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+-----------------------------------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+-----------------------------------------------------------------------------------------------+ Mikhail Tkachev 2017.11.03 15:20 #996 コミュニティに協力してください ...* フォーラムからカルマンフィルタのインジケータをダウンロードしました(ソースコード添付)。 チャート上はすべて正常です。 Expert Advisorで読み込もうとすると、以下の行が表示されます。 iValue=iCustom(NULL,timeframe,"Kalmanfilter", 4,1,1 ,0,1);明らかに指標とは関係のない、同じ大きな数値を出力します。それは何でしょう? ファイル: Kalmanufilter.mq4 4 kb Alekseu Fedotov 2017.11.03 15:52 #997 MikeZv:地域社会からの協力 ...* フォーラムからカルマンフィルタのインジケータをダウンロードしました(ソースコード添付)。 チャート上はすべて正常です。 Expert Advisorで読み込もうとすると、以下の行が表示されます。 iValue=iCustom(NULL,timeframe,"Kalmanfilter", 4,1,1 ,0,1);明らかに指標とは関係のない、同じ大きな数値を出力します。それは何でしょう?EMPTY_VALUE インジケーターバッファに 空値がある2147483647 (0x7FFFFFF) Mikhail Tkachev 2017.11.03 15:54 #998 Alekseu Fedotov:EMPTY_VALUE インジケーターバッファに 空値がある2147483647 (0x7FFFFFF):)もう見つけたんだ. なぜ出るのでしょうか? Nikolay Ivanov 2017.11.03 16:47 #999 MikeZv: :)もう見つけたんだ. でも、なぜ出てくるの?2色あるので、インジケータは2つの配列を持っています。バー上に 1 番目の色の線があるとき、2 番目の色の配列はEMPTY_VALUE に等しい。iValue=iCustom(NULL,timeframe, "Kalmanfilter", 4,1,1,0,1);iValue = EMPTY_VALUE とすると、1バー上のラインはオレンジ色になります。(配列の青がEMPTY_VALUEであるため)。 Mikhail Tkachev 2017.11.03 18:00 #1000 Nikolay Ivanov: 2色あるので、インジケータは2つの配列を持っています。バー上に 1 番目の色の線があるとき、2 番目の色の配列はEMPTY_VALUE に等しい。iValue=iCustom(NULL,timeframe, "Kalmanfilter", 4,1,1,0,1);iValue = EMPTY_VALUE とすると、1バー上のラインはオレンジ色になります。(青い配列=EMPTY_VALUEなので)。ありがとう、ニコライ...。 両方のラインから取りました。 そして、それらを1つに統合した(バッファを1つ残した)。同じ結果です。* そんな疑問があります。 このインジケーターはdraw_begin=500という変数を持っています。つまり、チャートが描画される端から(最も新しいローソク足から)何番目のローソク足かです。 また、iCustom()メソッドでインジケータの値を抽出した場合、この500ポイントはどのローソク足からカウントされるのでしょうか? なぜ重要かというと、draw_beginは描画に使われるだけでなく、インジケータの計算にも参加しているからです。 1...93949596979899100101102103104105106107...260 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには全て正しく書かれているようですが、プログラムが何らかの理由で正しく取引できませんアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。EAコードについては、下記および添付ファイルをご参照ください。
//+-----------------------------------------------------------------------------------------------+
//|Spacing_Candles。mq4|(エムキューブ
//|Copyright 2017, Vladim|ブラディム
//|vkcom/id229534564|株式会社ゆめかな
//|メールVladim120385@yandex.ru |
//+-----------------------------------------------------------------------------------------------+
#property copyright "著作権 2017, Vladim"
#プロパティリンク "vk.com/id229534564"
#property version "1.00"
#プロパティの厳密さ
//--- EAパラメータ
extern string paramEA = ""; // パラメータ EA
extern double volume = 0.01; // ボリューム
extern double stopLoss = 5; // StopLoss.
extern double takeProfit = 1.5; // テイクプロフィット
extern double maxSpacing = 150; // MaxSpacing
extern double minSpacing = 30; // 最小の間隔
extern double TrailingStop = 0; // TrailingStop
extern int magic = 127; // マジック
//---グローバル変数
datetime newCandle;
int tipです。
//+-----------------------------------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+-----------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+-----------------------------------------------------------------------------------------------+
void OnTick()
{
if(newCandle != Time[0]) FindPattern();
newCandle = Time[0];
}
//+-----------------------------------------------------------------------------------------------+
void OpenOrder(int type) // 成行注文を出す
{
if(type == OP_BUY) if(OrderSend(_Symbol, OP_BUY, volume, Ask, 0, 0, "", magic, 0))SetSLTP(OP_BUY)を設定します。
if(type == OP_SELL) if(OrderSend(_Symbol, OP_SELL, volume, Bid, 0, 0, 0, "", magic, 0))SetSLTP(OP_SELL)を設定します。
}
//+-----------------------------------------------------------------------------------------------+
void SetSLTP(int type) //ストップオーダーの設定
{
double sl = 0;
double tp = 0;
if(type == OP_BUY)
for(int i = 0; i < オーダートータル(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_BUY && OrderStopLoss() == 0)
{
sl = NormalizeDouble(Low[1] - stopLoss * _Point, _Digits);
tp = NormalizeDouble(OrderOpenPrice() + (OrderOpenPrice() - Low[1]))* takeProfit, Digits);
if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) return;
}
if(type == OP_SELL)
for(int i = 0; i < オーダートータル(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_SELL && OrderStopLoss() == 0)
{
sl = NormalizeDouble(High[1] + stopLoss * _Point, _Digits);
tp = NormalizeDouble(OrderOpenPrice() - (High[1] - OrderOpenPrice()))* takeProfit, Digits);
if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) return;
}
}
//+-----------------------------------------------------------------------------------------------+
void FindPattern() // ローソク足間の長い距離を探す
{
if(高値[1]<高値[2] && ビッド>高値[1] && 低値[1]<低値[2])
{
double spacing = NormalizeDouble((High[2] - High[1]) / _Point, 0);
if(maxSpacing >= spacing && minSpacing <= spacing)
OpenOrder(OP_BUY)です。
}
if(安値[1] > 安値[2] && ビッド < 安値[1] && 高値[1] > 高値[2])
{
double spacing = NormalizeDouble((Low[1] - Low[2]) / _Point, 0);
if(maxSpacing >= spacing && minSpacing <= spacing)
OpenOrder(OP_SELL)です。
}
{
if(TrailingStop!=0) TrailingStop();
}
}
//+-----------------------------------------------------------------------------------------------+
void TrailingStop()
{
double StLo,OSL,OOP;
bool error=true とする。
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
{
OSL = NormalizeDouble(OrderStopLoss(),Digits)。
OOP = NormalizeDouble(OrderOpenPrice(),Digits)。
if (tip==0)
{
StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits)です。
if (StLo < OOP) continue;
if (StLo > OSL)
error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White)。
}
if (tip==1)
{
StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits)です。
if (StLo > OOP) continue;
if (StLo < OSL || OSL==0 )
error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White)。
}
if (!error) Alert("Error TrailingStop ",GetLastError()," ",Symbol()," SL ",StLo);
}
}
}
}
//+-----------------------------------------------------------------------------------------------+
こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには正しく書かれているようですが、プログラムがなぜか正しく取引されないのですアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。EAコードは以下と添付ファイルをご覧ください。
もう十分かもね、自分でスレを作りながら、どのスレにも書き込みを積み重ねてるんだから。
こんにちは。
EAの取引を時間帯で制限する方法を教えてください。
フォーラムにあった方法をいろいろ試しましたが、何もうまくいかず、ライティングについて何も理解できていません。
何を入れたらいいのか、指南してもらえるとありがたいですね。
起動後に挿入すると、eXpertは毎日、端末上で指定した時間間隔で取引します
こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには全て正しく書かれているようですが、プログラムが何らかの理由で正しく取引できませんアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。以下のEAコードと、添付ファイルをご覧ください。
チェック・コンディション・オブ・セールス・エントリー
こんにちは、皆さん、EAのコードのエラーを見つけるのを手伝ってくれませんか、全てに目を通したつもりです、コードには正しく書かれているようですが、プログラムがなぜか正しく取引されないのですアイデアはこれです:アドバイザーは、同じ方向の2つの長いろうそく(ろうそく間の長さは、方向に応じて、2つの最小または最大ろうそく間、すなわち、顧問で調整可能です)を探している反対方向の価格が最後のろうそくの最小または最大を壊した場合、取引が開かれるべきである(ファイルに添付のチャート上の例の画像の状況)。本来であれば、そのような状況になるたびに取引を行うべきですが、なぜか日中の取引時間帯にしか取引を行いません。ここでは、プログラマから難しいことではありません、助けてください、エラーを修正する状況です。以下のEAコードと添付ファイルをご覧ください。
まず、見つけたローソクをチャート上にマークするEAの部分を書くと、すべてが明確になります。また、以下の行は、あなたの場合、不要です。
コミュニティに協力してください ...
*
フォーラムからカルマンフィルタのインジケータをダウンロードしました(ソースコード添付)。
チャート上はすべて正常です。
Expert Advisorで読み込もうとすると、以下の行が表示されます。
iValue=iCustom(NULL,timeframe,"Kalmanfilter", 4,1,1 ,0,1);
明らかに指標とは関係のない、同じ大きな数値を出力します。
それは何でしょう?
地域社会からの協力 ...
*
フォーラムからカルマンフィルタのインジケータをダウンロードしました(ソースコード添付)。
チャート上はすべて正常です。
Expert Advisorで読み込もうとすると、以下の行が表示されます。
iValue=iCustom(NULL,timeframe,"Kalmanfilter", 4,1,1 ,0,1);
明らかに指標とは関係のない、同じ大きな数値を出力します。
それは何でしょう?
EMPTY_VALUE
インジケーターバッファに 空値がある
2147483647 (0x7FFFFFF)
EMPTY_VALUE
インジケーターバッファに 空値がある
2147483647 (0x7FFFFFF)
:)もう見つけたんだ.
なぜ出るのでしょうか?
:)もう見つけたんだ.
でも、なぜ出てくるの?
2色あるので、インジケータは2つの配列を持っています。バー上に 1 番目の色の線があるとき、2 番目の色の配列はEMPTY_VALUE に等しい。
iValue=iCustom(NULL,timeframe, "Kalmanfilter", 4,1,1,0,1);
iValue = EMPTY_VALUE とすると、1バー上のラインはオレンジ色になります。(配列の青がEMPTY_VALUEであるため)。
2色あるので、インジケータは2つの配列を持っています。バー上に 1 番目の色の線があるとき、2 番目の色の配列はEMPTY_VALUE に等しい。
iValue=iCustom(NULL,timeframe, "Kalmanfilter", 4,1,1,0,1);
iValue = EMPTY_VALUE とすると、1バー上のラインはオレンジ色になります。(青い配列=EMPTY_VALUEなので)。
ありがとう、ニコライ...。
両方のラインから取りました。
そして、それらを1つに統合した(バッファを1つ残した)。同じ結果です。
*
そんな疑問があります。
このインジケーターはdraw_begin=500という変数を持っています。つまり、チャートが描画される端から(最も新しいローソク足から)何番目のローソク足かです。
また、iCustom()メソッドでインジケータの値を抽出した場合、この500ポイントはどのローソク足からカウントされるのでしょうか?
なぜ重要かというと、draw_beginは描画に使われるだけでなく、インジケータの計算にも参加しているからです。