Kodlama yardımı - sayfa 198

 
cain82:
Cevap için teşekkürler!

Ancak bu indi histogram kodundaki gibi genel grafikte MA'nın açı çizgilerini nasıl alabilirim?

//---- 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);

}

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

Bu gösterge, eğime benzer bir şey hesaplıyor (açı değil, çünkü açı asla zaman serisi grafiğinde tam olarak hesaplanamıyor, ne de tam bir eğim çünkü eğim için gerekenden farklı bir matematik kullanmaya çalışıyor) her biri için ve annenin her barı. Bunu tersine çevirmek istiyorsanız (tam olarak ne istediğinizi tahmin ediyorum) sonuç olarak bu başlangıç ma'sını alacaksınız (böylece grafikte hareketli bir ortalama elde edeceksiniz).

Son çubuğun eğimini genişletmek istiyorsanız, son çubuğun eğimini kullanarak hareketli ortalamayı genişleten bu göstergeye benzer bir şey kullanabilirsiniz https://www.mql5.com/en/forum/173235/page36

 
mladen:
Bu gösterge, eğime benzer bir şey hesaplıyor (açı değil, çünkü açı asla zaman serisi grafiğinde tam olarak hesaplanamıyor, ne de tam bir eğim çünkü eğim için gerekenden farklı bir matematik kullanmaya çalışıyor) her biri için ve annenin her barı. Bunu tersine çevirmek istiyorsanız (tam olarak ne istediğinizi tahmin ediyorum) sonuç olarak bu başlangıç ma'sını alacaksınız (böylece grafikte hareketli bir ortalama elde edeceksiniz). Son çubuğun eğimini genişletmek istiyorsanız, son çubuğun eğimini kullanarak hareketli ortalamayı genişleten bu göstergeye benzer bir şey kullanabilirsiniz https://www.mql5.com/en/forum/173235/page36

Teşekkürler mladen! İstediğim şeye çok benziyor

MTF modu ile aynı var mı?

 

mladen..

bu göstergeyi değiştirmek için yardımınıza ihtiyacım var https://www.mql5.com/en/forum/general

 

Mladen,

Hareketli bir ortalamadan alınan verileri kullanarak BBand'leri hesaplayın.

Örnek olarak standart dışı MT4 çoraplara uygulanabilir.

AllAverages'ın hareketli ortalama türlerinden birine örnek olarak.

Ortalamadan gerçek verileri kullanan bir BBands'dir.

Farklı türde bir hareketli ortalama ile BBands SMA yok.

 
Antonsan:
Mladen,

Hareketli bir ortalamadan alınan verileri kullanarak BBand'leri hesaplayın.

Örnek olarak standart dışı MT4 çoraplara uygulanabilir.

AllAverages'ın hareketli ortalama türlerinden birine örnek olarak.

Ortalamadan gerçek verileri kullanan bir BBands'dir.

Farklı türde bir hareketli ortalama ile BBands SMA yok.

Antonsan

iStdDevOnArry() işlevini kullanırsanız, Bollinger bantlarını herhangi bir değerde hesaplayabilirsiniz.

Bir diziyi kullanmak istediğiniz değerlerle doldurun (örneğin herhangi bir ortalamanın değerleri) iStdDevOnArray() kullanarak sapmasını hesaplayın ve iMaOnArray() kullanarak Bollinger bantları için bir orta çizgi hesaplayın (iStrDevOnArry()'nin kullandığı aynı diziyi kullanarak) ve ardından bantlar basittir: orta çizgi + sapma*üst için çarpan ve orta çizgi - alt bant için sapma*çarpan

 

Antonsan

İşte herhangi bir değerde bollinger bantları oluşturmak için şablon olarak kullanabileceğiniz çok basit bir örnek kod. Tek yapmanız gereken bu satırdaki iRsi() çağrısını değiştirmek:

for(i=limit; i >= 0; i--) değer = iRSI(NULL,0,RsiLength,RsiPrice,i);

istenen işlev veya herhangi bir özel göstergeye bir iCustom() çağrısı ile ve bu değer için Bollinger bantlarını hesaplayacaktır.

Dosyalar:
 
mladen:
person77 Bir seçenek daha eklendi: AllowCloseEqualOpen. böylece şimdi bu seçenekle kontrol edebilirsiniz

Harika iş. Tekrar teşekkürler.

 

EA için iyi bir gösterge

Merhaba,

Bu göstergenin 5 satırı vardır.(pivot+R1+R2+S1+S2)

Bu satırları temel alan bir tane yapmak istiyorum. Ne yazık ki bu satırlarda arabellek yok. Birinin her satıra bir arabellek ayırmasına ihtiyacım var.

Lütfen yardım et

Saygılarımla;

Bamik

Dosyalar:
 
bamik:
Merhaba,

Bu göstergenin 5 satırı vardır.(pivot+R1+R2+S1+S2)

Bu satırları temel alan bir tane yapmak istiyorum. Ne yazık ki bu satırlarda arabellek yok. Birinin her satıra bir arabellek ayırmasına ihtiyacım var.

Lütfen yardım et

Saygılarımla;

Bamik

ahır

Bu konuyu kontrol ettiniz mi: https://www.mql5.com/en/forum/172894

Bu iş parçacığında arabellekleri kullanan çok sayıda pivot gösterge var

 
mladen:
ahır

Bu konuyu kontrol ettiniz mi: https://www.mql5.com/en/forum/172894

Bu iş parçacığında arabellekleri kullanan çok sayıda pivot gösterge var

Yardımın için teşekkürler geyik mladen,

Bu göstergelerin çoğunu indirip test ettim.Sadece "AutoPivotIndicator_ver5" göstergesi tıpkı "TARGETS-LINES" gibiydi.

Ne yazık ki, bu gösterge de arabelleği kullanmaz ve nesneyi kullanır.

Lütfen basit göstergemi değiştirir misiniz? (her satıra bir arabellek ayırın). Bu küçük bir gösterge.

teşekkürler