MetaTrader + Python + TensorFlowで自動売買ができないか調べていたが、MetaTrader + Pythonでは売買できないことがわかった。(MetaTraderで自動売買するにはMQLを使わないと不可能。Pythonでは、データを取得できるだけ。)
TensorFlowのC++版を利用して、MQLから使えるようにする方法もあるが面倒なのでやめ。
そこで、cTraderを試してみることにする。cTraderはC#で自動売買のbotを作ることができる。TensorFlowやKerasをC#から呼べるようにしたTensorFlow.NETやKeras.NETがあるのでcTrader + C# + TensorFlow.NETの組み合わせを試してみることにする。
まず、いきなり自動売買のbotを組むのではなく、時系列データを収集するプログラムを書いてみる。Automateを選択すると、自動売買用のcBotとインディケータ作成用のインディケータの2つが選択できる。今回は自動売買用のcBotを選択する。
追加ボタンをクリックすると、新しいbotの雛形が作成される。
雛形が作成されたところで、・・・の部分を右クリックする。メニューが出てきて「Visual Studioを使用しないでください」と書かれているが、これをクリックするとVisual Studio 2019で編集できるようになる。(日本語訳が間違っている)
データを収集するプログラムを書く。コンパイルしてバックテストで実行すればデータが収集できる。
注意事項が1つある。AccessRights = AccessRights.FileSystemを設定しておかないとStreamWriterを開いた時点で失敗してプログラムが終了してしまうので注意すること。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using cAlgo.API; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.TokyoStandardTime, AccessRights = AccessRights.FileSystem)] public class Learning1 : Robot { private System.IO.StreamWriter _text = null; protected override void OnStart() { _text = new System.IO.StreamWriter("z:\\" + SymbolName + ".txt", false, System.Text.Encoding.UTF8); } protected override void OnTick() { _text.WriteLine(Time.ToString("yyyy/MM/dd HH:mm:ss.fff") + ", " + Bid.ToString() + ", " + Ask.ToString()); } protected override void OnStop() { _text.Close(); } } } |