自動売買システム

【ソースコード公開】ハイローオートと連携してパラメータを簡単に変更!

ハイローオートコード連携
yuki
yuki
サインツールで自動売買を行う場合にネックとなるのが、期間や偏差などのパラメータの変更です
カオチャイ
カオチャイ
通常、MT4でパラメータを変更しても、実際の自動売買はデフォルトの設定で動くのが基本です。こちらの方法である程度対応できますが、全てに対応できるわけではありません
yuki
yuki
そこで今回は開発者様や、これからインジケーター制作を外注しようとしている人向けに、ハイローオートと連携してパラメータの変更を簡単にできるようにする方法のご紹介です

MT4はパラメータの変更ができない?

パラメータの変更

通常、バイナリーオプションの自動売買システムは、MT4の【Indicatorsフォルダ】に入っているサインツール(.ex4)を「直接」読み込んで自動売買を稼働します。

これがどういうことかと言いますと、例えば上記画像のように、MT4のチャート上でサインツールのパラメータを変更してチャートに表示される矢印の位置を調整したとします。

しかし自動売買システムが読み込むのはIndicatorsフォルダにはいっているサインツールの「デフォルトの状態」で、チャート上で変更した値については読み込みません

そのため、MT4に表示される矢印の位置と、実際に自動売買でエントリーする位置がズレますので、ハイローオーストラリアの履歴とMT4の矢印を比較すると一致しないという問題が生じます。

これは残念ながらMT4の仕様によるものですので、アラート式などの読み取り方法でない限りはどんな自動売買システムも同じです。

カオチャイ
カオチャイ
これでは日々変化する相場に対応するのが難しいですよね・・・
yuki
yuki
そこで今回ご紹介するのが「ハイローオート連携機能」です!

 

ハイローオートと連携すればパラメータの変更が可能に

ハイローオート連携

ハイローオート連携機能を実装したサインツールは、上記のようにパラメータに「ハイローオートと連携する」という項目が現れます。

ここを「オン」にしますと、パラメータを変更した時にハイローオートが「変更後の値を読み取ってくれる」ので、矢印が出る位置の調整が簡単にできるようになるのです。

そもそも、パラメータの変更ができないツールはリスクが高すぎですよね。何万円もかけてサインツールを作ってもらったのに、たまたまその時の相場との相性が悪かったら終わりですからね。

あとオマケ機能として、連携機能をONにしているサインツールは、インデックスの設定も自動になりますので、サインツールをチャートに放り込むだけで自動売買設定が完了しますよ!

カオチャイ
カオチャイ
というわけで今回は開発者様向けに、このハイローオート連携に必要なコードを公開していきます!
yuki
yuki
もちろんサインツール制作を外注するときなどにも、この記事を発注先に見せて実装してもらうということも可能です!

今回公開するコードは、個人でも業者さんでも自由に使っていただいて良いです。また、業者さんで「ハイローオート連携」に対応してくださるところはご一報くだされば、FX-EAラボからも案内していきますね。

 

ハイローオート連携のコード

yuki
yuki
コード自体はたったの15行で連携が可能になりますよ!
カオチャイ
カオチャイ
MT5の場合もほぼ同じですので同時に解説していきます!

 

まずは必要なライブラリファイルをダウンロードし、MQL4/Include/ フォルダの中に入れます。

ライブラリファイルダウンロード

 

ソースコードの先頭に以下のコードを書き足します

#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矢印のバッファ変数>はご自身のインジケーターで買い矢印と売り矢印を表示するのに使用しているバッファ変数を入れてください。

 

カオチャイ
カオチャイ
以上で完了です!これでMT4上でパラメータを自由に変えられるようになりますよ!

 

良くある質問(インジケーター利用者様向け)

Q、連携したインジケーターをチャートに入れただけで勝手に識別番号がでてきたんですが、これはすでに連携されているということでしょうか?

はい、自動連携はインジケーターをいれるだけで完了しますのでインデックスやファイルの設定も必要ありません。識別番号がでてこない場合は、実装方法がどこか間違っている可能性があります。

 

Q、Signal AUTOをいれなくても動いている気がするのですが・・・

連携しているインジケーターはSignal AUTOの機能を内包していますので、Signal AUTOをチャートに適用しなくても大丈夫です。

 

Q、識別番号が2つ被って表示されることがある。

こちらはMT4の仕様で残念ながら対応ができません。その場合チャートの時間を切り替えたりすると直りますのでお試し下さい。

 

Q、識別番号が邪魔なんで消したいです。

パラメータのハイローオート連携をオフにして下さい。ただしその場合は連携機能やパラメータの連動などが解除されてしまいますのでご注意下さい。

 

Q、パラメータ変更が本当にできているかどうかを確認する方法はありますか?

テクニカル指標を表示しないサインツールでしたら、チャートにテクニカルインジケーターを個別で適用して、期間などのパラメータを手動で合わせて目視で確認してもらうしか無いです。

 

インジケーターの認証、遠隔停止、自動決済&顧客リスト作成
EAやインジケーターの改良
ABOUT ME
YUKI
MT4をこよなく愛する開発者です。FX-EAラボの他に、サヤ取りを追求した株ラボ、MT4、MT5のツール制作に特化したシストレファクトリー、EAやインジケーターに認証やペイパル決済機能が付けられるMQLAuthシステムなどの開発にも関わっています。 YUKIプロフィール