しばらくブログは書いていませんでしたが、取引自体は通常通りJForex中心で行っていました。
ですが、最近色々と思うところがあって、今さらですがMT4へ移行しようと考えています。
移行を思い立った原因
- 本家DukascopyがMT4口座を開始したこと
DukascopyもMT4の圧に負けたのかと感じざるを得ません。
また、この先JForexサポートが終了してMT4が中心になるかも?という不安がどうしても残ります。 - 海外口座を本格的に開始しようと考えたこと
サラリーマン時代には税制上の不利さから、海外口座はあくまでお試しやCFDのデータ取得が中心でした。しかし投資研究家(という名の自宅警備員)の現在では税制はかえって有利な部分もあったりします。
以前Alpariのサポートに聞いたときは「日本人は取引できなくなるよ!」の回答だったのですが、追い出すどころか最近では「おい、お前取引しろよ」と電話が掛かってくる始末w。
FXOpenも日本在住は全く問題ないみたいなので、海外口座に本格的に打って出ようと考えた次第です。
全自作でFIXプログラムも検討したのですが、どう考えても手間の大きさの割にメリットが少なすぎです。
また、MT5は保有口座ではAlpariでしか使用できないので、JForexがDukascopyでしか使用できないデメリットと同じ問題が残ります。
以上諸々を勘案し検討した結果、MT4に移行することにしました。
※DukascopyJapanのJForex自体は、スプも狭い、手数料も低い(最近はキャッシュバックキャンペーンも実施)と満足しているので、裁量中心のサブ口座として継続利用する予定です。
というわけで、MT4へ移行を開始したのですが、困った点がいくつか発生しました。
バックテストが通常と最適化で結果が異なる(全ティックの場合)
始値のみの場合はさすがに一致します。(ただし勘違いの可能性あり)- 複数時間軸での最適化ができない
- 複数通貨での最適化ができない
2,3はバッチ化すれば可能になりますが、めんどくさい。
バッチ化した場合、最適化レポートに入力パラメータが表示されないので検討できない
(というか、MT4上の最適化結果には入力パラメータが表示されるのに、レポート保存すると消えるのが不思議な仕様) - 通常のバックテスト(最適化しない場合)では、onTester結果がログにしか表示されない
最適化した場合には、最適化結果にも表示されるのに・・・ - バッチ化といっても、その実毎回MT4を再起動してバックテストを実行しているだけなので、処理時間がすごく長い
- TickstoryからのMT4エクスポートはその期間で上書きとなる。すなわち複数年のバックテストを実施しようと思ったら、
2017年データをエクスポート→2017年でバックテスト→2018年をエクスポート→2018年でバックテスト
の手順が必要になるので、これを複数通貨、複数時間足で行おうとすると大変なことになります。(フリー版前提ですが)
(不可能ではないですが、JForexで当たり前にできていたことに工数を割くのはかなり馬鹿らしく感じます・・・)
と結構大変でした。(もちろん自身がMT4に不慣れなせいもあります)
それぞれの問題点に対する対策案はこのような感じです
- 問題点1
これは勘違いかもしれません。たしかに移行序盤に引っかかったのですが、今確認してみると正常でした・・・ - 問題点2
今までJForexのonBar()と同じ感覚で、チャートの時間足の最初か?を判断していたため、異なる時間足のバックテストができませんでした。(JForexでははチャートの考えが無く、EAとfeedの時間足は一致させているためのクセのようなもの)
これをチャートは常に1分足で固定。テクニカル等で参照する時間足を入力引数化してロジックを複数時間足に対応させることで解決しました。
単純に引数のtimeframeを0から毎回指定に変更しただけですね・・・w - 問題点3
2と違って簡単には解決しそうにありません。したがって必要な時はバッチ対応にします。 - 問題点4
onTesterが表示されない、入力パラメータがファイルに表示されない等々あり、かなり不便なので結局必要な情報を全部自力出力することにしました。 - 問題点5
バッチ化を複数通貨のテストのみにすれば回数が減る・・・はず。真面目に考えても解はないですね。 - 問題点6
・バックテストの度にデータをインポートするのはめんどくさい。
・将来的にバックテストまで含めて自動化したい。
・そもそもDukascopyのtickデータであり取引ブローカーの実tickとは異なるので、細かくこだわるメリットがあまりない
・常にチャートを1分足にしておけば、MT4が生成するtickもそれなりのものになるのではないか?(希望)※1
というわけで、Tickstoryは使わずに1分足ベースで取引することにより回避します。(実際のEAは15分~4時間位の足で動く予定)
というわけで、今後もMT4に移行しつつEA開発を進めていく予定です。
PS
移行の過程で結果が合わない!ケースに遭遇しました。
詳細は別postにて上げようと思います。
※1
2018/10/16追記:実際にMT4で確認してみたところ、1ヶ月のバックテストをするのに1分足と1時間足では、全ティックの場合EAに渡される総tick数は殆ど変化がありませんでした・・・、1分足でやれば精度が上がるのでは?は完全に期待外れでした_| ̄|○
一時的な暴騰急落を含めてある程度のバックテストを行いたい場合には、やはりTickstory等使ってtickデータを作成するしかないようです。(Tickstoryにはバグがありますが・・・)