忍者ブログ
最新記事
カテゴリー
ブログ内検索
カスタム検索
TradersShop検索

リンク
プロフィール
HN:
さとしぃ
性別:
男性
趣味:
ゲーム、読書、インターネット

Mail:forexsystecpractice☆gmail.com
☆→@

自己紹介:


06/12/04 立ち上げ。夢のためにFXを06年3月からやっております。

08/05/11 システムトレードの勉強開始。ソフトはMT4を使用。

08/08/06 FXDDにて自動売買を1000ドルの資金で開始。

08/10/09 3000ドルからまさかの大転落。100年に1度の金融危機で生き残ったシステムはたったの三つ。

08/12/09 3000ドルの資金を再投入。 徹底的に本を読み続けています。

09/03/22 7700ドル達成。

09/08/14 1000ドル割れ。

09/12/17 3500ドル復帰。

10/04/09 修行中

14/11/21 パワーアップして再挑戦



アーカイブ
カウンター
RSS
<<   2024   04   >>
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30 
25 April 2024            [PR]  |   |
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

パラメータの問題その2。


移動平均線の問題。


移動平均線をシステムに組み込むと、
絶対に、最適化の問題にぶち当たります。


この辺りどう解決していきましょう。



これは、私の知識ではないのですが、
一般的にも知られつつある方法があります。


やっぱりこれも、前回同様、「点」から「面」へという考え方で行きます。
(といっても、僕もあまり徹底していないので、改修がいくつか必要なEAがありますね。)


普通は移動平均線の利用法として2つ考えられます。

移動平均線を一つだけ表示して、トレンドの上向きもしくは下向きを測る方法です。
もうひとつが、移動平均線を二つ表示して、エントリー、イグジットのタイミングを測る方法です。



これだと、紙一重で、エントリー!だったりイグジット!だったりします。
人間の目で見れば、柔軟に対応も可能ですが・・・・。


機械に、客観性を持たせていけば一番良いですよね。


そんな方法があります。




簡単に言うと、
パーフェクトオーダーというインディケーターの考え方を取り入れます。


移動平均線を三つに増やします。



移動平均線を3本表示させると、なんとなーく上向きだなぁとか、
なんとなーく下向きだなぁとか、わかるんですね。



For ループで
移動平均線の期間をXずつずらして、上向き・下向きをカウントするとか、

For  ループで
移動平均線の計算開始箇所をXずつずらして、上向き・下向きをカウントするとか、


採ると良いかもしれません。

これならば、最適化の対象になるパラメータも「面」で右往左往するはずです。


僕なんかはパーフェクトオーダーで妥協しています。
もっとちゃんとした方がいいかもしれませんね。

拍手[1回]

PR
Coment
06 January 2010  1 : [Edit]             移動平均最適化について by watertree  (  )
さとしぃさん、明けましておめでとうございます。
ところで、移動平均線の最適化については、システムトレードの本
では必ずと言っていいほど取り上げられる問題ですね。
ただ、トレンドの継続期間が不明(裁量では多少予想できますが)
である以上、移動平均期間の最適化ではなく移動平均線の弱点を
改善する方向で考えた方がいいのかなと思います。

移動平均の弱点:遅延が特に甚だしい指標であり、ダマシが多い

私は移動平均線を使用したシステムは、MQL4の習得時に作成しただけですが、再度作るとすれば以下の通りを考えました。

 前提条件:遅延が起こり易いのはボラティリティが高い相場であることから
      ボラティリティの低い相場に限定する。
      (また、このことによりトレンド強度判定の遅延防止も出来ることから、ある程度ダマシを防ぐことができる。)

 仕様
 ※ここでは便宜上、21期間、8期間の移動平均ゴールデンクロスとします

 21期間、8期間の移動平均ゴールデンクロスが発生した時、
 1.Close[9]~Close[21]の20期間ヒストリカルボラティリティを計算する。
   計13個の20期間ヒストリカルボラティリティを13で割り、平均値を算出。
 2.Close[8]~Close[1]の20期間ヒストリカルボラティリティを計算する。
   計8個の20期間ヒストリカルボラティリティを8で割り、平均値を算出。
 3.13個の20期間ヒストリカルボラティリティ平均が閾値(これが最適化対象パラメタ)
以下の時、かつ、
  13個の20期間ヒストリカルボラティリティ平均<8個の20期間ヒストリカルボラティリティ平均
  の時、かつ、
  ADXが25以上で上昇している時、かつ、
  モメンタムが上昇の時、かつ、
  ※このモメンタムはオシレータではなく、「ワイルダーのテクニカル分析入門:パンローリング」
   に書かれているトレンドバランスシステムで使用するモメンタム計算です
  現在の終値が21期間最高値の時、
  買いオーダーを出す。
  損切りは21期間の最安値

