マルチタイムフレーム・インディケーター - ページ 108

 

mtf坂

ここを見て α24seven

https://www.mql5.com/en/forum/173574

 

Lodol2さんありがとうございます。

申し訳ありません、見逃していました。ご指摘ありがとうございます。

コンパイルに問題がありました。このエラーは今まで見たことがありません。何か思い当たることはありますか?

グラフィックを見る

ありがとうございました。

ファイル:
 

私はあなたの言ったことにすべて同意しますが、私は十分に理解していなかったと思います。

ケリス式はリアルタイムでは(チャートを更新しないと)このように見えません。

mtfインジケータを低いタイムフレームにプロットした瞬間から、そのタイムフレームで(高いタイムフレームでではなく)いくつかのデータを平均化する別の方法を持っています。

mladen:
赤い線は、あなたが提案しているMAの近似値です。

マゼンタはケリス流の MTF MA です。

金色の線は、高い時間枠のMAを低い時間枠で表示したときの実際の値です。

見ての通り、近似値は一定期間に1つも正しい値がないのに対して、ケリスの式は一定期間に少なくとも1つは正しい値を与えています。いずれにせよ、Metatraderでの近似値の計算式は、次のようになります。

MAperiod=MAperiod*TimeFrame/Period()となります。

この近似式を移動平均線由来の指標(例えばMACD)に適用しようとすると、大きな、つまり大きな差異が生じることになります(私は4H MACDの1Hタイムフレームでの差異が7-8%であるのを見たことがあります)。

逆質問:何人の人がマルチタイムフレームの指標に異なるアプローチを試みたと思いますか?
 

コードのエラー

私はそれを理解しました。この余分なコードは、ファイルの最後に残っていたのです。これを削除して、コンパイルすれば出来上がりです。

ところで、素晴らしいインジケータですね。

---

