MT4と岡三RSSを連携させて日経平均先物を売買する

MT4と岡三RSSを連携させられれば、MT4の豊富な指標を使って楽に色んなストラテジーを作れるのではないか?という目論見のもと、MT4からのシグナルを岡三オンライン証券の岡三RSSに取り込む方法を試行錯誤しました。

結果としてそれなりに取り込むことはできたのですが、取り込みのタイムラグが存在するのでリアルタイムの取引よりは日足トレードとか向けかなぁと思います。

それでは見ていきましょう。

MT4とは

MT4はFXでよく使われているトレーディングツールである。

チャートの表示、インジケーターの表示、取引ロジックによるシグナルの発生、発注や決済、売買ロジックの過去検証などが行える。

自動売買機能もついている。

しかも無料という、お得なソフトである。

ただし、MT4では日経平均先物自体の売買は行えない。

しかし、MT4を使って生成した売買シグナルを使って日経平均先物を取引できたら便利かもしれない。

ではどうするか。MT4では日経平均のCFDを取り扱っている証券会社もある。

そのCFDの値動きを使ってシグナルを出せばよいのではないか。

MT4で売買できる金融商品の種類は証券会社によって違っている。

日経平均のCFDを取り扱っているのはEZインベスト証券である。

MT4のインストールの仕方はEZインベスト証券のホームページを参照のこと。

実際にインストールして値動きを眺めてみると、日経平均先物とMT4でのCFDの値動きはだいたい一致する。

値の絶対値自体は微妙にずれることもあるが、これは配当や期近期先の問題だろうか。

値動きは連動するのでMT4からのシグナルを使って先物を売買するというアイデアは無意味ではなさそうだ。

ではなぜCFD自体を売買しないのかというと、スプレッドが大きいからである。

スプレッドは実質的な売買手数料であるが、日経平均先物の手数料と比べてCFDのスプレッドによる実質的な手数料は大きい。

なので多数回売買すると手数料分でどんどん損失がたまっていってしまう。

なので短期で多数売買を行う場合には日経平均先物がよい。

MT4と岡三RSSを連携させるには

では実際にどうやってMT4と岡三RSSを連動させるのか。

両者はそれぞれ別個のソフトウェアであり、連携用のインターフェースをそなえているわけではない。

そこで、テキストファイルを介したシグナルのやり取りを検討する。

MT4ではMQLというプログラミング言語を使う。

MQLではファイルへのテキストの書き出しを行うことができる。

一方、Excelマクロでもテキストファイルの読み書きを取り扱うことが可能である。

コード例

MT4のMQLでのファイル出力方法の例を示す。

void OnTick()
  {
   int sig;  ⁄⁄売買シグナル
   
   ⁄⁄ここから下に売買シグナルを発生させる処理を記述する
   ⁄⁄

   if(sig != 0)
   {
      string filename = "mt4out.txt";
      datetime sendtime = TimeLocal();
      int handle = FileOpen(filename , FILE_WRITE|FILE_CSV , ",");
      if(handle > 0){
         FileWrite(handle, TimeToStr(sendtime));
         FileWrite(handle, IntegerToString(sig));
         FileClose(handle);
   }

  }

変数sigがゼロでない時にファイルにsigの値を書きだすようになっている。

MT4でシグナルが発生した際にsigにゼロ以外の値を代入するようにすればよい。

ファイル名はmt4out.txtとしている。

Excelマクロでファイルを読み込むコード例を以下に示す。

Sub MT4sig()

    Dim filePath As String
    Dim fileTimeStamp, tmptime As Date
    Dim buf As String, n As Long

    With Worksheets("MT4sig")
        filePath = "C:...\mt4out.txt"  '正しいファイルパスを指定する
        fileTimeStamp = FileDateTime(filePath)
        tmptime = .Cells(1, 56)
        
        If fileTimeStanp <> tmptime Then
            .Cells(1, 56) = fileTimeStamp
            Open "C:...\mt4out.txt" For Input As #1  '正しいファイルパスを指定する
                n = 0
                Do Until EOF(1)
                    Line Input #1, buf
                    n = n + 1
                    .Cells(n + 2, 56) = buf
                Loop
            Close #1
        End If
    End With

End Sub

上の例では、mt4out.txtの更新時刻を調べて以前の時刻と異なる場合にファイルの内容をExcelシートに読み込むようになっている。

これにより、MT4で生成されたシグナルをExcelに取り込むことができた。

まとめ

  • テキストファイルを介してMT4のシグナルを岡三RSSに読み込むことが可能
タイトルとURLをコピーしました