パーフェクトオーダーについては、ほぼ同時期間にすべてのクロスが
発生する必要があるため、全てのクロスがn期間以内に発生する条件を追加する。

追記
 以前、リュシコマスさんのご質問に対する返答で書いた相場反転確認の方法ですが、直接には移動平均計算とは関係ありません。
 相場反転の計算(ADXなどのオシレータを使用するのではなく、単純な値動きの四則計算です)は別途行い、移動平均の形で画面表示しているだけです。
 計算ロジックの詳細は、すみませんがノウハウなので書くことはできません。

06 January 2010  2 : [Edit]             素晴らしいコメントありがとうございます☆ by さとしぃ  (  )
コメントありがとうございます。
緩やかにブレイクしてる感じを表現しているのでしょうか。
確かに最近作ったEAの動きを見ると、ボラティリティの低い期間はトレンド継続しているように見えます。
今度の休みに作ってみます。
差し支えなければ、ADXおよびモメンタムは何を以って上昇としているのでしょうか?

06 January 2010  3 : [Edit]             無題 by watertree  (  )
>緩やかにブレイクしてる感じを表現しているのでしょうか。
さとしぃさんのおっしゃる通りです。
>差し支えなければ、ADXおよびモメンタムは何を以って上昇としているのでしょうか?
ADXについては単に現在の値が前の値を上回っていることですが、
ワイルダーの本ではADXの値がDMIを上回っていることが重要なポイントと書かれています。
但し、これは反転のポイントかもしれず検証しないとわかりません。
モメンタムはモメンタムファクター(今日の終値-2日前の終値)を元にTBP(トレンド・バランス・ポイント)を求め、これを上回っていたら買い、下回っていたら売りとなることを表しています。詳細な計算式についてはページ数枚に及ぶ内容なのでコメントで書くことは難しいです。

06 January 2010  4 : [Edit]             無題 by watertree  (  )
コメントに載せてよろしければ、以前作成したトレンドバランスシステムのソースがあるのでコメントに入れてもいいですよ。
それを見れば大体わかると思います。

07 January 2010  5 : [Edit]             おおー。 by さとしぃ  (  )
凄いですね!
ADXやモメンタムなどの指標に疎いので、勉強もしておきますね。

トレンドバランスシステム!
出来れば見せていただければと思います。

あと、話はズレますが、
http://systectrade.com/index.php
で、メタトレーダーのバックテスト結果をアップ出来て、
ランキングで、自分の状態も確認出来るのでご利用してみてはいかがでしょうか。

watertreeさんのEAの損益曲線を見てみたいです。

07 January 2010  6 : [Edit]             トレンドバランスシステム by watertree  (  )
さとしぃさん、こんばんは。
以下のソースがトレンドバランスシステムです。
「ワイルダーのテクニカル分析入門」の内容に沿って、出来るだけ忠実にコーディングしてあります。
しかし、実行して見ればおわかりになると思いますが、勝てません。
ただ、仕掛けのフィルターや手仕舞いに応用できるかもしれないとは思います。
システックトレードのご紹介ありがとうございます。
時間のあるときに登録依頼をして見ようと思います。

//+------------------------------------------------------------------+
//| TrendBaranceSystem.mq4|
//+------------------------------------------------------------------+
#property copyright "watertree"

#define MAGIC 20091005

extern double Lots=0.1;
extern int Slippage=3;