/*

void drawLine(double lvl,文字列名,色 Col )

{

ObjectDelete(name);

ObjectCreate(name,OBJ_HLINE, WindowFind(name), Time[0], lvl,Time[0], lvl).ObjectCreate(name,OBJ_HLINE, WindowFind(name), Time[0], lvl);

ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);

ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name, OBJPROP_COLOR, Col);

ObjectSet(name,OBJPROP_WIDTH,1); ObjectSet(name,OBJPROP_WIDTH,1);

---

 

...

黄色の線は、"本当のMTF "移動平均 です。

画像上のどの指標も「更新」する必要はありません

それ以外の部分については、もう一度その投稿をお読みください。

よろしくお願いします。

mladen

Scrat:
あなたのおっしゃることにすべて同意しますが、私の説明が十分でなかったように思います。

keris formulaはリアルタイムでは(チャートをリフレッシュしないと)そのように見えません。チャートをリフレッシュすると、すべてがうまく見えます。

mtfインジケータを低いタイムフレームにプロットした瞬間から、そのタイムフレームのデータを平均化する別の方法(高いタイムフレームではできない)があることになります。
 

このインディにMTFが必要

皆さん、こんにちは。

異なる時間枠のインディケータをチャート上にプロットする機能が欲しいと思っていました。

//+------------------------------------------------------------------+

//| Fisher_m11.mq4

//| 著作権 ฉ forexjr

//|/cam06/fisher のインデックス

//+------------------------------------------------------------------+

#property copyright "著作権 ฉ 23.07.2006 MartinG "

#property リンク "http://home.arcor.de/cam06/fisher"

#property indicator_separate_window (インジケーター・セパレート・ウィンドウ)

//#property indicator_minimum -1

//#property indicator_maximum 1 (インジケーター最大値)

#property indicator_buffers 3 (インジケーターバッファー3)

#property indicator_color2 RoyalBlue (インジケーターカラー2 ロイヤルブルー)

#property indicator_color3 レッド

#property indicator_width2 0.5 #property indicator_width2 0.5

#プロパティ indicator_width3 0.5

int LeftNum1=56;

int LeftNum2=56;

extern int RangePeriods=35;

extern double PriceSmoothing=0.3; // Fisher_m10の場合、=0.67。

extern double IndexSmoothing=0.3; // =0.50 bei Fisher_m10

文字列 ThisName="Fisher_kuskus";

int DrawStart;

// バッファ

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtMapBuffer3[];

double ExtMapBuffer4[];

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- インジケータ

IndicatorBuffers(4);

SetIndexLabel(0, "Star");

SetIndexStyle(0,DRAW_NONE)を設定します。

SetIndexBuffer(0,ExtMapBuffer1)を設定します。

SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,ExtMapBuffer2)を設定します。

SetIndexStyle(2,DRAW_HISTOGRAM)を設定します。

SetIndexBuffer(2,ExtMapBuffer3)を設定します。

SetIndexStyle(3,DRAW_NONE)を設定します。

SetIndexBuffer(3,ExtMapBuffer4)を設定します。

文字列 Text=ThisName;

Text=Text+" (rPeriods "+RangePeriods.Text=Text+", pPeriods.Text=Text+");

Text=Text+", pSmooth "+DoubleToStr(PriceSmoothing,2).Text=Text+"(rPeriods "+RangePeriods")です。

Text=Text+", iSmooth "+DoubleToStr(IndexSmoothing,2)"。

Text=Text+") ";

IndicatorShortName(Text);

SetIndexLabel(1,NULL)を設定。

SetIndexLabel(2,NULL)を設定します。

DrawStart=2*RangePeriods+4; // DrawStart=左から右へ計算したバー番号

SetIndexDrawBegin(1,DrawStart)を設定します。

SetIndexDrawBegin(2,DrawStart)。

if (PriceSmoothing>=1.0)

{

PriceSmoothing=0.9999;

Alert("Fish61: PriceSmothing factor has to be smaller 1!");

}

if (PriceSmoothing<0)

{

PriceSmoothing=0;

アラート("Fish61: PriceSmothing factor mustn''t be negative!");

if (IndexSmoothing>=1.0)。

{

IndexSmoothing=0.9999;

アラート("Fish61: PriceSmothing factor must be smaller 1!");

}

if (IndexSmoothing<0)

{

IndexSmoothing=0;

アラート("Fish61: PriceSmothing factor mustn''t be negative!");

}

//----

return(0);

}

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| カスタムインジケーターイテレーション関数

//+------------------------------------------------------------------+

int start()

{

if (Bars<DrawStart)

{

Alert("Fish84: Not enough Bars loaded to calculate FisherIndicator with RangePeriods=",RangePeriods).FisherIndicatorを計算するために十分なBarsがロードされていません。

return(-1);

}

//----

int counted_bars=IndicatorCounted();

if (counted_bars<0) return(-1);

if (counted_bars>0) counted_bars--;

//----

int Position=Bars-counted_bars; // Position = BarPosition 右から左へ計算した位置

int LeftNum1=Bars-Position; // より多くのバーを読み込むと、バーの位置は変わるが LeftNum は変わらない。

if (LeftNum1<RangePeriods+1)Position=Bars-RangePeriods-1;

while(Position>=0)

{

CalculateCurrentBar(Position);

Position--;

}

//----

return(0);

}

//+------------------------------------------------------------------+

//| シングルバー計算関数

//+------------------------------------------------------------------+

int CalculateCurrentBar(int pos)

{

double LowestLow, HighestHigh, GreatestRange, MidPrice;

double PriceLocation, SmoothedLocation, FishIndex, SmoothedFish;

//----

LowestLow = Low[Lowest(NULL,0,MODE_LOW,RangePeriods,pos)];

HighestHigh = High;

if (HighestHigh-LowestLow<0.1*Point)HighestHigh=LowestLow+0.1*Point.HighestHigh=LowestLow+0.1*Point.HighestHigh=LowestLow+0.1*Point;

GreatestRange=HighestHigh-LowestLow。

MidPrice = (High[pos]+Low[pos])/2。

// 現在のレンジ内の価格位置

if (GreatestRange!=0)

{

PriceLocation=(MidPrice-LowestLow)/GreatestRange;

PriceLocation= 2.0*PriceLocation - 1.0; // -> -1 < PriceLocation < +1

}

// PriceLocationの平滑化

ExtMapBuffer4[pos]=PriceSmoothing*ExtMapBuffer4[pos+1]+(1.0-PriceSmoothing)*PriceLocation.SmoothedLocation=PriceLocation。

SmoothedLocation=ExtMapBuffer4[pos]とします。

if (SmoothedLocation> 0.99) SmoothedLocation= 0.99; // MathLogが未修正であることを確認します。

if (SmoothedLocation<-0.99) SmoothedLocation=-0.99; // MathLog の最小値を下げないようにするため。

// FisherIndex

if(1-SmoothedLocation!=0) FishIndex=MathLog((1+SmoothedLocation)/(1-SmoothedLocation));

else Alert("Fisher129: Unerlaubter Zustand bei Bar Nummer ",Bars-pos);

// FisherIndexの平滑化

ExtMapBuffer1[pos]=IndexSmoothing*ExtMapBuffer1[pos+1]+(1.0-IndexSmoothing)*FishIndex;

if (Bars-pos<DrawStart)ExtMapBuffer1[pos]=0.FishIndex。

SmoothedFish=ExtMapBuffer1[pos]とします。

if (SmoothedFish>0) // アップトレンド。

{

ExtMapBuffer2[pos]=SmoothedFish。

ExtMapBuffer3[pos]=0。

}

else // ダウントレンド

{

ExtMapBuffer2[pos]=0。

ExtMapBuffer3[pos]=SmoothedFish。

}

//----

return(0);

}

//+------------------------------------------------------------------+

礼を言う

 
mladen:
みんな、本気になろうぜ!

私は真面目なんです、mladenは...

私は初心者でプログラマーではないので、scratchさんのやり方は完璧ではないかもしれませんが、もしかしたら使えるかもしれません。試してみます。もしそれが有用なら、私はそれを使うでしょう。もし使えなければ、また別の素晴らしい方法やインジケータを探します。

同じようなことをCodersguruに聞いたことがある。

30M TFで1EMAを使うなら、1M TFでは30EMAでなければならない、という質問でした。

そして、彼はそれは違うと言っていました。しかし、私は納得がいかず、もしかしたら他の方法があるかもしれないと思い、ここでそれを見つけました。でも、もしそれが役に立たないのであれば、それはそれで構わないのですが....少なくとも、私は結果があることを知っている。

ところで、最新のRSIOMA mladenのおかげで、私はそれが非常に好きで、この偉大な指標のために、あまりにもfxbsとKalenzoに感謝します。

ありがとうございます。

IIN

 

困ったことはこれだ。

MAを使った考え方は、おそらくテクニカル分析 で最も古い考え方だと思います。

TSDのような場所が、アイデアや知識を共有する場所であることには同意します。

しかし、誰もこの方法でそれをしようとしないでください。

同じインディケータを、より高いtfとより低いtfで同時に対応させることを考えた人がいるのかと思っていたのですが......。

さて、ここで一体何をやろうとしているのでしょう?

今、私は自分自身を明らかにしたことを願っています

よろしくお願いします。

mladen

iinzall:
私は真面目なんですよ、mladenは...。

私は初心者でプログラマーではないので、scratchさんのやり方は完璧ではないかもしれませんが、もしかしたら使えるかもしれませんね。試してみます。もしそれが有用なら、私はそれを使うでしょう。もし使えなければ、また別の素晴らしい方法やインジケータを探します。

同じようなことをCodersguruに聞いたことがある。

30M TFで1EMAを使うなら、1M TFでは30EMAでなければならない、という質問でした。

そして、彼はそれは違うと言っていました。しかし、私は納得がいかず、もしかしたら他の方法があるかもしれないと思い、ここでそれを見つけました。でも、もしそれが役に立たないのであれば、それはそれで構わないのですが....少なくとも、私は結果があることを知っている。

ところで、最新のRSIOMA mladenのおかげで、私はそれが非常に好きで、この偉大な指標のために、あまりにもfxbsとKalenzoに感謝します。

ありがとうございます。

イン
 

さて、私は公式に馬鹿で、このスレッドのみんなを怒らせてしまいましたが、今回はうまくいきましたか?

申し訳ありません。

mladen:
問題はこれです。

MAを使ったアイデアは、おそらくテクニカル分析で最も古いアイデアだと思います。

TSDのような場所がアイデアや知識を共有する場所であることには同意します。

しかし、誰もこのような方法でやろうとしないでください。

一体ここで何をしようとしてるんだ?

今、私は自分自身を明らかにしたことを願っています。

よろしくお願いします。

mladen
 

このMTFインディがどこにあるか、どなたかご存知ですか?

MTFバージョンをくまなく探しました。どなたか知っている方、見たことがある方はいらっしゃいますか?

ありがとうございました。

ファイル: