おはようございます。キリンです。
アメリカvsガーナは白熱した試合展開でしたね!
前半のガーナの運動量の多さによる守備は鬼でしたが、
やはり後半までそれを続けることができずに、
気持ちの切れ掛かったところでアメリカにPKを与えてしまい、同点。
そこからの両者バテ始めている状況でのプレイは鬼気迫るものがありました。
みんな気持ちだけで動いている。素晴らしい試合でした。
結局は、延長開始数分でガーナが決めた得点が決勝点になり、
ガーナがベスト8進出です。
アフリカ勢最後のガーナ。
ぜひ頑張ってもらいたいものです。
次はウルグアイでしたっけ。
・・・どっちにも勝って欲しい(w
さて、本題のインジケータ解析結果です。
匿名さんからご依頼があったので早速やってみました。
VQのインジケータのリンク
■主要ロジック部
インジケータの主要ロジックを探し出すには、SetIndexBufferを探すのが基本。
どの配列がBufferとなっているかを確認し、それがどのように計算されているかをたどります。
今回の場合は、SumVQ[]が重要なようです。
それを追うことにします。
{
MH = iMA(NULL,TimeFrame,Length,0,Method,PRICE_HIGH,i);
ML = iMA(NULL,TimeFrame,Length,0,Method,PRICE_LOW,i);
MO = iMA(NULL,TimeFrame,Length,0,Method,PRICE_OPEN,i);
MC = iMA(NULL,TimeFrame,Length,0,Method,PRICE_CLOSE,i);
MC1 = iMA(NULL,TimeFrame,Length,0,Method,PRICE_CLOSE,i + Smoothing);
if (Steady==true) {MC=iMA(NULL,TimeFrame,Length,0,Method,PRICE_MEDIAN,i); MC1=iMA(NULL,TimeFrame,Length,0,Method,PRICE_MEDIAN,i+Smoothing);}
VQ[i] = MathAbs(((MC – MC1) / MathMax(MH – ML,MathMax(MH – MC1,MC1 – ML)) + (MC – MO) / (MH – ML)) * 0.5) * ((MC – MC1 + (MC – MO)) * 0.5);
SumVQ[i] = SumVQ[i + 1] + VQ[i];
if (Filter > 0) if (MathAbs(SumVQ[i] – SumVQ[i + 1]) < Filter * Point) SumVQ[i] = SumVQ[i + 1];
if (TimeFrame > Period()) SumVQ_MTF[i] = SumVQ[i];
i–;
}
ここが実際にインジケータのラインを定義している部分になります。
計算に用いる変数はこれです。
MH:高値移動平均
ML:安値移動平均
MO:始値移動平均
MC:終値移動平均
MC1:終値移動平均(Smooting分前のもの)
この主要ロジックの中でもとりわけ重要なのがこの部分
ちょっと見やすくするとこんな感じです。
こんな計算式を使っています。
そして、VQ[i]の値は変動率がでてくるので、
このように、一つ前のSumVQ[i+1]にVQ[i]を足しています。
さらにその前にフィルター以上の変動率でなければ反映させないという、
こんなのも入ってます。
これが外部パラメータFilterの効果です。
また、SumVQ[i]は事前にCloseの値段を割り当てているので、
変動率の計算のおおもとは外部パラメータのCountBarsのから変動させています。
これが基本ロジック。
簡単に外部主要パラメータの説明をします。
TimeFrame | 時間足 実はMTF対応だったんですね。 |
Length | 移動平均の期間 |
Method | 移動平均の方法 |
Smoothing | MC1の移動分 |
Filter | 変動分がFilter以下だったら移動させない |
RealTime | falseだとローソク足確定時のみグラフを描く |
Steady | 下記参照 |
Color | グラフを色分けするか |
Alert | アラートを使うか |
SignalPrice |
シグナルが表示された価格をオブジェックトで表示させるか |
SignalPriceBuy | 買いの場合のSignalPriceの色 |
SignalPriceSell | 売りの場合のSignalPriceの色 |
CountBars | インジケータを表示させるバーの本数 |
MethodとかTimeFrameへの変数の入力は、iMAの関数に対応しているので、
まったくMQLの知識のない人は戸惑ってしまうかもしれないですね。
TimeFrameへの入力できる値の参考リンクはこちら
Methodへの入力できる値の参考リンクはこちら
リンク先の[ Value ]と表示されている部分の数値を入力することになります。
他のロジックとしては、
Steadyがtrueだったら、MCとMC1の適応価格がCloseではなくて、MEDIANになります。
多少の変化はでるのかな。
計算方法は分かりましたが、根底にある理論までの知識がなく、
考察はこの程度でした。
計算方法を見るだけで理論をご理解いただけた方、ぜひお話をお聞かせいただければと思います。
最後までお読みくださりましてありがとうございました!
ご参考になれば幸いです^^
コメント
SECRET: 0
PASS:
部長様
おはようございます☆
VQとADXを使用していたので、今回のお話はすごく興味深くありがたいです!
今は、半分意味がわかってませんが勉強して理解できるようになりたいです!
とても解りやすいです。ありがとうございました*^-^*
SECRET: 0
PASS:
>ゆんゆんさん
おはようございます!
ご参考になったようで嬉しく思います^^
VQは有名なだけあって使い勝手も良さそうですよね。
コメントありがとうございます♪
SECRET: 0
PASS:
VQ解析をお願いした匿名隊です。
早速解説していただきありがとうございました!
フィルターの部分の計算にカンマが含まれていますが
カンマが入ると途端に理解が不能になりました^_^;
その辺をもう少し詳しく教えていただけませんでしょうか。
よろしくお願いいたします!
SECRET: 0
PASS:
難しくて理解できないです~
VQは高値移動平均、安値移動平均、等から算出されたインジケーターなんですね?
これらの記述がわかると楽しくなるでしょうね。
実際いろんなインジケーター試してるが何をしているのがわからないが何となく使っているのも多いです。
大変参考になります(*^_^*)
SECRET: 0
PASS:
>匿名隊さん
コメントありがとうございます^^
ご参考になれば幸いです。
フィルターの計算部にはカンマは入ってないと思いますよ。
具体的に分からない箇所を提示していただけると、お教えできますよー
SECRET: 0
PASS:
>ごんたさん
そうですね!
各種移動平均を組み合わせて指標にしているみたいです。
根底にある考え方が分からないので、なんともいえないんです;;
ご参考にしていただけたみたいで嬉しいです^^
SECRET: 0
PASS:
はじめまして。
プログラム半年目の素人です(^_^;
ちょくちょく拝見させてもらっています。
以前、VQを改良していたのですが、諦めたことがありまして(^_^)。
確か、Tickの度にすべてのBarを計算し直していたと思います。これを、計算していないBarだけ計算するように出来ないでしょうか。
時間があるときでかまいません。
アドバイスを頂けたら幸いです。
ぜひ、よろしくお願いいたします♪