int start()
{
if(Volume[0]>1 || IsTradeAllowed()==false) return(0);

double MF1=Close[1]-Close[3];
double MF2=Close[2]-Close[4];
double MF3=Close[3]-Close[5];

if(OrdersTotal()==0)
{
if(MF1>MF2 || MF1>MF3)
{
if(MF2>MF3)
{
double TBP=Close[1]+MF3;
}
else
{
TBP=Close[1]+MF2;
}
if(Close[1]>TBP)
{
double stopLoss=NormalizeDouble((High[1]+Low[1]+Close[1])/3-iATR(NULL,0,1,1),Digits);
double takeProfit=NormalizeDouble((2*(High[1]+Low[1]+Close[1])/3)-Low[1],Digits);
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,stopLoss,takeProfit,"TrendBaranceSystem Buy",MAGIC,0,Blue);
}
}
if(MF1<MF2 && MF1<MF3)
{
if(MF2>MF3)
{
TBP=Close[1]+MF2;
}
else
{
TBP=Close[1]+MF3;
}
if(Close[1]<TBP)
{
stopLoss=NormalizeDouble((High[1]+Low[1]+Close[1])/3+iATR(NULL,0,1,1),Digits);
takeProfit=NormalizeDouble((2*(High[1]+Low[1]+Close[1])/3)-High[1],Digits);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,stopLoss,takeProfit,"TrendBaranceSystem Sell",MAGIC,0,Red);
}
}
}
else
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
if(OrderMagicNumber() != MAGIC || OrderSymbol() != Symbol()) continue;
switch(OrderType())
{
case OP_BUY:
if(MF2>MF3)
{
TBP=Close[1]+MF3;
}
else
{
TBP=Close[1]+MF2;
}
if(Close[0]<TBP)
{
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White);
}
break;
case OP_SELL:
if(MF2>MF3)
{
TBP=Close[1]+MF2;
}
else
{
TBP=Close[1]+MF3;
}
if(Close[0]>TBP)
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White);
}
break;
}
}
}

return(0);
}
//+------------------------------------------------------------------+

07 January 2010  7 : [Edit]             ありがとうございます。 by さとしぃ  (  )
ちょっと、じっくり今度の休みに見てみますね。

07 January 2010  8 : [Edit]             無題 by さとしぃ  (  )
コメントは後日返信させてください☆

10 January 2010  9 : [Edit]             こんばんわ。 by さとしぃ  (  )
上でおっしゃられていた移動平均システムを出来るだけ形にしてみました。

後で、日記にて公開します。

TrendBalanceSystem は、どういった狙いがあるのかわからなかったです・・・。
RSIでも代用可能なのではと思いRSIで代用しました。

11 January 2010  10 : [Edit]             こんばんは by watertree  (  )
移動平均線EAの作成、ご苦労様です。
検証しないままに思いついたことを書いてしまったのですが、どうでしたでしょうか?
日記にお書きになるとのこと、拝見し、今後の参考にさせていただきます。

ところで、トレンドバランスシステムについてわかりにくいとのこと、
そこで、以下に私の理解している範囲でその考え方について書かせていただきます。

トレンドバランスシステムでは、現在の勢いがある一定の水準を超えた場合に
ポジションを持ちます。
そして、勢いの水準がTBPです。
値の動きは上昇が続くこともあれば調整が入ることもありますが、
上昇が強い場合にはすぐにポジションをとり、調整が入った場合には
勢いを再確認するために一定の値幅の上昇を必要とし、それを以下のように計算しています。

(例1)勢いがあるとき
Close[1]=105
Close[2]=103
Close[3]=100
Close[4]=99
Close[5]=101
とした場合、
MF1=Close[1]-Close[3] 105-100=5
MF2=Close[2]-Close[4] 103-99=4
MF3=Close[3]-Close[5] 100-101=-1
TBPは、
if(MF1>MF2 || MF1>MF3) 5>4 or 5>-1
if(MF2>MF3) 4>-1
TBP=Close[1]+MF3=105-1=104

(例2)調整が入ったとき
Close[1]=103
Close[2]=104
Close[3]=102
Close[4]=100
Close[5]=100
とした場合、
MF1=Close[1]-Close[3] 103-102=1
MF2=Close[2]-Close[4] 104-100=4
MF3=Close[3]-Close[5] 102-100=2
TBPは、
if(MF1<MF2 && MF1<MF3) 1<4 && 1<2
if(MF2>MF3) 4>2
TBP=Close[1]+MF2=103+4=107

上記からわかることは、
Close[1]>Close[2]>Close[3]のように
勢いがあるときは、ポジションを持つ水準をゆるくし、
Close[1]<Close[2]>Close[3]のように
調整が入ったときは、ポジションを持つ水準をきつくし、
(例2)では、現在値(103)からClose[1]~Close[5]の間における
最大の変動幅Close[2]-Close[4] 104-100=4の勢いを再度必要とします。

従って、TBPを超えるということは、短期的には勢いが発生していることになり
今回の移動平均線のシステムに応用できるかな?と、考えたしだいです。
でも、いま考えてみるとRSIの方がいいかもしれませんね。

また、利益計算「2*(High[1]+Low[1]+Close[1])/3)-Low[1]」については、
短期ではトレンドがあるが、長期のトレンドではちゃぶついている場合の利益目標などに使えるかと思います。

Name

Title

Mailadress

URL

Font Color
Normal   White
Comment

Password


<<   HOME    573  572  571  570  569  568  567  566  564  563  562   >>
忍者ブログ/[PR]

Template by coconuts