検証と改善その4

ここでは、「検証と改善その4」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
検証と改善その4

前回、ストップの置き方で勝ちトレードが負けトレードになってしまう事がわかりました。
意味のある(相場にあった)ストップ、ATR(Average True Range)を使ったストップの入れ方とはどういったものでしょうか?

ATR(Average True Range)はTR(トゥルー・レンジ、真の値幅)の平均の値の事です。この値を使用する事により、普通の値動きではかからない様にストップを置く事が出来ます。
では、ATRの値が20だった場合、ストップを20と置けばいいのでしょうか?
ATRはあくまでも平均の値です。値幅10銭の足と値幅30銭の足のATRは「20」になります。
20のストップを置いてしまうと2本目の足でストップにかかってしまいます。
通常、ATRの値を何倍かした値にストップを置きます。

今回は、14本の平均で3倍にした値にストップを置いたコードを書いていきます。
iATRを使用してATRの値を取得します。
double stop=iATR(NULL,0,14,0)
これで、変数stopにATRの値が代入されました。
後は、3倍にして検証と改善その2のストップの部分に記入すれば完成です。

ここで、小数点以下の桁数を合わせなければならない問題が生じます。
単純に、pointでもいいのですが、この場合クロス円は「0.01」で計算されます。
サーバーのデータが小数点以下3桁のところもありますので、このままではエラーになります。
そこで、NormalizeDoubleMarketInfoを使用します。
NormalizeDouble少数をある精度(桁数)で四捨五入してくれます。
また、MarketInfoは通貨の様々なデータの値を取得してくれます。今回は、MODE_DIGITSを使用して
通貨ペアの小数点以下の桁数を取得します。

double stop=NormalizeDouble(iATR(NULL,0,14,0)*3,MarketInfo(Symbol(),MODE_DIGITS));
足の数14本分のATRを2倍して、表示している通貨の小数点以下の桁数で四捨五入した値を、変数stopに代入しています。

ATRによるストップの設置

Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-stop, 0, "Buy", 0, 0, Blue);
Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, Bid+stop, 0, "Sell", 0, 0, Red);


これで、意味のある(相場にあった)ストップになったはずです。
ではバックテストの結果です。
今回も、今までと同様の条件で行いました。
GBPチャートレポートSTOP3
GBPチャートGraphSTOP3

ストップを置かなかった時と比べて僅かですが、利益が上がっています。
では、詳しく見てみましょう。

GBPチャートレポートSTOP3
相場データの精度(Modelling quality)は90%ありますので信頼できるデータです。
総期間損益(Total net profit)は21130.79ドル。1000ドル程利益を伸ばしています。
勝率(Profit Trades )は40.91%で変わらず。
最大損失額が-1477.04
平均損失額が-540.56 で 40ドル程、損失を抑えたことになります。

平均利益額1369.84に対し平均損失額-540.56ですので、きちんと、損小利大のトレードを行っている事になります。
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://fxsk.blog105.fc2.com/tb.php/90-a7842445
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。