解決済み

最初のtickだけの処理について(MQL5)

2023/10/10 21:33
147

MT5に内蔵されているMoving Averages.mq5というEAのサンプルプログラムを教材にして、MQL5を勉強しています。
最初のティックだけの処理として、下のようになっています。
下から二行目の if(rt[1].tick_volume>1)は
if(rt[0].tick_volume>1)ではないかと思うのですが。
気になって、先に進めません。
どなたかよろしくお願いします。

void CheckForOpen(void)
{
MqlRates rt[2];
//— go trading only for first ticks of new bar
if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
{
Print(“CopyRates of “,_Symbol,” failed, no history”);
return;
}
if(rt[1].tick_volume>1)   
return;

コメント

GogoJungle
2023/10/11 21:33

rt[0].tick_volume は、1つ前のローソク足のデータを表しており、
rt[1].tick_volume は、現在の(最新の)ローソク足のデータを表しています。

rt[0].tick_volume に、条件を変更してバックテストした場合は
取引が発生しない結果となりますので確認ができるかと存じます。

ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。

ww
2023/10/11 22:58

MQL5のリファレンスで時系列と指標へのアクセス CopyRates を見て、以下の記述を見つけ、疑問は氷解しましたした。
ご返信ありがとうございました。

受け取り側の配列が as_series=true であるか as_series=false であるかは関係ありません。データは、一番古い要素が配列に割り当てられた物理メモリの先頭に配置されるように複製されます。この関数の呼び出し方は 3 つあり・・

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。