ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

忙しいです。ネタもないし・・・

2009-12-27

ForexTester2 のインジケータを作る方法。

先日紹介した、ロブ・ブッカーさんの本によると、Forex Tester(フォレックステスター)の開発者は、MetaTraderの開発にも携わっていたと書かれています。どうりで、MT4 とForex Tester2 の画面が似ているわけですね。

Forex Tester2 は、MT4 と比べると、かゆいところに手が届く仕様になっている点も多いのですが、 MT4 に慣れきっている私にはまだ優劣つけ難いです。4時間足チャートと5分足チャートを両方開いて、休日にチャートを平日同様に動かして裁量トレードの練習をしたい人は、ForexTester 2 を使うしかないと思いますが、そうでなければ、MT4 のストラテジテスタで十分な気がします..。^^;



そんな ForexTester2 でも、MT4 同様にインジケータを作るコトができます。同様…というほど簡単ではないのですけど、将来、自作してみたい人向けにメモを残しておきます。



(1)コンパイラの導入

http://sourceforge.net/projects/lazarus/files/ から、lazarus-0.9.28.2-fpc-2.2.4-win32.exe をダウンロードして、インストールします。海外のヘタレなフリーウェアをインストールする時の鉄則は、

・インストール先はデフォルト(C:\lazarus)のまま変更しない。

・インストール先フォルダのパスに日本語や半角スペースを含めない。

という暗黙の掟がありますので、それに従って C:\lazarus に入れるのが吉です。


(2)ソースコードの準備

C:\ForexTester2\Examples\Indicators\Delphi\IndicatorsSrc

以下からお好みのインジケータのコード1つと、(例えば、BollingerBands.dpr)

C:\ForexTester2\Examples\Indicators\Delphi

から、

IndicatorInterfaceUnit.pas

TechnicalFunctions.pas

を1つのフォルダ内にコピーしておきます。

f:id:fai_fx:20091226182545p:image


(3)プロジェクトファイルの作成

コンパイラの Lazarus を起動します。

起動後にファイルが開かれている場合は、File->Close all editor files を選んで全て閉じます。

File -> Open から、BollingerBands.dpr を選びます。

f:id:fai_fx:20091226182606p:image

新しいプロジェクトを作りますか?と聞かれたらYes を選びます。

f:id:fai_fx:20091226182637p:image

現在開いているプロジェクトを保存しますか?と聞かれたら No を選びます。

f:id:fai_fx:20091226182636p:image

Create a new project ダイアログがでたら、 Library を選んでOK します。

f:id:fai_fx:20091226182635p:image


(4)コンパイルオプションの設定

Project -> Compile options を開きます。

Parsing タブで、Syntax mode を Delphi にします。

f:id:fai_fx:20091226182634p:image

Code タブで、Target OS を Win32 にします。

f:id:fai_fx:20091226182723p:image

Linking タブで、

・Display Line Numbers in Run-time Error Backtraces のチェックを外します。

・Strip Symbols From Executable のチェックを入れます。

・Link Smart のチェックを入れます。

f:id:fai_fx:20091226201128p:image

これでOKして閉じます。



(5)追加ライブラリの設定

Project -> Project Inspector を開きます。

f:id:fai_fx:20091226182804p:image

+(プラス)ボタンを押し、New Requirement タブの Package Name で LCL を選びます。

f:id:fai_fx:20091226182758p:image

OKすると、LCLが追加されます。

f:id:fai_fx:20091226182838p:image

LCLの追加を忘れると

BollingerBands.dpr(1,1) Fatal: Can't find unit graphics used by BollingerBands

のエラーが起きます。


(6)ソースコードの修正

2009.12.26時点では、必ず1箇所の修正が必要で、

f:id:fai_fx:20091226183807p:image

上図の uses の部分に Interfaces, を加えて下図のようにしてください。

f:id:fai_fx:20091226183805p:image

この修正をしないと

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterCustomImageList

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterMenuItem

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterMenu

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterMainMenu

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterPopupMenu

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterDragImageList

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterControl

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterWinControl

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterGraphicControl

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterCustomControl

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterScrollingWinControl

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterScrollBox

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterCustomFrame

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterCustomForm

BollingerBands.dpr(110,1) Error: Undefined symbol: WSRegisterHintWindow

BollingerBands.dpr(110,1) Fatal: There were 15 errors compiling module, stopping

というエラーが発生します。




(7)コンパイルする。

Run -> Build を実行します。成功すれば、以下のメッセージが出ます。

f:id:fai_fx:20091226182856p:image


