iMAを使わないEMA

「MT4でEMAを表示するインジケーターを作りなさい」・・・と言われたら出来る?


この課題なら MQLをちょっと齧っていれば大抵の人はクリアできるのではないかと思うが。


では、
「MT4でiMA関数を使わないでEMAを表示するインジケーターを作りなさい。但し直近の価格の和で求めること」


こうなると、中級くらい? でしょうか。。。。



正解例はこちら
このあたりを読むと、指数移動平均(Exponential Moving Average; EMA) は、

EMA = A0 * Close[0] + A1 * Close[1] + A2 * Close[2] + ... + An * Close[n];

と近似的に書き直すことができることが分かります。 係数An が A0 に対して十分に小さければ、そこで計算を打切っても計算結果に影響はほとんどありません。


↑EMA(15)で直近の価格に掛かる係数のグラフがこれで、この減衰関数がEMAの場合は指数関数なのですね。


単純移動平均は、減衰関数が一定期間一定値でその後ゼロになるイメージ(  ̄ ̄ ̄│____ )加重移動平均は、一直線に減衰するこれであることを思い起こせば、移動平均なんて、自分で減衰関数を決めてしまえば、いくらでも作り出せることがわかります。
(厳密には減衰している必要も無いので、重み付け関数です..。正解例は減衰していることを前提にしているので要注意。


直近の価格に対しては、SMAっぽく均等重み付けしつつ、過去の価格には EMA っぽくすることで、SMAの欠点(!)である計算期間から極端な価格が抜ける際のMAの変動を抑えることも可能です。減衰関数には逆数やシグモイド関数、その他の関数に作り変えることもできます。このように作られた移動平均は・・・「名状しがたきEMAのようなもの」・・・とでも呼びましょうか。笑。

平均足の上昇の本数を数える。

saru999 2012/02/04 20:26
ToolsやCode記事はいつも楽しみにしています♪

私が今やりたいことは以下のことです。
昨日の2/3のSwingpointViewEXTLの本数20本・20本という固定値でなく可変にしたいです。
そして、可変本数は平均足の色で、それぞれの本数を代入したいです。
天井の本数は、平均足の上昇の色の本数をbarsLeftOfCurrentの本数に、平均足の下落色の本数をbarsRightCurrentに採用して、高値を取得。。
逆に、谷の本数は、平均足下落の色の本数と、平均足上昇の色の本数を、それぞれに本数を取得して、同様にして谷の安値を取得。という具合です。

お忙しいところすみませんが、作り方のヒントだけでももらえると助かります。
よろしくお願いしますm(_ _)m

いまいち何の本数を数えたらいいのか分からないので、何本上昇が続いているかを計算するインジケータを作ります。
http://ux.getuploader.com/fai_fx/download/291/LengthCounter.mq4

↑上昇=緑の部分で、サブウィンドウ内の白足が増えています。
ややこしいインジケータを作る時は、計算速度効率は無視して、単機能のものを作りつつ正しくできるているか確認すると良いです。




↑SwingpointViewEXTLへの組み込みはたぶんこんな感じで済むと思います。
iCustom で上手く動いたら、iCustomを使わずに書けば良いでしょう。



ぷー 2012/02/04 20:51
個人的にはP&F的な感じで10pipsとか50pips単位の端数を突き抜けるか突き抜けないかがサポレジになってるのではと思っています
ということで端数バージョンも作って下さいお願いしますw

…それって、グリッド系のインジケータで線を引いておけば十分なのでは。。。^^;

VT/CTのSupport&ResistanceをMetaTraderに移植する。

cyakura002 2011/11/04 23:07

2009.10.13の記事
Bollinger Bands - Fibo をMetaTrader に移植を拝見して
CTのSupport&Resistance移植用作成をお願いしたくコメントしました。

よろしくお願いします。

FXA証券のチャートソフト ChartTrader (CT) にあるインジケータの Support&Resistance をMetaTrader に移植したので、アップします。使いたい人は、こちらからどうぞ。
CTのコードは、

Res :=valuewhen(1, Cross(Mov(C, LBP,S),C), HHV(H, LBP));
Sup :=valuewhen(1, Cross(C,Mov(C, LBP,S)), LLV(L, LBP));

たった2行なので簡単です。


↓VT/CT の Support&Resistance はこんな感じ。

↓MT4 でもほぼ同じです。




それはさておき、FXA証券が営業停止になってしまいましたね。破綻の経緯は、ニュースサイトを見てもらうとして..。
実は、私が自動売買に最初に興味を持ったのがFXA証券のCTなので、お付き合いの長い会社だったりします。しかも、結構な金額を口座に休眠させていたので、11/1に出金手続きをしました。来週中に入金されれば良し、そうでなければ…冷や汗状態です。
↓今週は、日銀介入で久しぶりに「会心の一撃」ができたのに素直に喜べません..orz


追記)
VT/CT系で残る業者は、海外の http://www.cmsfx.com/ だけになります。
でも、この業者のサイトにも MT4 が侵食しているので、VT/CTは消え行くプラットフォームな気がします..。

Ku-Chart をテクニカル分析する。

