2011/01/07

バックテスト(自動)時代 - ForexTester2初めてのストラテジプログラミングと実行



前回は、初心者の私がバックテストを手動することが非効率に感じ、自動化を決意するところまで話しました。
今回は、初めてForexTester2でストラテジ(自動売買プログラム)を作成してバックテストを始めるまでの話をします。


ついに、ForexTester2のバックテスト用ストラテジ(EA/自動売買プログラム)の作成という新たな挑戦へ。

コンパイルのやり方はインジケータを作成する要領で、できるんだろうなと思ってました。
※インジケータ作成時との差異は
 ..ForexTester2\Examples\Strategies\Delphi\ 配下の以下のファイルを使用
 StrategyInterfaceUnit.pas
 TechnicalFunctions.pas

さてさて、初めて一からつくるのはもちろん無理。
ForexTester2にはストラテジのサンプルがあったのでまずはそれを流用
一番単純そうな、SMAStrategy.dprをコピー&ファイル名変更してコンパイル環境を構築。

さてさて、どんな構造かな???

サンプルソースと英語のヘルプ、
そして、サンプルソース内の英語のコメント文。。
そして、つたない英語力。


この英語づくし、わかっちゃいるが、辛い!!

英語の勉強してるんとちゃうんやぞ!!!


であれこれ調べた結果、
●ストラテジのプログラム構造はこんな感じ。
--------------------------
1.最初のブロック
  おまじないと、変数の定義
  ※変数の値の初期化は後述のResetStrategyでする

2.InitStrategy関数
  外部パラメータ(ForexTester2の画面で変更できる変数)の設定。

3.DoneStrategy関数
  ストラテジのDLLが終わる時に呼び出される関数
  メモリの開放とか、ファイルハンドルの開放とか

4.ResetStrategy関数
  定義した変数の初期化や、使うインジケータ生成

5.GetSingleTick関数
  1ティック(厳密にはデータのジェネレート時に指定された粒度)で呼び出される関数。
  要は、ここに本来の売買ロジックを書く。
  Ask/Bid等の予約変数に最新値が設定された状態で呼び出される。
--------------------------


この手のプログラム作るのは初めてのオレ。
石橋を叩いて壊す渡る性格のオレ。

   
まずは、プログラムの中身は無修正で、ストラテジの名前だけ変更してコンパイル。

まずは、コンパイルが上手くいき、DLLファイル完成!!!
出だし順調やん!!!

そして、直感で探して、「File」→「Install」→「Install New Strategy」でインストール!

いいぞいいぞ!!久しぶりに順調やぞ!!!
きっと神様も応援してくれてるんや!!


さてと、実行するか!!

ん??

どっから、実行するんや???


「Testing」メニューに、「Enable/Disable Strategy Execution」というのを発見
すくなくとも、これを選択する必要はありそうやな。ぽちっ。


。。。。しーん。。。。



あ!!! メニュー下のツールバーで、「Start Test」の横のアイコンや!!
アイコンにマウスカーソル移動させると、「Start fast test」と表示されとる!!

メニューに用意しとけっちゅーねん。だいぶ探したやないか。。


。。。。。しーん。。。。。


ん??ピクリともせん。。。


あ!「Tools」→「Strategies List」で実行するストラテジにチェック入れて実行せなあかんねや!
お!ちゃんとわしが作ったストラテジ認識されてるやん!

ちょっとまてよ。
まずは、元から入っているサンプルから実行しよ!

そして、サンプルストラテジにチェックして、実行!!

再びしーん。。。。

ん????
なぜだ??サンプル提供されているやつやで!?

で、サンプルストラテジのパラメータを見たら、Currency(取引する通貨ペア)は、USDJPY
クリックしたところ、EURJPYだけが選択可能。
とりあえず、EURJPYに変更してみて実行!!

動いた!!!!

やったー!!!
やった---!!!!!



つまるところ、やりたい通貨ペアで実行する場合は、以下の手順が必要。
-----------------------------
1.まずはHistoryModeに変更
2.(まだデータをインポートしてなければ)テストしたい通貨ペアのデータをダウンロードしてインポート
3.テストしたい通貨ペアをジェネレート
4.TestingModeに変更
5.「Testing」メニューの「Enable/Disable Strategy Execution」
   →これは一回やればOK
6.「Tools」→「Strategies List」で、実行するストラテジにチェック
7.チェックしたストラテジをダブルクリックして通貨ペアをテストしたい通貨ペアに変更
8.メニュー下のツールバーで、「Start Test」の右横のアイコン「Start fast test」をクリック
-----------------------------

ストラテジを修正して再テストする場合
----------------------------
1.「File」→「Install」→「Install New Strategy」でコンパイル済ストラテジ(DLL)を選択
2.「Tools」→「Strategies List」で、実行するストラテジにチェック
3.チェックしたストラテジをダブルクリックして通貨ペアをテストしたい通貨ペアに変更
4.メニュー下のツールバーで、「Start Test」の右横のアイコン「Start fast test」をクリック
----------------------------


そして、今度は自分で作った(といえるかは微妙だが)ストラテジを実行!!



自分でコンパイルしたストラテジの実行おっけー!!!!!!

光が差してきたぞ!!

神様はオレの味方だ!!!


しかし、なぜForexTester2はこんな絶滅危惧種のDelphiという言語を採用したのかのぉ。。。
VisualC++はメジャーやが、ふつーの人には難しいぞ。

ま、おかげでフリーのコンパイル使える事になってよかったんやけど。

そして、珍しくバックテスト(自動)時代が順調に始まり、「FXシステムトレード初心者奮闘記」は続くのでした。


0 件のコメント:

コメントを投稿