
【Forex Tester】過去検証の自動化
こんにちは。ひろです。
「Forex Tester」のストラテジー機能を使用した過去検証について少し試してみました。
「Forex Tester」はFXシミュレーターとでも言えるような商品で、過去の相場データを使ってリアルタイム取引をしているような感覚を再現してくれます。また、ストラテジーと呼ばれる機能を使えば、過去数年分のトレード結果を自動的に集計させることもできます。これは一定の売買ルールを予め決めておいて、数年分のテストを自動的に実行する機能です。
ストラテジー機能とは
Forex Testerの機能としてストラテジーというものが提供されています。
簡単に表現すると、自動的に売買してくれる機能なのですが、これを使って過去数年分の売買を自動で動かすことができます。
この機能は、前もって注文する時の条件と決済する時の条件を決めておく必要があります。例えば 2010年~2020年についてストラテジーを実行させ、その10年間で獲得したpips値や金額を自動で集計することがでます。この機能を使えば、自分が考えた売買ルールのパフォーマンスがどの程度機能するのか事前に確認することができます。
どうやって使うの?
ストラテジーの使い方を調べたところ、既成のストラテジーの使い方はそこそこ見つかるのですが、自作する方法は数が少なくなかなか見つかりませんでした。
こんな感じで、当初はストラテジーの使用方法が分からず、Forex Testerのフォーラム記事ばかり読み漁っている状況でした。
そこで色々と調べたところ、DLL形式 (Windowsファイル形式のひとつ)でForex Testerに組み込む必要があることが分かりました。また、その機能を使ったサンプルソースが、Forex Testerをインストールしたフォルダーの中に存在することもわかりました。
このDLLファイルに注文する時の条件と、決済する時の条件をプログラムで書いて埋め込む必要があるみたいです。
DLLファイル作成の流れ
DLLファイルの作成にはVisual Studio(無料版)を使用しましたが、特に問題なく使用することができました。ストラテジー開発の流れを簡単に紹介すると、こんな感じです。
・売買ルールをC言語で書く (Visual Studio上で実施)
・ビルドしてDLLファイルを作成する (Visual Studio上で実施)
・DLLファイルを新規ストラテジーとして「Forex Tester」にインストール
・インストールしたストラテジーをONに設定してテスト開始
このDLLの作成が結構難しく、たとえば裁量で判断しているものをプログラムに落とし込む必要があり、これが思うように動いてくれないんです。
このDLLの問題さえ解決できれば、これで数年分のデータを自動で集計してくれるので検証が楽になると思ってましたが、そう簡単ではありませんでした。
簡単なストラテジーから試してみる
時間トレードはストラテジー機能と相性がいいので、まずは1日分の簡単なルールをストラテジーに落とし込むことから試してみました。
売買ルール
・最終ティック時間を確認し、ENTRY時間と一致すれば注文
・最終ティック時間を確認し、EXIT時間と一致すれば決済
・逆指値を設定し、引っ掛かかったら損切り
Forex Tester5でのテスト結果
PC環境はWindows10にForex Tester5で試しました。
早速ストラテジーを動かして、期待通りに動いているかチャートを拡大して確認してみました。

ストラテジーで指定した日の注文時間にBUY注文が入り、決済時間にSELL注文が入っています。また、決済前に大きく下落した時は損切が発生するような動きとなっており、期待通りの動きになってました。
作成したDLLファイル
「パラメータ」ダイアログには売買条件が入力できるようになってます。ここには適切な値を入れておかないとストラテジーが全く動かないので注意してください。
入力できるパラメータ
・Currency : (使用する通貨を選択する)
・Entry Day : (0で毎日実行する)
・Entry Time : (10時25分の場合は10.25と入れる)
・Exit Time : (14時35分の場合は14.35と入れる)
・Loss Range : (オープン価格から±40pipsの時は0.40と入れる)
・Buy/Sell : (買いの時はBUY、売りの時はSELLと大文字で入れる)
(ポジションは1ロット固定です)
免責事項
当サイトの情報を元に取った行動の結果について、当サイトは一切の責任を負いません。当サイトの利用に関連して発生した損害について、当サイトは何らの責任を負いません。
このDLLファイルはWindows10で作成しましたが、PCの環境が変わると動作しないかもしれませんので注意してください。
インストール方法 (Forex Tester5)
1.画面上部にある「ストラテジー」を選択すると「ストラテジーを追加」ボタンが見えるようになるのでそれを押す。

2.ボタンが押されると「新規ストラテジーをインストール」ダイアログが表示されるので、ダウンロードしたDLLを選択し「インストール」ボタンを押す。

3.「ストラテジーを追加」ボタンの左にある「ストラテジーを実行」スイッチを「ON」にして「ストラテジーリスト」のボタンを押す

4.ボタンが押されると「ストラテジーリスト」ダイアログが表示されるので、インストールしたストラテジーの左側の「オン/オフ」スイッチを「ON」にして右側にある歯車アイコンを押す。

5.ボタンが押されると「パラメータ」ダイアログが表示されるので、各項目をテストしたい条件に合わせて入力する。
・Currency : (使用する通貨を選択する)
・Entry Day : (0で毎日実行する)
・Entry Time : (10時25分の場合は10.25と入れる)
・Exit Time : (14時35分の場合は14.35と入れる)
・Loss Range : (オープン価格から±40pipsの時は0.40と入れる)
・Buy/Sell : (買いの時はBUY、売りの時はSELLと大文字で入れる)

6.画面上部にある「ホーム」を選択すると「再起動」ボタンが見えるようになるので、それを押すとバックテストが開始される。(事前にプロジェクトを作成しておく必要あります)

修正版DLLファイル
「パラメータ」ダイアログの機能を一部修正しました。
修正後のパラメータ
・Currency : (使用する通貨を選択する)
・Entry Day : (0で毎日実行する)
・Entry Time : (10時25分の場合は10.25と入れる)
・Exit Time : (14時35分の場合は14.35と入れる)
・Lot Size : (1ロットの場合は1.00と入れる)
・Loss Range : (オープン価格から±40pipsの時は400と入れる)
・Order Type: (BUY/SELLをプルダウンメニューで選択する)

パラメータ (Lot Size)
今まで1ロット固定でしたが変更できるように追加しました。
1ロットの場合は1.00と入れてください。
パラメータ (Loss Range)
Currencyが変わると計算できなくなる不具合を修正しました。
ストップロスを「オープン価格 ± Loss Range」で計算していましたが、ここを「オープン価格 ± (Loss Range × Currencyの持つ最小売買価格)」で計算するように変更しました。
ストップロス = オープン価格 ± (Loss Range × Currencyの持つ最小売買価格)
Currencyの持つ最小売買価格
ドル円だと0.001円 (0.1pips) みたいです。(Forex Testerの仕様に依存)注意
Loss Rangeの値が小さ過ぎると成り注文できずにエラーとなる場合があります。(売買でエラーが発生するとジャーナルにエラーログが残ります。)
パラメータ (Order Type)
BUY/SELLをプルダウンメニューで選択できるようにしました。
免責事項
当サイトの情報を元に取った行動の結果について、当サイトは一切の責任を負いません。当サイトの利用に関連して発生した損害について、当サイトは何らの責任を負いません。
このDLLファイルはWindows10で作成しましたが、PCの環境が変わると動作しないかもしれませんので注意してください。