とまと 2011/10/18 01:11
ku_Chartについて
各通貨の強弱を知るための最強のツールだと思われます。よく、ドルが買われたとか円が売られたとか言いますが、ドル円の値動きだけではどちらだったのかは分かりませんでした。ku_Chartで、長年の疑問が解決できました。また、よく言われるダウ先物とAUDUSDとの連動性についても、一目で分かります。更に、AUDとJPYがほぼミラーチャートであることも、一目で分かります。ほとんど「一目均衡表」ですねw。
ここで、甚だ厚かましいお願いですが、ku_Chartにおける「AUD」と「JPY」のRSIを作成頂きたくお願いします。できれば、「USD」「EUR」「GBP」もあるとうれしいです。

ツチヤ先生も「テクニカル分析は死に絶えた宗教だ」と仰せられているのに、今更RSI....ですか....(´・ω・`)



なんて思いつつも、誰の何に役に立つのか?は作ってみないと分からないで、早速、試してみます。

↑Ku-Chart をテクニカル分析する場合、オシレーターのままでは不便です。
そこで、通貨毎にヒストリカルデータ(*.hstファイル)を書き出して、オフラインチャート化します。
MT4のチャート表示では、マイナスの値が許されないので、いつもの Ku-Chart に +100 加算してシフトさせます。



出来上がった通貨別チャートを ど〜ん と全部開くと…

続きを読む

BTLMインジケータで計算できる他のモデル

テクニカル指標が「数学的に意味を持つ」こととマーケット予測能力は全く関係無い…という話を書いておきますかね..^^;
どんなテクニカル指標にも、その計算式の背後には、必ず何らかの値動きのモデルを想定しています。(モデルというよりも、値動きのどんな特徴を抽出したいのか?という目的があります..と言うべきかな。


仮に市場での資金の流れは、物理的な制約、取引限度額的な制約で一定速度でしか動けないとしましょう。その場合、それにつられて動く価格も極めて直線的な動きをすることが多いはず..と考えたとします。

↑そんな市場での価格予測は、線形近似を使うのがおそらく妥当でしょう。個々の価格には意味の無い動き=ノイズが含まれているので、それを取り除いて本来の直線の動きを抽出するわけです。


ところが、別の人は、そんなマクロの話は短期のデイトレには当てはまらない、投機市場では買いが買いを呼び、売りが売りを呼んで値動きは加速し、放物線を描くように動くのだ..と考える人もいます。

↑その前提では、2 次多項式の近似曲線を使うことになります。(ちなみに、この後の値動きは上昇してゆきました..が、ただの偶然でしょう


こうして、全く同じチャートに対して下がるという予測(上図)と上がるという予測(下図)が、(与えられたデータに対して数学的に意味のある形で)計算できてしまいました。マーケット予測の優劣は、どちらのモデルが市場の実態に合っているか?を統計的に調べることで判明しますが、それはテクニカル指標の計算式の性能の良し悪しとは別の問題になります。テクニカル指標は、単にある特定の仮定のもとで意味のある値を算出するだけで、仮定(仮説)が正しいかどうか?とは関係ないのです。




そう理解してもらった上で、今日の本題のBTLMインジケータで計算できる他のモデルですが、R の tgp パッケージがサポートしているモデルであれば少しの修正で簡単に計算できます。

RExecuteAsync(R, "model <- btlm(X=X,Z=hist...
↑この一行を
↓次のいずれかに書き換えると計算モデルが変わります。
RExecuteAsync(R, "model <- bcart(X=X,Z=hist...
RExecuteAsync(R, "model <- btgp(X=X,Z=hist...
RExecuteAsync(R, "model <- bgp(X=X,Z=hist...
他にも blm,btgpllm,bgpllm があります。

以下は実際に変更して計算した例です。



↑bcart は、価格水準が非連続に変わるようなモデルで、階段状に近似されます。

↑btlm は、価格が折れ線状に動くモデルです。私は今でもこのモデルが一番裁量では使いやすいのではと思ってます。仮に価格が曲線状に動いたとしても、複数の直線になるだけのことです。それから、人間のパターン認識は直線と相性がよいのかもしれない..とも思ったりします。


↑btgp(もしくは bgp) は、価格がうねうねと動くとするモデルです。正しくは、ガウス過程(Gaussian processes)に従っていると言うべきですが、興味のある人は自力で調べてください^^;直近の値幅予測には bgp が良いのかな?と思ったりしますが特に検証はしていません。


BTLMインジケータの愛用者が少なからずいらっしゃるようなので、改造するとこんなカタチもできるよ〜と少し紹介してみました。
(..べ、べつに コミPo! を試してみたかった..わけじゃないんだからねっ

非同期で実行したRの計算終了を音で知る。

MT4の背後で非同期に R を呼び出すインジケータの場合、計算が終了した際に音が鳴ると便利です。
休日でも、Metatrader Tick Senderを起動しておけば画面更新されるので、R から直接 音を鳴らす必要性は低いのですが、リアルタイムに分かると気分的に嬉しいものです..^^;


R から音を鳴らすコードのうち、alarm() や、cat("\a") はダメで、以下の tkbell() が使えます。

library(tcltk); tkbell();

↑ tcltk パッケージを事前にRGuiからインストールする必要があります。

RExecuteAsync(R, "model <- btlm(X=X,Z=hist,verb=0,BTE = c(2000, 55000, 2),R=3) ; library(tcltk); tkbell()");

↑非同期実行のコードの最後に追記します。


ちなみに、以下のコードを追記すれば、直接 wav ファイルを開くことも可能です。

shell.exec(\"C:/File Path to WAV/Qbey'sTheme.wav\")