2011年02月20日

リアルマネー・リアルタイム 完全結果公開

リアルマネー・リアルタイム 完全結果公開 EA紹介(3)
多聞天 (Steady Winner 改良)

今週は弁財天を紹介しようと思っていたのですが、急遽予定を変更して、多聞天の紹介をいたします。
最近、あちらこちらで見かけるSteady Winnerの改良、私もやってみました。
Steady Winner改 −> 多聞天 とします。
ほぼ、全面に手を入れましたので、改造箇所や、その結果、バグ情報も含めて紹介・解説致します。

多聞天.jpg
東大寺 「四天王立像・多聞天」 国宝 多聞天はインド神話の財宝神クベーラを前身とする
四天王の一尊としては「多聞天」、独尊としては「毘沙門天」と呼ぶ。吉祥天は毘沙門天の妃
または妹とされる。


まず、Steady Winnerのソースを手にいれます。格安28ドルなので、購入をお勧めします。
プログラムに心得のある人ならば 3時間もあれば、全部理解できると思います。
但し、売り買いタイミング決定用の関数の働きを直感的に理解するのは少し難しいかもしれません。

@定番改造 1 コーギーさんの所を参考になおしましょう。ここで直すのは
SLやTPの付け方、円口座の時のロット計算、スプレッドフィルターなど 通常のEAとして
必要な機能です。土曜日フィルターは別につけます。

http://forexportfolio.blog9.fc2.com/blog-category-36.html

あたりを手がかりに Steady Winner に関する記事を全部よまれると良いでしょう。

A定番改造 2 カブール投機日記 を参考になおします。ここでは、買いタイミングを決める
重要な要素の関数を色々いじります。 なかなかおもしろいので、記事を全部よまれると
良いです。

http://kabool.livedoor.biz/archives/51646117.html

あたりを手がかりに、
累積RSIの導入 W%R*3(もどき?)の導入 ストキャスティクス・シグナルラインの位置関係の定義
を導入します。

Bバグの手直し
ソースは3時間くらいで、読めますが、すぐに幾つかバグが起こる可能性に気がつきます。
先ほどの SL TP の付け方もそうですが、ECN 対応のやり方がまずい事に気がつきました。
これをなおすのに、結局 売り買いルーチンを全面的に書き直してしまいました。

さて、累積RSIを導入して、W%R*3(もどき?)の導入をしたら、24時間動作で 2010年1月1日から2010年12月31日の動作(FXDDのバックデータでスプレッド1.1)で プロフィットファクタ1.5
くらいでました。この時 SL=50 TP=10でした。そのバックテストはセーブし忘れたのですが、
どうも、SL TP が最適ではない感じがします。

また、ストキャスティクス・シグナルラインの位置関係の定義は返って結果が悪くなります。
(ストキャスティクス・シグナルラインの位置関係の定義についてはカブールさんも後のブログ
で、結果が良くならない事を書いていますので、使わない事にします。)

SLを2Pips づつ TPを5Pipsづつ 変化させて 最適値を求めます。それが下です。

2010_01_01-2010_12_31(FXDD).gif
多聞天最適化 2010_01_01-2010_12_31(FXDD).htm

これをみれば、Pass12番目 すなわち SL=35Pips TP=8Pips が一番利益が出ています。
しかしそれでも、年間で PF=1.68 です。 これは一寸 低いですね。

さて、ここで、累積RSIの影響をみるために RSIを色々変えてみました。それが下です。

2010_01_01-2010_12_31_RSI_90-65(FXDD).gif
多聞天最適化 2010_01_01-2010_12_31 RSI 90-65(FXDD).htm

これはRSIを90から65まで変えたものなのですが、(片側は 10-35まで変えている)
どうやら50になるまで序所に増えています。 そこで、RSIを取ってもかわらないのでは
ないかと思いとってみました。結果は取るのが一番良い結果です。
そこで 累積RSIは、なしにする事にしました。このあたりはカブールさんの結論とは逆ですが
カブールさんは累積RSIが重要で ストキャスは重要でないみたいな結論になってます。
まあ、多聞天ではこのあたりは スイッチにしてありますので、最終的にはさらにバックテストを
繰り返すつもりです。

さて、次は時間フィルタです。時間フィルタは一時間単位で掛けられる様にします。
また、時間は 内部で GMT 時間を計算してGMTで掛ける事にします。
これは、GMTに対するオフセットのみブローカー毎に変えてあげれば あとの設定は同じ
で済むからです。 私は複数のブローカーを使用していますので、いちいち ブローカー毎
に時間フィルタの計算をしたくないからです。

さて、肝心の時間フィルタの掛け方ですが、まず、一年間で SLのあった時間帯を書いて見ます。

FXDD時間設定.gif

一番上が冬時間に起こったSL 真ん中が夏時間に起こったSL 一番下がトータルです。
また、GMT JST FXDD のサーバータイムが書いてあります。一番下のみFXDDのサーバータイム
を中心にして、GMTベースで見ると 冬と夏で一時間ずれがあります。これはバックテストの
し易さもあってFXDDベースでフィルタ時間を合わせたからです。現実は冬時間と夏時間で
一時間ずらした方が良いかもしれません。

さて、この時間設定表のブルーの時間帯のみ取引をする事にします。この当たり表をみて
目の子で適当にSLの少ない時間帯にしています。で良くみてください。
2箇所の取引時間のうち、右側の方は冬時間でみると JST 4時台から8時台 つまり朝スキャ
の時間です。また、左側の方は JST 冬時間でみると 12時台から19時台 こちらも朝の
大きく動く時間を少しずらした感じになっています。まあ、理にかなった結論ですかね。
所で朝スキャの時間はブローカーがスプレッド拡大しますので、(EURUSDはましですが)
バックテストより実際の結果は悪いと見るべきでしょう。

結局、色々やって、時間フィルタまで含んでバックテストした結果です。

2010_01_01-2010_12_31_SL35_TP08-RSI+time2_(FXDD).gif
多聞天最適化 2010_01_01-2010_12_31 SL35 TP08 -RSI+time2 (FXDD).htm

Profit factor 3.08 Profit trades (85.05%) ですので、9勝1敗〜5勝1敗のペースで
取引する様ならば予定どおりという事でしょうか。
このバックテストは スプレッド 1.1 でしたので、実際の投入は スプレッド 2くらいを想定
して、TP=7pips で投入いたします。はからずしも、カブール投機日記と同じ値になりました。
SLは 35 pips と致します。

さて、その後も 幾つかバグを修正してやっと使える様になりました。
また、土曜日フィルタの実装、メール機能の実装、円口座対応と致しました。
土曜日フィルタで PF は 少し低下しました。(PF 2.9前後)

ただ今、テスト中です。

追加情報を書いてる本日(2011/03/01)の多聞天の画面を見せます。

多聞天の画面.BMP

左上のコメントは時間と共に変わります。
Lot は取引毎に再計算されて表示されます。ロット数を見ると正常動作かどうか推定できます。
Broaker Time GMT は tick 毎に表示されます。この表示のGMTが同じならば
時間が同じになっています。
5行目 TimeFilter = ON の時に取引します。
6行目は実際の取引をリアルタイムで表示します。
ポジションを持ったら Yellow で TicketNo と 現在の利益を表示します。
取引決済後 勝った場合は Green 負けた場合は Red で表示します。
この Green/Red で表示する瞬間に指定されていれば、決済メールを送ります。
また、この画面は円口座の物なので、表示は円になっています。ドル口座の場合はUSDになります。
本日はチャートの取引からも、この表示が Green になっている事からも勝った事が分かります。
また、取引するチャートはEURUSDであれば何分足でもかまいません。
私は15分足にしていますが、このみで1Hでも、もちろんかまいません。

現在のバージョンの設定についてメモしておきます (多聞天 Ver0.2)

extern double StopLossPoint = 35; // SLの設定 本文の通り
extern double TakeProfitPoint = 7; // TPの設定 本文の通り
double TrailingStopPoint = 0; // トレーリングは0の時 行わない

extern string Note1 = "Magic Number - Must be unique for each EA";
extern int MagicNumber = 123456; // マジックナンバー

extern string Note0 = "ECS broaker";
extern bool ECN = False; // ECN ブローカーの時に Trueにする
extern bool SwLot = False; // 負けた後に最低ロットにするには True

extern string Note2 = "Risk% - Valid range 0.00 - 99.99";
extern double PctToRisk = 2.00; // リスク

extern double MaxSpread = 3.5; // スプレットフィルター pips
extern double Lot = 0.1; // 固定ロットの時の値
extern bool MoneyManage = false; // マネーマネージする時は True

extern string Note3 = "SwWPR OFF(=0) ON1(=1) ON2(=2) SwRSI OFF(=0) ON1(=1) ON2(=2)";
extern int SwWPR = 2;   // W%R*3(もどき?)の時 2
extern int SwRSI = 0; // 使用しないとき 0

extern string Note4 = "GMTOffset : -12 - + 12 StartHour : 0 - 23 StopHour : 0 - 23";
extern int GMTOffset = 2; // GMT オフセットを入れるFXDD=2
extern int StartHour1 = 3; // フィルター1のスタート時間
extern int StopHour1 = 11; // フィルター1のストップ時間
extern int StartHour2 = 19; // フィルター2のスタート時間
extern int StopHour2 = 0; // フィルター2のストップ時間

extern string Note5 = "DayOfWeek 0(日曜) - 5(金曜) HourOfWeek : 0 - 23";
extern int StartDayOfWeek = 1;
extern int StartHourOfWeek = 0; // 月曜 9:00[JST]

extern int StopDayOfWeek = 5;
extern int StopHourOfWeek = 15; // 土曜 0:00[JST]

extern bool CloseMail = True; // 決済するとメールが欲しい場合 True

posted by 2chの人 at 00:35| Comment(2) | MT4 EAを使おうよ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
どーも、早速やってきましたw
いい感じできれいなグラフですね。リスクリワードも理想的な感じですね。

私も同じところを見つけてたのですが、バグ取りや最適化になかなか時間を割けず、途中で止まったままだったでした・・・。

早速メールさせていただきます。
Posted by gwd at 2011年02月21日 22:14
これは素晴らしいですね。見事にシェイプアップされていると思いますよ。
正に努力の結晶ですね。
Posted by gwd at 2011年03月03日 22:10
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。