MQL4から始めた方がよくやる失敗【超基本】
[chat face=”pro.jpg” name=”yuki” align=”left” border=”green” bg=”none”]本日はEAを作るためにMQL4からプログラミングの勉強を始めた人がよくやってしまう失敗のお話です[/chat][chat face=”kaopro.jpg” name=”カオチャイ” align=”right” border=”green” bg=”none”]基本的な部分ですが、MQL4は段階的に学べる環境が整っておりませんので、できれば良書が多いC言語などの勉強をおすすめしますよ![/chat]
インジケーターに必要な初期化関数が抜けていないかチェック
まずインジケーターには下記の3つの関数が必須です。
インジケーター初期化関数
int OnInit() { }
インジケーター初期化解除関数
void OnDeinit(const int reason) { }
インジケーターティック毎の処理関数
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[]) { }
これはほぼテンプレートで、インジケーターの開発者様にはおなじみの関数ですが、実は2番めのインジケーター初期化解除関数OnDeinit()はテンプレートとして最初から書かれていないので注意が必要です。
チャート上に出したインジケーターの線などを消すコードをこのOnDenit()内に記載するのですが、OnDeinit()がないとMT4からインジケーターを削除してもチャート上に表示がすべて残ってしまうということが起きます。
全角スペースは使えない
これはプログラミングを書く際には当然の話なのですが、相談を受けているととても多い案件です。
独学でプログラミングの勉強をされている場合、勉強ルートによっては意外とこの基礎が説明不足で抜けてしまうのかもしれません。
どんなプログラミング言語でも、コードを書く場合に全角スペースや全角コンマは利用できません。もし使いますとエディターに下記のエラーがでますので注意してくださいね。
セミコロンの場所に注意
これも初学者さんによくあるミスですが、セミコロンは変数の宣言と関数の宣言でつけるかつけないかが異なります。
関数の宣言はセミコロンがいらないが、中括弧が必要
void OnDeinit(const int reason) {
}
変数の宣言 行末にセミコロンが必要
int limit = Bars - IndicatorCounted();
MQL4から始めた方がよくやる失敗【超基本】
[chat face="pro.jpg" name="yuki" align="left" border="green" bg="none"]あと初学者のお問い合わせで多いのは中括弧{}が対になっていない事も多いですね [/chat][chat face="kaopro.jpg" name="カオチャイ" align="right" border="green" bg="none"]このあたりは大抵のエディターならば色で教えてくれますので、初学者の方は注意してコードをチェックしてくださいね![/chat]
[jin-fusen3 text="EA・インジケーター制作のご依頼はこちら"]
https://interactivebrokers.work/wp/task/
https://interactivebrokers.work/wp/fee/
[jin-fusen3 text="インジケーターをより使いやすく"]
https://interactivebrokers.work/wp/mqlauth-manual/
https://interactivebrokers.work/wp/heavy-or-light/
https://interactivebrokers.work/wp/timeframe/
https://interactivebrokers.work/wp/array-out-of-range1/
クリックで拡大できます