NewNiceにフィルタをつける

NewNiceにフィルタをつける


前回の記事で、RCIのフィルターを付け加えたいという意見がありましたので、
改良したものを、書いていきたいと思います。

その前に、
応援お願いします!→rank応援クリック


今回は、MetaboNewNiceRCI という名前にしました。インディケータは
SpearmanRankCorr というものを使います。
2つともZipフォルダに入れてあるので、それぞれ所定の場所に保存し、コンパイルしてください。

MetaboNewNiceRCI.zip


今回の変更点は、RCIのフィルターを付け加えたのはもちろんですが、
ボラティリティ確認のためのバンド幅の初期値を少し広めにとったことと、
へばりつきの定義を少し和らげたこと。

ドル口座、円口座を選べるようにしたことと、同時に複数の通貨を取引できるようにポジション確認に通貨の区別も加えたこと。

そして、付属として、本日のある時間までに残高が設定した金額を割ったら取引しないといったストップシステムを付け加えました。(これについては、まだ少し使いづらい部分があるので細かいところはそれぞれ改良してください。)

という感じです。


では、さっそくコードをみていきましょう!

パラメータには

extern int RCIPeriod=52;

extern string setsumei2="【time】時までに残高【border】を割ったらストップ";
extern bool StopSystem=false;
extern int time=23;
extern double border=0;

というのが加えられました。

フィルタ用のRCIの計算期間を設定できるようにしました。

あとは、付属のストップシステムの設定用ですね。必要がない場合は、
StopSystemをfalseのままにしておきましょう。


続いて、int start()の中身です。

if(StopSystem== true && TimeHour(TimeCurrent())<time && AccountBalance()<border) return(0);

は、もしStopSystemがtureで現在時刻が time 未満で残高が border 未満ならプログラム終了という感じです。timeを24にした場合は時間に関係なく残高が border 未満ならプログラム終了。仮に、timeを12にしたときは現地の午前中だけ有効なシステムになる感じです。


次に、

//RCIの値
double RCI1=iCustom(NULL,0,"SpearmanRankCorr",RCIPeriod,0,RCIPeriod,0,1);
double RCI2=iCustom(NULL,0,"SpearmanRankCorr",RCIPeriod,0,RCIPeriod,0,2);

でiCustom関数を使ってRCIの1コ前と2コ前の値を引き出します。
インディケータのパラメータがRCIPeriod,0,RCIPeriod,と3つあるのは、
一つ目は、そのまま計算期間なんですが、3つ目は計算期間の最大値が入ります。
デフォルトでは30になっているのでそれ以上を計算できるように、3つ目も変更するようにしました。


次に、

//買い条件
if(STC[2]<5 && STC[1]>5 && RCI1>RCI2)

として、RCIが上昇のときという条件も加えました。

そして、

for(i=2;i<=SchaffHebariPeriod;i++)
{
if(STC[i]<5) STCcnt=STCcnt+1;
}

というようにシャフが5未満ならへばりついているとみなしています。

売り条件も同様に変更しました。


そして、

//ロット計算
double mantuka;
if(USD1JPY2==1) mantuka = AccountBalance() / 10000;
if(USD1JPY2==2) mantuka = AccountBalance()/Ask / 10000;
int baituka = mantuka * Leverage;
double lots = baituka * 0.1 ;
if(lots<=0.1) lots=0.1;
if(lots>=1000) lots=1000;

として、ドル口座か円口座を選べるようにしました。ただし、円口座の場合はドル円やユロ円などに限ります。ユロドルなどを取引する場合は、別途MarketInfo関数で計算するコードが必要です。


最後に
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == 999) CurrentPosition=cnt;

として、このMetabo戦略を複数通貨同時に取引できるようにしました。


個人的な感想として、RCIとの相性は若干薄いのではといったところです。

また、いい方法があったら教えてくださいm(..)m

応援お願いします!
→FXシステムトレード派


ps
最近、優良ルールVolAveが絶好調\(^0^)/
VolAve

タグ

2007年12月21日|コメント (0)

カテゴリー:MetaTrader EA

コメントを投稿する

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)






画像の中に見える文字を入力してください。

Captchaの認証で入力ミスがありますと、コメントが消えてしまいますのでご注意ください。
コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。