この商品は「無料で試用」できる 試用版となっています。 試用版ということで インジケータの機能利用に制限はありませんが、以下の動作を行います。
1)利用期間に期限があります。期限は MT4の ”ターミナル” の ”エキスパート”タブ内に記載されます。
2)チャートにインジケータを設定後 10分間利用できます。(10分後にインジケータは動作を停止しますが、再度起動いただくと再び10分間利用できます。)
3)インジケータの動作中は チャート画面の左側に「試用中」であることを示す文字が表示されます。
機能について
このツールでは 高度な知識を必要とせず MT4とPython間での連携を実現させます。利用者はPython側のスクリプトをご用意いただくだけで、MT4側の以下の表の機能を利用することができます。
このツールは、以下のような使い方をされることを想定しています。
- インターネット上の各種情報をPythonで収集し、トレード中のMT4 チャート画面へリアルタイムに情報を表示させる。
- MT4が保持している4本値や移動平均線の値を このツールにて出力し Pythonに渡すことで、Python側でAI処理させるなどし その結果を再度 MT4側の画面に渡し表示させる。 (表示例 エントリー指示など)
- 手動で備忘録などを記載し、チャート画面に常時表示させる。
などなど
〔 機能一覧 〕
”Pythonと連携する”と うたっていますが、Pythonに限らず 一般的な外部アプリの利用が可能です。MT4の外部にあるアプリやスクリプトから、MT4を操作するためのツール(=bot)となります。
図1 このツールが動作する環境を示します。図中「MT4 bot」が本ツールをあらわします。
まずは 登場人物、関係者の紹介として 全体像の説明です。
上の図1にあるように メタトレーダ(=MT4)上のインジケータとして動作する本ツール(=MT4 bot)は、MT4の外で動作するPythonなどのスクリプトやアプリと連携して動作させるためのものです。
連携にあたっては、中間に2つのCSVファイルを介して やりとりをおこないます。なお、CSVファイルとは データとデータの間をカンマ( , )あるいは改行で区切ったテキストファイルとお考え下さい。文字コードは Shift JIS になります。
図2 このツールの動作(シーケンス)を示します。①から⑤までの流れが1つのサイクルとなり、以降、これを繰り返します。
連携するための CSVファイルの1つは、いま どちらが 何の処理をしているのかという状況を示したり、本ツールに指示するコマンドを渡すための「コントロールファイル」。もう1つは コマンドの詳細(表示させる文字列)や本ツールが処理した結果(各種インジケータの値)を渡すための 「データファイル」になります。
両者間の ”やりとり” の開始は、PythonなどのMT4からみた外部アプリ/スクリプト側よりの指示から開始されます。本ツールは(現時点のバージョンでは)常に受け身で動作します。
図2のように Python等からの指示を受け、その結果を画面やデータファイルに対し処理を行います。このツールが処理を完了させた後は、その旨を コントロールファイルに記載することで Python等に処理のイニシアティブを渡します。
2つのテキストファイル(=csvファイル)
次のように利用します。
コントロールファイル(ファイル名: eimCsvExec_ctrl.csv)に現在の状況や 指示コマンドを記述します。
指示の内容は 次の2つの項目をセットで記述し 相手に渡します。
1つは Python側とMT4ツール側のどちらが 相手に指示や情報を伝えようとしているのかを示すもので、これをステータスコードと呼びます。「まだ(Python側で)指示書き込み中」、「MT4側での処理頼む」などの状況を互いに伝えるためのコードになります。いわゆる セマフォとしての役割を果たすと理解ください。
2つめは 指示の内容そのもので、「文字列を描画せよ」などの コマンドになります。具体的な指示の内容、ここでは文字列の描画方法は、データファイル(ファイル名: eimCsvExec_data.csv)に記述して相手(この場合はMT4側のツール)に渡します。具体的な内容は、描画位置(x,y座標)、文字サイズ、文字カラー、描画する文字列の5つを記載します。ファイル内の各行が1つの文字列の描画指示となり、現時点ではいくつでも、何行でも文字列の描画指示をだすことができます。
具体的な指示の例
コントロールファイル:
同梱のファイルには、あらかじめ「110,100」をセットしています。
最初の「110」がステータスを表し、この状態ではpython側が準備中であることをあらわします(詳細は後述)。2つめの「100」は、文字列の描画を指示するコマンドをあらわします。
そのため、このままMT4でこのツールを起動しますと、「110,100」を読み取りに行きますが なにも起こりません。ツールの起動後に コントロールファイルをテキストエディタで開き(手動で大丈夫です!)、1つめの「110」を「190」に変えて、そのままファイルを上書き保存してください。「190」は MT4のツールが指示を受け取り解釈をおこない 与えられた処理をおこないます。そのためMT4のチャート画面には データファイルにて細かく設定して位置、文字サイズおよび色で文字列を描画されます。
現在は プロトタイプ版のため MT4側のツールから コントロールファイルへのステータス書き換えは行っていませんので、あなたが データファイルの内容を書き換えるたびに チャート画面にその内容が反映されます。いろいろお試しください。データファイル:
指示内容によって記載するデータは異なります。
(1)文字列描画の機能
データの最初の値はX座標(ピクセル)、以降順に、Y座標(ピクセル)、文字列の色指定、文字サイズ(pt)、文字列となります。これら5つのデータをひとかたまりとして扱い 1つの行に記載します。
1行に1つの文字列描画指示を記述できます。上の記載例ですと 5行ありますから 5つの文字列を描画する指示になります。
文字列の削除
描画の指示をおこなった「行」を空行にして再度指示を出してください。何も記述せず改行にした状態にして、コントロールファイルに「190,100」を記述しておくと 描画した文字列が削除されます。この方法ですと MT4における”オブジェクト”として削除されます。同様にチャート画面の文字列を消す方法としては、データの文字列の部分だけを空欄(=座標や文字サイズ、色などを残した状態)にしてもチャート画面では文字列が消えますが ”オブジェクト”としては残っています。ただし、ツール終了時には 削除されます。(2)MT4のデータをファイル出力する機能
MT4が保持しているデータや、インジケータが計算した値をファイル出力する機能を実装しています。使用可能なコマンドは以下のリストとなります(文字列描画も再掲しています)。100 : 文字列の表示
201 : 4本値(現在の値のみ)
202 : 4本値
203 : 移動平均線
204 : ボリンジャーバンド
205 : 一目均衡表
206 : MACD
207 : RSI
208 : ストキャスティクスコマンド
それぞれのインジケータによって必要なパラメータ数が異なります。
以下に、コマンドごとの指示方法を記載します。
1行目 : (通貨ペア),(時間軸) [ex]GBPJPY-cd,H1
2行目 : (現在価格から出力する数) [ex]100
3行目以降 : (コマンドによって変化;以下を参照)
201 現在足の4本値(上記の1行目のみを記述。2行目以降は不要)
202 4本値:(上記の1,2行目を記述。)
203 4本値+移動平均線:(メインラインを計算をする平均期間),(移動平均シフト),(移動平均メソッド(0-3)=ENUM_MA_METHOD列挙の値を指定) [ex] 25,0,0 *移動平均線は3本まで描画可能/適用価格はPRICE_CLOSE=終値に固定
204 4本値+ボリンジャーバンド:(メインラインを計算をする平均期間),(バンドシフト),(標準偏差1){,(標準偏差2)}{,(標準偏差3)} [20,0,5,1,2,3] *標準偏差は3組まで描画可能
205 一目均衡表:(転換線期間),(基準線期間),(先行スパン期間) [ex]9,26,52
206 MACD:(ファーストEMA期間),(スローEMA期間),(シグナルライン期間),(適用価格=ENUM_APPLIED_PRICE列挙の値を指定) [ex]12,26,9,0
207 RSI:(平均期間),(適用価格=ENUM_APPLIED_PRICE列挙の値) [ex]14,0
208 ストキャスティクス:(%K期間),(%D期間),(スローイング),(平均化メソッド),(価格フィールド(0:Low/High または 1:Close/Close)) [ex]5,3,3,0,0
コマンド「202」以降は、過去の履歴をファイル出力しています。データの最大数は MT4保持している分までとなりますが、実際に出力する数は 指定し絞り込むことができます。
データの出力例
コマンド 203の 移動平均線を出力した際の例です。
1行目には出力した情報が何であるのかを示すタイトル行です。(アプリ名は旧名称)3行目がカラム(項目)名となっています。データ数(=No)とサーバー時間に続いて、4本値(=OHLC)と、移動平均線を出力しています。4本値は いつも一緒に出力されます。
具体的な設定例
まずは手動で指示を与えてみましょう。
以下の通りにファイル内容を書き換えるだけで 所定のデータを出力してきます。
このツールをMT4で起動した後、所定のフォルダ(MT4フォルダの\MQL4\Filesフォルダ)に以下の順に2つのファイルを配置してください。
ここでは上で示した移動平均線を3本出力することを指示してみます。出力する移動平均線は、それぞれ短期移動平均線25日、中期75日、長期120日にしました。
さきにコントロールファイルを置いてしまいますと、処理を開始してしまいますので、最初にセットするのはデータファイルの方になります。
(正しい手順では コントロールファイルを 所定のデータを置くことで データファイルの準備中には 動作しないようにします)
1行目には 通貨ペア名、時間軸を記述。なお通貨ペア名は お使いのMT4(FX会社)によって異なる場合があります。ご確認のうえセットしてください。この例の場合は ポンド円の1時間足を指定します。
2行目には出力する データ個数。ここでは100個出力します。0を記述するとMT4が保持している時間のすべてを出力します。
3行目以降は 出力させたい移動平均線のプロパティになります。それぞれ左から、期間、シフト数、および 移動平均メソッド(SMAとかEMAのこと)になり、ここではSMA(=単純移動平均)とします。
ファイル名は、「eimMT4Bot_data.csv」としてください。拡張子は.csvです。
データファイルを保存できたら、続いてコントロールファイルをセットします。こちらは1行のみ、2項目だけです。
最初の「190」はステータス情報です。意味は、百の位が”Python側が書き込みをしている”状態であることをあらわし、十の位は”Python側の処理は完了”、一の位は ここでは意味なしです。
2つめの項目は、コマンドです。ここでは、移動平均線の出力を指示する”コマンド203番”を記述します。最後に、ファイルを「eimMT4Bot_ctrl.csv」として保存します。
コントロールファイルのステータス詳細
まずPythonなどのMT4以外の外部スクリプトをリーダー役、MT4で動作する本ツールをフォロワーと呼ぶこととします。基本的にフォロワーはリーダーからの指示によって動作します。現時点ではフォロワーが自発的に動作する仕様とはしません。
ステータスは、コントロールファイルの1行目の1つ目の数字であらわします。3ケタの数字で表現し、それぞれのケタ位置に意味をもたせています。
3ケタの数字のうち 1番左側の数字(百の位のケタ)は、コントロールファイルを最後に触ったのがどちらであるかをあらわします。リーダーは「1」、フォロワーは「2」をセットします。
左側から2番目の数字(十の位のケタ)は、”データを用意している最中”などの作業中かどうか示します。この値が「1」の場合は 作業中であることをあらわすこととします。この値を読み取って 相手が作業中であった場合には コントロールファイルの読み込み以外の動作をおこなわないようにします。相手側が、コントロールファイルとデータファイルを占有している占有モードとなります。
左側から3番目の数字(一の位のケタ)は、(主にフォロワーからの)エラーコードになります。正常に処理が行われた場合は 「0」となります。リーダー側は特に使用する必要はありませんので 通常は「0」をセットしてください。
例1)ステータス:110の場合
この場合、百の位が1なので Python側が書き込んでいます。十の位も1ですので データファイルの準備などの作業中であることを示します。したがって、この数字「110」の意味は、Python側がMT4側に指示する準備をしているので、MT4側は待っててね、というものになります。例2)ステータス:190の場合
さきほどと比べますと、十の位が9になりました。この9はPython側での作業終了をしめします。ですので意味は、Python側がMT4側に指示する準備が完了したので、MT4側での作業実施よろしくね、となります。
プロパティ設定
- このツールがコントロールファイルを確認する間隔を指定できます。
- 文字列の表示機能で 文字を表示する位置を指定できます。 デフォルトは 左上になります。
配布ファイルについて
- 動作はMT4のみ対応しています。
- 配布ファイル内に csvファイル(コントロールファイルとデータファイル)をサンプルで納めています。所定のフォルダに配置し、本ツールを起動することで 動作させることができます。
GogoJungleを初めてご利用する方へ商品のご利用まではかんたん3ステップ!
GogoJungleでは、会員様向けに、あなたの投資生活を豊かにするサービスをご用意しております。また、商品のご購入は通常会員様に限られさせていただいております。今すぐ会員登録をして、Gogojungleを活用してみませんか!