ハイローオートの販売が終了したため、こちらのコードは現在ご利用になれません。FX-EAラボでは代わりの自動売買システムとしてAutoMultiTraderをおすすめしております。
MT4はパラメータの変更ができない?
通常、バイナリーオプションの自動売買システムは、MT4の【Indicatorsフォルダ】に入っているサインツール(.ex4)を「直接」読み込んで自動売買を稼働します。
これがどういうことかと言いますと、例えば上記画像のように、MT4のチャート上でサインツールのパラメータを変更してチャートに表示される矢印の位置を調整したとします。
しかし自動売買システムが読み込むのはIndicatorsフォルダにはいっているサインツールの「デフォルトの状態」で、チャート上で変更した値については読み込みません。
そのため、MT4に表示される矢印の位置と、実際に自動売買でエントリーする位置がズレますので、ハイローオーストラリアの履歴とMT4の矢印を比較すると一致しないという問題が生じます。
これは残念ながらMT4の仕様によるものですので、アラート式などの読み取り方法でない限りはどんな自動売買システムも同じです。
ハイローオートと連携すればパラメータの変更が可能に
ハイローオート連携機能を実装したサインツールは、上記のようにパラメータに「ハイローオートと連携する」という項目が現れます。
ここを「オン」にしますと、パラメータを変更した時にハイローオートが「変更後の値を読み取ってくれる」ので、矢印が出る位置の調整が簡単にできるようになるのです。
そもそも、パラメータの変更ができないツールはリスクが高すぎですよね。何万円もかけてサインツールを作ってもらったのに、たまたまその時の相場との相性が悪かったら終わりですからね。
あとオマケ機能として、連携機能をONにしているサインツールは、インデックスの設定も自動になりますので、サインツールをチャートに放り込むだけで自動売買設定が完了しますよ!
今回公開するコードは、個人でも業者さんでも自由に使っていただいて良いです。また、業者さんで「ハイローオート連携」に対応してくださるところはご一報くだされば、FX-EAラボからも案内していきますね。
ハイローオート連携のコード
まずは必要なライブラリファイルをダウンロードし、MQL4/Include/ フォルダの中に入れます。
※MT5の場合はこちら MT5ライブラリファイルダウンロード
ソースコードの先頭に以下のコードを書き足します
#include <SignalAUTOLibrary.mqh>
※MT5の場合は上記をこちら変えて書き足してください。
#include <SignalAUTOLibraryMQL5.mqh>
これ以降の手順は全てMT4の実装方法と同じです。
OnInit()内(またはinit()内)の最後(return文の上)に以下のコードを書き足します
int OnInit() {
//--- 省略 ---
if(_attachSignalAUTO == SIGNALAUTO_ON) { //追加する行
SignalAUTO_Init(); //追加する行
} //追加する行
return(INIT_SUCCEEDED);
}
OnDeinit()内(またはdeinit()内)の最後(return文の上)に以下のコードを書き足します
void OnDeinit(const int reason) {
if(_attachSignalAUTO == SIGNALAUTO_ON) { //追加する行
SignalAUTO_Deinit(); //追加する行
} //追加する行
}
OnDeinit()またはdeinit()がない場合は、以下のコードを丸ごとコピーアンドペーストしてソースコードの最後に追加してください
void OnDeinit(const int reason) {
if(_attachSignalAUTO == SIGNALAUTO_ON) {
SignalAUTO_Deinit();
}
}
OnCalculate()内(またはstart()内)の最後(return文の上)に以下のコードを書き足します
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[]) {
//--- 省略 ---
if(_attachSignalAUTO == SIGNALAUTO_ON) { //追加する行
Signal(<HIGH矢印のバッファ変数>, <LOW矢印のバッファ変数>); //追加する行(バッファ変数の箇所は書き換える)
} //追加する行
return(rates_total);
}
<HIGH矢印のバッファ変数>と<LOW矢印のバッファ変数>はご自身のインジケーターで買い矢印と売り矢印を表示するのに使用しているバッファ変数を入れてください。
良くある質問(インジケーター利用者様向け)
Q、連携したインジケーターをチャートに入れただけで勝手に識別番号がでてきたんですが、これはすでに連携されているということでしょうか?
はい、自動連携はインジケーターをいれるだけで完了しますのでインデックスやファイルの設定も必要ありません。識別番号がでてこない場合は、実装方法がどこか間違っている可能性があります。
Q、Signal AUTOをいれなくても動いている気がするのですが・・・
連携しているインジケーターはSignal AUTOの機能を内包していますので、Signal AUTOをチャートに適用しなくても大丈夫です。
Q、識別番号が2つ被って表示されることがある。
こちらはMT4の仕様で残念ながら対応ができません。その場合チャートの時間を切り替えたりすると直りますのでお試し下さい。
Q、識別番号が邪魔なんで消したいです。
パラメータのハイローオート連携をオフにして下さい。ただしその場合は連携機能やパラメータの連動などが解除されてしまいますのでご注意下さい。
Q、パラメータ変更が本当にできているかどうかを確認する方法はありますか?
テクニカル指標を表示しないサインツールでしたら、チャートにテクニカルインジケーターを個別で適用して、期間などのパラメータを手動で合わせて目視で確認してもらうしか無いです。