出来上がったDLLを C:\ForexTester2\Indicators にコピーしてForexTester2を再起動すれば利用可能になります。

機能の異なるDLLを作った場合は、DLLの名前を変えれば違うインジケータとして認識されるようです。


実際に作ってみたのが、SMA基準のBollingerBands(下図、赤)で、EMA基準の青緑とは微妙に違っています。

f:id:fai_fx:20091226202500g:image

SMA基準のBollingerBandsが欲しい人はこちらからダウンロードしてください。



Delphi でコンパイルするには・・・


Delphi 2007 以前の古い Delphi をお持ちの人は、おそらく、何の苦労もなくコンパイルできると思います。

Delhhi 2009,2010 を使いたい人は、ここを参考に、PChar -> PAnsiChar , String -> AnsiString の書き換えをすればOKです。書き換えをしないと、"Bollinger Bands" というインジケータの名前が "B" だけになって動作しません。







まとめ


mq4ファイルを開いて、コンパイルボタンを押すだけでインジケータが出来上がる MetaTrader って素晴らしい!

そう思いません?笑




追記

http://blog.livedoor.jp/ahaha_fxtrader/ こちらのブログでは、ForexTester2でのストラテジ作成&テストをされているようです。かなり参考になると思うので読んでみてください。

serfserf 2009/12/27 07:22 感心して拝見させてもらっている初心者です。
ADXと移動平均線のクロスがエントリーサインと提示しているサイト
(http://fxcommunity.jp/trader/suke/?cat=8)を見てMT4のADXにMovinge Averageを
表示させたいのですがドロップできません。
是非,方法を教えてください。よろしくお願いいたします。

HigurashiHigurashi 2009/12/27 14:13 Forex Tester のことで質問させて頂きました者です。 Forex Tester で複数のチャートを開いて、実際のトレードと同じ環境でトレードの練習がしたくてお願いいたしました。 早速ご親切な回答を下さいまして、涙が出そうな位にうれしくて感謝しています。 本当にありがとうございました。

fai >serf Higurashifai >serf Higurashi 2009/12/28 00:59 self さん
ドロップしたMovinge Averageの適用価格にはindicators data を選んでいますか?

Higurashi さん
http://onigirifx.com/ のforumが詳しそうなので参考にどうぞ。

MackMack 2009/12/31 04:57 こんにちは。
最近このページを見つけ,身からウロコのような記事が沢山あり,
過去ログまで閲覧しています。
先日ForexTesterを入手し練習しているのですが,MT4にしかないインジケータである
VQやVQ2をFTに表示させる事も可能なのでしょうか?
上記記事の途中でVQのソースを貼り付ければ良いのですか?

お忙しいところ申し訳ありません。お力添え願います。

こりんこりん 2010/01/14 10:39 はじめまして。
ForexTesterで使用できるように変換したMT4インディケーターを探してこのサイトにたどり着きました。
全くプログラムに無知なのでもう少し教えていただきたいのですが、このコンパイラというものでは、すでにあるMT4インディケーターをFTに使用できるよう変換ができるのでしょうか?
もしそうならば、図々しいのですが、MT4インディケーターをそのままFT用に変換する手順をご教示いたただけないでしょうか。
FTを購入したものの、使いたいインディケーターがなく、探してもなかなか見つからず、思うようなテストができず苦労しております。
全く無知ながら、自分でMT4インディケーターが変換できたらな?と考えていました。
faiさんのこの記事でもしかしたら私でも変換出来る??と淡い期待を抱いて書き込みさせていただきましたがプログラム知識がない者には難しいでしょうか、、、?

fai>Mack こりんfai>Mack こりん 2010/01/14 18:11 こんにちは。

この記事は、相当なプログラミングの知識を持っている人向けに書いたものなので、
http://www.forextester.com/forum/viewforum.php?f=3
でインジケータを見つけられなかったら 諦めるしかないと思います^^;

こりんこりん 2010/01/14 18:52 fai様

早速の回答ありがとうございました。
やはり相当な知識が必要なのですね。
あきらめがつきました。ありがとうございました。

ななえななえ 2010/02/23 13:06 初めまして
ForexTesterで「IndicatorInterfaceUnit」を検索して探してこのサイトにたどり着きました。
先日ForexTesterを入手しインジケータの作成に取りかかろう、って事で大変参考になりました。
と、言うのもDelhiを久しぶりに使おうとインストールを試みるも認証でエラー、仕方が無く
2005、7,6、オンライン認証の要らないdelphi5まで遡って四苦八苦しているところで
Lazausに巡り会いました。すばらしいですね、このツールは!!
そんなこんなで、、一点!
DLLの最適化方法をご教授いただけないでしょうか?
既存のソールを利用して同様に作成すると、ほぼ15倍ぐらいで、付属のDLLを比較しても
結構なサイズです。デバック用のシンボルやもろもろを解除するにはどのような設定を行え
ばよろしいでしょうか?
不躾なお願いで申し訳ないのですが、宜しくお願いします。

fai > ななえfai > ななえ 2010/02/23 14:41 こんにちは。

Lazarus を使う場合、↑この記事の Linking タブ の通りに設定するぐらいしかできないと思います。
本家のwiki にも同様のことが書いてあります。
http://wiki.lazarus.freepascal.org/Lazarus_Faq#Why_are_the_generated_binaries_so_big.3F

これ以上にサイズを小さくしたかったら、最新のDelphi か、VC に乗り換えるしか無いでしょう..。

ななえななえ 2010/03/03 11:12 delphi2005!インストール完了しました。。
.NET1.1インストール要求で、敢えてインストール済みを削除して新たに要求通り
再インストールで無事完了しました。認証エラーの原因も分かり久しぶりにDelphi復帰です。
なお、サポート状況ですが、Delphi7からupdateサポートは続いておりました。
もう使っている人はいないだろなぁ・・と思いつつ!
肝心なサイズですがほぼ同様のサイズに縮小できました。
どうもありがとうございました。

まるまる 2010/04/18 00:12 はじめまして。
この記事をよみ、Forex TesterにRCI(SpearmanRankCorr.mq4)のインディケーターを取り入れたいと思い、試みたのですが、エラーメッセージがでて、できませんでした。プログラミングの知識は全くなありません。どのようにしたらいいか教えていただけないでしょうか?
よろしくお願い致します。

fai >まるfai >まる 2010/04/18 01:47 プログラミングの知識がないと無理だとおもいます。

http://www.tantalusonline.com/Traditional.htm
で売られているのを買うほうが手っ取り早いかもしれません。

まるまる 2010/04/20 16:58 お忙しい中ご回答ありがとうございました。
FTのデモがなかなか使いこなせません。使いこなせるようになってから購入を検討したいと思います。

りおんりおん 2010/04/20 17:13 はじめまして。
Forex Testerにペリーカウフマンの「効率レシオ」を入れたいと思うのですが、
プログラミングもMT4インディケーターの変換もできそうにありません。
何か良い方法がないかご教授いただけないでしょうか?
よろしくお願いいたします。

fai >りおんfai >りおん 2010/04/20 21:29 まずは、国内や海外のフォーラムで探しまくる辺りから始めるのはどうでしょう?^^;

ピースピース 2010/06/13 17:07 はじめまして
いつも楽しみにしております。全然ついていけてませんが・・・、
FX初心者です。
週末はMT4で練習しておりますが、できれば週末も売買(デモ)できるような仕組みを作れないものでしょうか、
超単純なものでいいのですが・・・、
もうすでにあるのであれば是非その存在を教えていただければと思います。
何卒よろしくお願いいたします。

takashitakashi 2010/06/16 18:35 はじめまして!
お陰さまで、早速スーパーボリンジャーをFT2に組み込めました。
ぶしつけなお願いですみませんが、スパンモデルのインディケーターも作ってアップしていただけないでしょうか?

何卒よろしくお願いします!

fai >takashifai >takashi 2010/06/17 00:08 興味ないので却下です。。

kotobukikotobuki 2010/07/03 12:42 はじめまして。こんにちは。
メタトレーダーを利用しながらForexTester2で練習しているものです。

ForexTester Forumで Schaff Trend Cycle を探していてメタトレーダーのソースコードは
載っていたのですが、そのコードのままでは教えていただいた、lazarusで
こんぱいるできいようです。

一所懸命ForexTester2付属の BollingerBands.dpr と見比べて
修正しよう試みましたが、出来ませんでした。

どこを修正したらいいのか教えていただけないでしょうか?

よろしくお願いします。

ahaha_fxtraderahaha_fxtrader 2011/01/05 12:36 はじめまして!!
この方法でストラテジを作ってはバックテストを繰り返しております。
この記事、本当に役に立っています!!
この記事が無ければ全く進んでいなかったかもしれません。

貴重な情報ありがとうございます!

ForextesterForextester 2011/03/05 16:19 この記事の内容だと、「Forextesterのインジケータを作る」内容にはなってますが、MT4のインジケータをForextester用にする内容にはなってないですよね?使ってるソースForextesterのものだし・・・

fai_fxfai_fx 2011/03/05 16:25 はい。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証