コーディングのヘルプ - ページ 198

 
cain82:
ご回答ありがとうございました。

しかし、このIndi hystogrammコードのように、一般的なチャート上でMAの角度線を得るにはどうしたらよいでしょうか?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

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

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

for(i=0; i<nLimit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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

このインジケータは、MAの各バーについて、傾きに似たものを計算しています(角度ではありません。

最後のバーの傾きを拡張したい場合は、最後のバーの傾きを使用して移動平均を拡張するこのインジケータhttps://www.mql5.com/en/forum/173235/page36 のようなものを使用することができます。

 
mladen:
そのインジケータは、MAの各バーについて、傾きに似たもの(角度ではありません、時系列チャートでは角度は正確に計算できないからです、傾きに必要なものとは異なる計算を使おうとしているからです)を計算しています。 もし、それを反転させたいなら(私はあなたが何をしたいのか正確に推測するだけですが)、結果としてその開始MAを取得しようとしています(だからあなたはチャート上で移動平均を取得しようとしています)。 もし、最後のバーの傾きを拡張したいのであれば、このインジケータに似たものを使うことができます。https://www.mql5.com/en/forum/173235/page36、最後のバーの傾きを使って移動平均を拡張します。

mladenさん、ありがとうございます。それは私が欲しいものに非常に似ています。

MTFモードでも同じようなことができますか?

 

mladen...

このインジケータを修正するためにあなたの助けが必要ですhttps://www.mql5.com/en/forum/general

 

ムラデン

移動平均の データを使ってBBandsを計算する。

MT4非標準の仕込みに適用する例として。

AllAveragesの移動平均の種類の1つの例として。

平均の実データを利用したBBandsです。

BBands SMAはなく、別タイプの移動平均を使用。

 
Antonsan:
ムラデン

移動平均のデータを使ってBBandsを計算する。

MT4非標準の仕込みに適用する例として。

AllAveragesの移動平均の種類の1つの例として。

平均の実データを利用したBBandsです。

BBands SMA はなく、別のタイプの移動平均を使用します。

アントンサン

iStdDevOnArry()関数を使用すれば、任意の値でボリンジャーバンドを 計算できます。

iStdDevOnArray()で偏差を計算し、iMaOnArray()でボリンジャーバンドの中間線を計算します(iStrDevOnArry()と同じ配列を使用します)。

 

アントンサン

このサンプルコードをテンプレートとして使用し、任意の値のボリンジャーバンドを 構築することができます。この行のiRsi()の呼び出しを置き換えるだけです。

for(i=limit; i >= 0; i--) value = iRSI(NULL,0,RsiLength,RsiPrice,i).For(i=limit; i >= 0; i--) value = iRSI(NULL,0,RsiLength,RsiPrice,i);

を任意の関数、または任意のカスタムインジケータのiCustom()コールで置き換えると、その値に対してボリンジャーバンドを計算することができます。

ファイル:
 
mladen:
person77 オプションが1つ追加されました。AllowCloseEqualOpen.を追加しましたので、このオプションで制御できるようになりました。

素晴らしい作品mlanden! またよろしくお願いします。

 

EAに適したインジケーター

こんにちは。

このインジケータは5つのライン(pivot+R1+R2+S1+S2)を持っています。

このラインをベースにしたEAを作りたいのですが、残念ながらこれらのラインにはバッファがありません。残念ながら、これらのラインにはバッファがありません。各ラインにバッファを割り当てる必要があります。

よろしくお願いします。

よろしくお願いします。

Bamik

ファイル:
 
bamik:
こんにちは。

このインジケータは5つのライン(pivot+R1+R2+S1+S2)を持っています。

このラインをベースにしたEAを作りたいのですが、残念ながらこれらのラインにはバッファがありません。残念ながら、これらのラインにはバッファがありません。各ラインにバッファを割り当てる必要があります。

よろしくお願いします。

よろしくお願いします。

Bamik

バルニック

このスレッドをチェックしましたか?https://www.mql5.com/en/forum/172894

そのスレッドではバッファを使用したピボットインディケーターがたくさんあります。

 
mladen:
バルニック

このスレッドを確認しましたか :https://www.mql5.com/en/forum/172894

バッファを使ったピボットインディケーターは、このスレッドにたくさんあります。

ディアmladenさん、ありがとうございました。

AutoPivotIndicator_ver5」だけは「TARGETS-LINES」と同じような感じで、ダウンロードし、テストしました。

残念ながら、このインジケーターもバッファを使用せず、オブジェクトを使用しています。

私の簡単なインジケータ(各行にバッファを割り当てる)を変更していただけませんか。

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