ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

忙しいです。ネタもないし・・・

2010-05-23

適応的移動平均を作る。

移動平均なんてどれを使っても大差無いよ…。とは言うものの、その僅かな違いで勝敗が変わるとしたら拘らずにはいられません。^^;

期間が固定された移動平均は、値動きが早い時に追従できなくなったり、逆に期間が短いとノイズだらけになるという問題があって、それを解決するために、Kaufman's Adaptive Moving Average (KAMA) や、MESA Adaptive Moving Average(MESA 適応移動平均)、Fractal Adaptive Moving Average (FRAMA)が考案されています。ただ、どれもイマイチ使い辛いので、自分なりに理解できて使いやすそうな適応適当移動平均を作ってみました。

f:id:fai_fx:20100523095943g:image

適応の原理は、

(1) 直前のBar の高値-安値の区間内に、直前のBarの移動平均値が含まれるように移動平均期間を短くする。

(2) 現在の移動平均期間が上記条件を満たす時は、移動平均期間を1つ長くする。

というものです。内部で計算に使う移動平均自体は、標準のSMA,EMA,SMMA,LWMA が選択可能で、その期間の長短を自動調整しているだけです。

レンジ相場が続けば、期間は、6,7,8,9,10... と徐々に長くなり、ブレイクアウトが起きると瞬時に 3,4 辺りに短くなります。

レンジ相場では移動平均が水平になるように、簡単なフィルターを入れていますが、トレードに使うにはもう少し工夫が必要だと思ってます。インジケータ/EA自作派の人向けにこちらに公開しますので、適宜カスタマイズしてみてください。おそらく、スプレッドに対してローソク足が十分に長い、30分足〜1時間足以上で検討するのが良いと思います。

GG 2010/05/23 14:09 計算期間を自動可変式にしたテクニカル指標は私もよく作ります。

私の場合は、

計算期間=定数/標準偏差(上限・下限付き)

というシンプルな計算式を使っています。

バックテストをしたところ、移動平均線やRSIなどではあまり効果はありませんでしたが、一番効果が高かったのが、モメンタムでした。

ポートフォリオの一つに組み入れて使ってます。(^0^)v

山椒魚山椒魚 2010/05/26 02:30 いつも素晴らしい記事ありがとうございます。

さて今回の FaiAMA2.mq4 をダウンロードしようとするとウイルスバスターに「このWebページは安全でないと判断されました。」と怒られます。
FaiAMA.mq4 を含め他のインジケータのダウンロードはOKです。
私だけの環境の問題かも知れませんが。。。わけわかりません。

fai > 山椒魚fai > 山椒魚 2010/05/26 11:40 中身はテキストなので、安全でない…訳が無いと思うのですが、
FaiAMA2.mq4というURLが、何か他の悪質なサイトとバッティングしているのか、
テキストデータ内の文字の組合せが問題なのでしょうかねぇ・・^^;;

山椒魚>fai山椒魚>fai 2010/05/26 13:29 そうですか。。。
不思議ですね。
もう少しウイルスバスターの設定を調べてみます。

mimimimi 2010/05/27 23:37 こんばんわ。

いつも記事を楽しみにして読んでおります!
私も、山椒魚さんと同じ様にブロックされました。
結局、なぜだか原因が分からないので、そのアドレスを一瞬だけ許可させてDLしましたよ。

で、ここからがご相談です・・・。
現在、MQLを勉強中で、バッファの使い方について悩むことがありまして。
時間があるときにでも、お答えいただけましたら幸いです。

今回のFaiAMAの中に、MABuffer[i]とMABuffer[i+1]があると思います。
MABuffer[i]は、while文の中で、計算しているので値があると分かりますが、
MABuffer[i+1]は計算されていないのでは?という気がしてなりません。
(iはディクリされているため、iより大きい数字は計算できないはず。)

一体どのような計算がされていることになるのでしょうか?
計算されていないはずの[i+1]と遭遇すると、いつも混乱してしまいます。

さらに時間があれば。
//postfilterでは、具体的にどういう処理をさせているのでしょうか。
レンジ相場用のフィルタと分かりますが、もう少し噛み砕いて説明して
いただけると幸いです。
(一行目は分かりましたが、2行目、3行目は、・・よく分かりませんでした。)

よろしくお願いします。

fai >mimifai >mimi 2010/05/28 00:11 それは…バグというモノです。計算されてない値を参照してはいけません。苦笑。
もっとも、参照できないのは、i = max の最初のループなので、MQL4 では大した問題になりません。MQL5 ではNGになる可能性があります。^^;

postfilter の2,3行目は、その文をコメントアウトしたものと比較すれば
直感的に理解できるかもしれません。

mimimimi 2010/05/31 22:09 こんばんわ。

返信が遅れ申し訳ありません。早速、週末を使って、いろいろ触ってみました!

まず、「i」の考え方は、(私も馬鹿でした・・)素直に「i-1」にしてしまえば!!
と思い、修正したところ、ちゃんと動作してくれました。

が、//postfilterについては、コメントアウトしてもあまり変化がなく(というか、ほとんど同じで)
ずっと考えていましたが、やはり分かりませんでした。

平均線は下に向いたけど、その値よりLOWのほうが大きい?って、どんな時なんでしょう。

単純に、「じわじわ動いているレンジを、ポンとブレイクするような
動きの時は、前の足の値を使う。」といったことでいいのでしょうか。
でもこれだと、MABuffer[1+1]とMABuffer[i]は同じ値のはず・・・。
何かの見落としか、勘違いか・・。ん〜難しいですね・・・。


ここのHPは、読んでいて楽しくてしょうがないでね。面白いです。本当に面白いです。

mimimimi 2010/05/31 22:11 すみません。誤記ありました。

MABuffer[i+1]とMABuffer[i]です。^_^;

ノーとんんノーとんん 2013/03/29 03:38 山椒魚さん

ウイルスバスターは、
マイクロソフトのサイトさえもブロックするような変態ソフトですので、
普通の方には扱いが難しいと思います。

ちゃんとしたセキュリティーソフトを導入されることを強くお勧めします。

http://gigazine.net/news/20121226-trendmicro-microsoft/

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fai_fx/20100523/1274586410