MQL4から始めた方がよくやる失敗【超基本】

MQL4の基本的な失敗
yuki
yuki
本日はEAを作るためにMQL4からプログラミングの勉強を始めた人がよくやってしまう失敗のお話です
カオチャイ
カオチャイ
基本的な部分ですが、MQL4は段階的に学べる環境が整っておりませんので、できれば良書が多いC言語などの勉強をおすすめしますよ!

インジケーターに必要な初期化関数が抜けていないかチェック

まずインジケーターには下記の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から始めた方がよくやる失敗【超基本】

yuki
yuki
あと初学者のお問い合わせで多いのは中括弧{}が対になっていない事も多いですね
カオチャイ
カオチャイ
このあたりは大抵のエディターならば色で教えてくれますので、初学者の方は注意してコードをチェックしてくださいね!

 

EA・インジケーター制作のご依頼はこちら
ツール制作の流れ
EA・インジケーターを制作する流れと注意事項MT4やMT5に関するツールを作成する際の流れを説明しています。 シストレファクトリーでは一からEAの制作以外にもツールの修正や、統計的なアプローチができるソフトなどお客様の欲しいツールを形にいたします。...
料金とお問い合わせ
MT4・MT5のEA・インジケーター作成と料金のお問い合わせシストレファクトリーで制作したツールの著作権はお客様に帰属するので自由に販売可能! シストレファクトリーで作成したEAやインジケーター...

 

インジケーターをより使いやすく
MQLコードでEAをカスタマイズ
【MQLコード解説】EA・インジケーターのカスタマイズ【体験版・LINE通知】EAやインジケーターに口座番号認証を実装する方法を紹介しています。 認証システムにはMQLAuthを利用して解説していきます。...
プログラマーの技術の差
インジケーターの開発費用の見えない事情 プログラムのコードはいかに少なく、いかに美しく MT4のツールを作成するためのMQL言語は、たとえチャート上で同じ挙動をするソフト...
TIMEFRAME
MT4とMT5のTIMEFRAMEの違い TIMEFRAMEが起こすエラー TIMEFRAMEはMT4でたまに起こる問題があります。 MT4の場合、価格データが時間軸...
array out of range
MQLでよく出現するarray out of rangeとは? https://interactivebrokers.work/upgrade/ array out of range...