Optimization機能の少し変わった活用法

Optimization機能の少し変わった活用法


今回は、Optimization 機能の少し変わった使い方を紹介!


週1回、決まった時間に買いポジションを持ち、決まった時間に決済する
といった売買ルールを作り、曜日や時間をパラメータ化することで、
過去の一定期間において、レートが上がり易かった時間がわかるというもの。


今回は、先月の下げの中での上がりやすかった時間を調べてみましょう!

まずは、
パラメータですね!

extern int TakeProfit=100;
extern int StopLoss=50;
extern int OpenWeek,OpenHour,OpenMinute,CloseHour,CloseMinute;

としましょうか。TakeProfit や StopLoss は無くてもいいのですが
指定した結果も調べられるように付け加えてあります。

その下の変数は、ポジションを取る曜日、時間、分、手仕舞いの時間、分です。
ここで、手仕舞いの曜日が無いのは、24時間以内に手仕舞いするため
指定してません。
(1週間以内に手仕舞いするというルールでは CloseWeek が必要になります。)

そして、記憶用の変数として

int bar;

と書きます。


次に

int start()
{

return(0);
}

の中身を書いていきましょう!

指標の計算が無いのでいきなりオーダーです^^;
まず、

int OpenPos = OrdersTotal();

として変数 OpenPos にポジションの数を代入します。

次に、

if (OpenPos < 1)//ポジション無し
{

}

として、{}内にポジション無しの時のオーダー条件とオーダーを書いていきましょう!


if(bar!=Bars
&& TimeDayOfWeek(CurTime()) == OpenWeek
&& TimeHour(CurTime()) == OpenHour
&& TimeMinute(CurTime()) >= OpenMinute)
{
OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(StopLoss*Point), Ask+(TakeProfit*Point), "Buy", 0, 0, Blue);
bar=Bars;
}

です。
上から、
bar が Bars ではない
今の曜日が OpenWeek のとき
今の時間が OpenHour のとき
今の分が OpenMinute 以上のとき
です。

ここで、TimeDayOfWeek(CurTime()) は今の曜日を数字の0~6で表すものです。
0の日曜日から6の土曜日までです。

そして、OrderSend でオーダーし記憶用の変数 bar に Bars を代入。

ここで、 OpenMinute 以上のときとしたのは、たまたま OpenMinute で指定した
分のデータが無かったとき(変動がなかった等)、次の分でオーダーするためです。

また、1時間足以上を使わないと次のバーでもオーダーしてしまうということが起こるので注意してください!


次に、

if(OpenPos >0)//ポジション有り
{

}

として、{}内にポジション有りの時の手仕舞い条件と手仕舞いを書いていきましょう!


