xMeterは、何を計算している?

ピピ 2010/04/08 17:17
あるインジケータについてお聞きしたいのですが、http://www.abysse.co.jp/mt4/indicator_name_x.html の中にある、「xMeter Indicator.mq4」ですが、数値の出し方が分かりません。
通貨の強弱をみるインジケーターで、強い通貨を買い、弱い通貨を売るといいと聞きましたが、
これはテクニカルは何が基準で、何分足が基準かという疑問を持ちました。
プログラムはほぼ素人で、メタエディターで見てみたのですが、肝心なところが分かりませんでした・・・
これが分かれば、このインジケーターをより理解できると思うので、
差し支えなければ「テクニカルは何が基準」で、「何分足が基準か」ということを
簡単でいいのでご教授いただけますでしょうか?


…との質問を頂きましたので回答しましよう。
www.abysse.co.jp からダウンロードできる xMeterは7種類あって、ソースコードの変更部分の違いから推測すると以下のような進化の系統樹が描けます。

(祖先?xMeter_mini.mq4) → xMeter_mini_v1_2.mq4

xMeterMTF.mq4

xMeterMTF1.mq4 → xMeterMTF_Ind.mq4(別窓インジケータ?)

xMeter Indicator.mq4 ( =xMeter_Indicator .mq4,これは同一 )

xMeter_Indicator2.mq4 ( ペア数増加だけ )

ロジックの分かりづらいインジケータで、複数のバージョンが見つかる場合は、極力オリジナルに近い改変が少ないコードを調べると理解しやすいコトがあります。










…と言っても、xMeter はどれを見ても一緒だと思います。(分類する意味無し...笑)
一部の関数は、古いインジケータの方が直感的に分かりやすい Stupid な書き方をされていますけど、肝心な部分は変わっていません..^^;
実際の計算内容ですが、xMeter では、
"EURUSD","GBPUSD","AUDUSD","USDJPY","USDCHF","USDCAD",
"EURJPY","EURGBP","EURCHF","EURAUD","GBPJPY","GBPCHF"
の12ペアに対して

point            = GetPoint(mySymbol); 
aHigh[index]     = MarketInfo(mySymbol,MODE_HIGH);//その日の高値
aLow[index]      = MarketInfo(mySymbol,MODE_LOW);//その日の安値
aBid[index]      = MarketInfo(mySymbol,MODE_BID);//現在の価格
aAsk[index]      = MarketInfo(mySymbol,MODE_ASK);//未使用
aRange[index]    = MathMax((aHigh[index]-aLow[index])/point,1);//その日の高値安値幅のレンジpips
aRatio[index]    = (aBid[index]-aLow[index])/aRange[index]/point;//レンジ内での現在の価格の高さ比率(0〜1)
aLookup[index]   = iLookup(aRatio[index]*100);//高さ比率の値を 0〜9のグレード分け
aStrength[index] = 9-aLookup[index];//グレードの逆順位

を求めています。
グレードの決め方は、

int aTable[TABSIZE]  = {0,3,10,25,40,50,60,75,90,97};// grade table for currency's power

と、iLookup関数を使って、高さ比率の100倍値を分類し

グレード aRatio[index]*100
0 3未満
1 10未満
2 25未満
3 40未満
4 50未満
5 60未満
6 75未満
7 90未満
8 97未満
9 97以上

と決まります。その日の高値更新中は、グレード9、安値更新中はグレード0になります。高値と安値の中間であれば 5 ですね。


次に、通貨毎のグレードの平均値を求めます。目的の通貨を含むペアが対象で、JPY の場合は、USDJPY,EURJPY,GBPJPYの各ペアのグレードの逆順位の平均値を計算することになります。(???JPY のようにJPY が後ろ側についているので逆順位を使う。)
AUD なら、AUDUSDのグレードと、EURAUD のグレードの逆順位の平均値になります。
CAD は、USDCADのグレードの逆順位のみで決まります。
求まった平均値が画面内に数値として表示されます。レベル表示の色は以下のようになります。

ライム 〜9
黄緑 〜7
〜6
オレンジ 〜4
〜2



...と、ここまで書けば xMeter の弱点に気づくと思いますが、CAD は単にUSDCAD の動きのみで強弱を評価しているわけです。JPY もAUD,CHF に対するグレードがありません。グレードの値も、上昇相場下降相場の区別が無く、大きく高値を更新し続けている上昇相場でも、始値から一旦安値に動いてから戻ってきただけの相場でも同じ値 (=9) になってしまいます。これで、通貨間の相対的な強さを表していると言えるのか?…私は疑問に感じたりするのですが..、
(あと、日付が変わった直後は数値の妥当性が低いという問題もありますよね…)


とりあえず計算式の意味はお分かりになられましたでしょうか・・・?