2012年09月03日

Profit Factor

PF表示機能を装備。

20120904_2.gif
ダブルオーさんのマクロスシステムのマネ。

拡大。
20120904_3.jpg
右から、「現在の獲得Pips」「PF」「勝率」 
(因みに EURUSD day 2009年6月からの成績 ※スプレッド考慮済)


収益曲線までは難しいが、シグナルから目測するよりは断然良い。


Code的には以下のような流れで、特に難しいところはなし。

ドテンシグナルが出たプライスを変数に格納して現在値から獲得Pipsを算出。
次のシグナルで、今までの獲得Pips(損失Pips)を総利益・総損失の変数に代入。
同時に総トレード数をカウントする変数に+1を代入。
利益が出た場合には勝率をカウントする変数に+1を代入。

あとは各変数を演算して表示するだけ。


よく考えてみれば、この機能はエントリとクローズが明確なら、どんなタイプのインジケーターに搭載することも可能。
バックテストできない、という人もいるでしょうから、特に売り物ならつけてあげたほうが親切かも。

また、icustomを使えば、複数インジケーターを利用した裁量システムの過去の成績も同様に計ることができると思います。
たぶん。




posted by Curry_FX at 07:03| Comment(10) | TrackBack(0) | Z-CuneMA | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
僕は直近の勝率が低いシステムを評価しているので
勝率や成績が低いのを表示してくれるのを
作って欲しいなw


トレンドフォロー追随システム
or
モメンタム逆張りシステム

リスクリワード1;2で
直近 20回ぐらいのトレードで
勝率20%以下 の最適化された数値を代入
そういうのが出たら マジで欲しいw


ドローダウン逆張りシステムとかってなんでないんだろう。

あわよくば、直近100回ぐらいのトレードの
収益グラフが表示されたら
裁量もかなり強化されるよね。


これは凄いものができるんじゃなかろうか。
Posted by L at 2012年09月03日 09:22
Lさんへ

負け込んでいるストラテジーを探してアンチトレードしたいってことですかね?

まず、元になるストラテジーは用意する必要があります。
その上で、init() フェイズで記事本文に書いたような計算を for ループで廻し、パラメーター毎の結果を格納。
勝率やらPFやらが最も悪かったパラメーターで strat() フェイズを動かすようなCodeを書けば、たぶんインジケーターだけで最適化(?)できるのでは。

まぁ、簡易EA作ってテストする方が簡単かな・・・。


あと、収益グラフのインジケーター上での表示については、以下が参考になるかと。

インジケータだけを使ったバックテスト。
ttp://d.hatena.ne.jp/fai_fx/20100418/1271522150

TOTAL PROFIT を指標バッファに格納して、サブウィンドウに表示してるようです。

Posted by Curry_FX at 2012年09月04日 06:36
いつもお世話になりまして、有難う御座います

さいまこさんの、SAIMAKO-CORREL、面白いですよ

御参考で御座います

http://blogs.yahoo.co.jp/tomatomato8888/23872134.html
Posted by とまと at 2012年09月08日 11:12
カレーさん

これまた、面白いIndicateをありがとうございます

手法サイクルを見るのに約立ちそうです!
ありがとうございます。
Posted by L at 2012年09月08日 11:29
とまとさんへ

さいまこさんのは計算Codeが分からなかったので、下のヤツとオーバーレイして比較してみました。

http://curryfx.seesaa.net/article/258845463.html

リターン計算でも、Rawprice計算でも基本同じ挙動でしたが、ビミョーにズレあり。
計算処理の違いなんですかね。
Posted by Curry_FX at 2012年09月09日 08:56
Lさんへ

StrategySim_1.0.mq4 はなかなかおもろい着想のインジケータですね。

Posted by Curry_FX at 2012年09月09日 08:59
こんにちは!


上記の理由は2つあります。

1.ブローカーごとの値段の差異
2.データーの欠落

現在-起点の変化率を考えるだけなら問題は主に1だけですが、
リターン系列の相関係数の場合、スライスする時間が全ての銘柄で一致している必要があります。

faiさんの記事にもありますが、iBarShiftを使っても、そもそも欠落しているデータが補完されるわけではありませんので・・・。
http://d.hatena.ne.jp/fai_fx/20091125/1259081398
http://d.hatena.ne.jp/fai_fx/20091019/1255878028
http://d.hatena.ne.jp/fai_fx/20091018/1255791630
http://bbs.fxtec.info/x/c-board/c-board.cgi?cmd=one;no=389;id=metatrader

ダウ先物とKu-Chartを併記する場合も同じで、ダウ先物の取引時間とFXの取引時間は一致しません。
両者が一致するように工夫する必要があります。

大変有効な方法なのですが、多くのトレーダーが使わない(使えない)のはこの技術的な問題のためだと思います。


Posted by くーちゃん at 2012年09月11日 20:33
くーちゃん様へ

相関係数ですが、実際にオーバーレイした画像は以下になります。

http://curryfx.seesaa.net/upload/detail/image/20120910_3.gif.html

同じブローカーで、使っているヒストリカルデータも同じなのにズレが出てます。
となると、微妙な誤差の要因はインジケーター側なのかな? と思っています。


>ダウ先物とKu-Chartを併記する場合も同じで、ダウ先物の取引時間とFXの取引時間は一致しません。
>両者が一致するように工夫する必要があります。

これについては原始的なソフト対策をとっていましたが、リンク記事を参考にすればもう少し気の効いた対応が出来そうですね。
ひと工夫してみます。

有意義なコメント、ありがとうございました。

Posted by Curry_FX at 2012年09月12日 07:06
ソースを見ないと分かりませんが、別途気になった点ひとつ

何回か申し上げてますが、正確な相関係数は
log(close[0]/close[1])・・・どうしの比較を使います。

データに欠落がなければ
case OPENCLOSE_MODE: return(iClose(Symbol(), 0, shift) - iOpen(Symbol(), 0, shift));
case OPENCLOSE_MODE: return(iClose(Pair, 0, Yshift) - iOpen(Pair, 0, Yshift));

case OPENCLOSE_MODE: return(MathLog(iClose(Symbol(), 0, shift ) / iClose(Symbol(), 0, shift+1 ) ));
case OPENCLOSE_MODE: return(MathLog(iClose(Pair, 0, Yshift) / iClose(Pair, 0, Yshift+1) ));
とすればいいと思いますが・・・。

一度CSVで直近のデータをエクセルに吐き出して、ツール->相関係数で正しい値を調べてみてはいかがでしょう?



Posted by くーちゃん at 2012年09月12日 14:53
くーちゃん様へ

Code添削、恐れ入ります。

Open[i]とClose[i+1] の間のギャップが反映されなくてはマズイですね。
ちょっと考えれば、当然の話でした。

というわけで、訂正したものとの比較がこちらです。


http://curryfx.seesaa.net/upload/detail/image/20120912_3.gif.html


誤差は減ったものの、完全一致ではない。
そこでMT4のヒストリカルデータからエクセル計算した結果と比較したところ、さいまこさんの New-Correl2 の方とより一致してました。

http://curryfx.seesaa.net/upload/detail/image/20120912_4.JPG.html

つまりは、^L_Correlation の相関計算とエクセルの計算方法に若干の相違があるようです。
Posted by Curry_FX at 2012年09月13日 07:36
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

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