トレイリングストップ2
前々回の記事トレイリングストップの続きです。
今回は、トレイリングストップを機能させる条件を付け加えたいと思います。
その条件とは、いままでの条件に
ボリンジャーバンドの幅が一定以上になったら、
トレイリングストップを機能させる
といったものをさらに加えたいと思います。
まずは、パラメータとして
extern int BandsPeriod=4;
extern double TrailingStopStartBandsPerBid =1.5;
とします。
これは、ボリンジャーバンドに使う平均移動線の計算期間と
『ボリンジャーバンドの幅が一定以上になったら』というところの
値です。
後にでてきますが今回は『バンド(標準偏差1倍)の上下幅が売値の1.5%になったら』
ということにしました。
次に、計算として
if(OpenPos >0)//ポジション有り
{
の後に
//bandの幅
double BandsWidth = iBands(NULL,0,BandsPeriod,1,0,PRICE_CLOSE,MODE_UPPER,0)
- iBands(NULL,0,BandsPeriod,1,0,PRICE_CLOSE,MODE_LOWER,0);
double BandsPerBid = BandsWidth / Bid * 100;
としてます。
これは、iBands関数を使って、バンドの上下幅を計算し、
変数 BandsWidth に代入。
つぎに、BandsWidth が売値の何パーセントかを計算し、
変数 BandsPerBid に代入。
といった感じです。
最後に、
if(Bid>OrderOpenPrice()+TrailingStopStart && OrderStopLoss()<TrailingStop && BandsPerBid>TrailingStopStartBandsPerBid)
のようにトレイリングストップを機能させる条件文の部分に
&& BandsPerBid>TrailingStopStartBandsPerBid
と付け加えます。
これで、値動きが大きいときだけトレイリングストップを機能させる
といったものになりました!
コメント (2)
慶次さんはじめまして
メタトレーダをしらべていてこのブログをみつけました、これからも楽しみにしています!
たま
投稿者:たま |2007年12月 9日 20:22
たまさん、はじめまして!
ご期待にこたえられるように
がんばります!
更新は、週1回程度とゆっくりなんですが
有益な記事を書いていきたいと思ってますので
よろしくお願いいたします!
投稿者:慶次 |2007年12月10日 08:12