if(TimeHour(CurTime()) == CloseHour && TimeMinute(CurTime()) >= CloseMinute)
{
//ポジションのデータを取得
OrderSelect(0,SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}

こちらも、同じような感じですね!手仕舞いの時間と分で手仕舞いの
注文を出します。

コードは以上です。

CalculationProgram(TimeTrade_Buy).zip(mq4ファイル)

コピペします↓

//+------------------------------------------------------------------+
//| CalculationProgram(TimeTrade_Buy).mq4 |
//| SAMURAI |
//| http://samuraifx.seesaa.net/ |
//+------------------------------------------------------------------+
#property copyright "SAMURAI"
#property link "http://samuraifx.seesaa.net/"

extern int TakeProfit=100;
extern int StopLoss=50;
extern int OpenWeek,OpenHour,OpenMinute,CloseHour,CloseMinute;
int bar;

int start()
{

//Order
int OpenPos = OrdersTotal();
if (OpenPos < 1)//ポジション無し
{

if(bar!=Bars && TimeDayOfWeek(CurTime()) == OpenWeek && TimeHour(CurTime()) == OpenHour && TimeMinute(CurTime()) >= OpenMinute)
{
OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(StopLoss*Point), Ask+(TakeProfit*Point), "Buy", 0, 0, Blue);
bar=Bars;
}
}
if(OpenPos >0)//ポジション有り
{
if(TimeHour(CurTime()) == CloseHour && TimeMinute(CurTime()) >= CloseMinute)
{
//ポジションのデータを取得
OrderSelect(0,SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}
}
return(0);
}


さて、これをコンパイルしたらいよいよです!
メタトレーダーのテスターでCalculationProgram(TimeTrade_Buy),SUMURAI を選び、
通貨は USDJPY にしときますか。
モデルで Every tick を選ぶとすごく時間がかかるので
今回は、Control points にしましょうか。
(時間に余裕があるときは Every tick で調べてみましょう)

日付と時間を使用にチェックをいれて2007年11月の月初めから月末までを選びます。

そして、ここから重要です!
Expert properties をクリック。
Testingタブを選択。Initial deposit を10000のUSDにしときましょう。
パラメーターの入力タブを選択。
TakeProfit と StopLoss は100と50のままにしときましょうか。
OpenWeek 以下5コにチェックを入れます。スタートの列は全て0のままにしておきましょう。
OpenWeek のステップは1。ストップは6。
OpenHour のステップは1。ストップは23。
OpenMinute のステップは10にしましょうか。となるとストップは50。10分おきに調べるということですね。
CloseHour と CloseMinute も同じように1と23、10と50といった具合です。
OpenWeek に0や6も含めるのは、業者によってデータの時間が違っていて、週の最初のデータが日曜日の夜から始まってたりするので、全てで調べてみましょう。(蓄積データはツールのHistory Center でみれます。)

そして、OKボタンを押して、Optimization にチェックを入れましょう!
期間は、H1 以上にしなければなりません。今回はH1でやってみましょう。

いよいよ計算開始です!スタートボタンを押してしばらく待ちましょう!


その間に、一旦CMです。

金持ち父さん貧乏父さん

↑世界中のみんなが読んだ本。日本でも200万人以上が読んでます。
金持ち父さんシリーズの1作目。このシリーズを読んでない人は、まず入門編としておすすめします!
私はこの本で、お金(収入)に対する概念がガラリと変わりました!


はいっ。
計算が終了しましたら、Optimization Results タブをクリックして、
結果を見てみましょう!利益が出た曜日と時間の組み合わせが表示されています。
OpenよりもCloseの方が早い時間の場合は次の日の手仕舞いということになります。

でも、このままではチョットわかりづらいので、私はエクセルにコピーして見たりします。
やり方は、データのどこでもいいので右クリックして、Copy All を選択。エクセルを開いて2段目に貼り付け。一段目に項目を入力して、一段目全てを選択。データ→フィルタ→オートフィルタです。
これで、いろんな条件で絞り込んで見たりできます。
Profit factor が空欄(または0)のデータは勝率100%ということになります。

こんな具合にして、利食い損切り幅を狭めたらどうかとか、過去1年間の傾向や売りの場合はどうなのか、CloseWeek を加えて、一週間以内で手仕舞いするシステムではどうなのか(計算時間がかなり長くなってしまいますが^^;)、などいろいろ試すことができます。

今回は、このへんで。


次回は、FX システムトレード派ブログランキング現在6位の【MetaTraderでFX自動売買ブログ】さんの12月13日の記事が気になっていますので、そちらの研究と検証をして、記事を書きたいと思います!

みなさんのおかげでランキング順位があがってきています!
ありがとうございますm(._.)m
にほんブログ村 為替ブログ FX システムトレード派へポプログ人気fxブログランキング

2007年12月16日|コメント (2)

カテゴリー:EAの作成方法

コメント (2)

こんばんわ、為替龍です。
いつもすごい詳しい内容な記事ですね。
勉強になります。

次回を楽しみにしてます。

投稿者:fc888 |2007年12月17日 01:40

こんにちわ!
為替龍さんのブログは情報量がすごくて
こちらこそ、勉強させていただいてます。

いつも、有益な情報をありがとうございます。
これからも、よろしくお願いします。

投稿者:慶次 |2007年12月17日 10:54

コメントを投稿する

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






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

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