![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Cevap için teşekkürler!
Ancak bu indi histogram kodundaki gibi genel grafikte MA'nın açı çizgilerini nasıl alabilirim?
#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
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![](https://c.mql5.com/forextsd/smiles/smile.png)
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.
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.
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
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;
Bamikahı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
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 varYardı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