Kodlama yardımı - sayfa 167

 

Aşağıdaki kodlamada Medyan fiyat yerine "KAPALI FİYAT" kullanmak istiyorum .... Lütfen yardım :

Çok teşekkürler

int başlangıç()

{

double ClosePrice=Kapat[0];

int limit, i, flag, flagh, trend[5000];

ikiye katla[5000], dn[5000], medyanPrice, atr;

int counted_bars = IndicatorCounted();

//---- olası hataları kontrol et

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

//---- son sayılan çubuk yeniden sayılacak

if(counted_bars > 0) counted_bars--;

limit=Barlar-1-sayılan_barlar;

//Baskı(sınır);

//----

for (i = Çubuklar; i >= 1; i--) {

TrendUp = BOŞ_VALUE;

TrendDown = BOŞ_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medyanFiyat = (Yüksek+Düşük)/2;

//Print("medyanFiyat: "+ortancaFiyat);

up=medyanFiyat+(Çarpan*atr);

//Print("yukarı: "+yukarı);

dn=medyanFiyat-(Çarpan*atr);

//Print("dn: "+dn);

eğilim=1;

if (Yakın>yukarı) {

eğilim=1;

if (trend == -1) changeOfTrend = 1;

//Print("trend: "+trend);

}

başka if (Kapat<dn) {

eğilim=-1;

if (trend == 1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (trend==1) {

eğilim=1;

changeOfTrend = 0;

}

else if (trend==-1) {

eğilim=-1;

changeOfTrend = 0;

}

eğer (trend0) {

bayrak=1;

//Print("bayrak: "+bayrak);

}

başka {

bayrak=0;

//Print("bayrak: "+bayrak);

}

if (trend>0 && trend<0) {

bayrak=1;

//Print("işaret: "+işaret);

}

başka {

bayrak = 0;

//Print("işaret: "+işaret);

}

if (trend>0 && dn<dn)

dn=dn;

eğer (trend)

yukarı=yukarı;

if (bayrak==1)

up=medyanFiyat+(Çarpan*atr);

if (işaret==1)

dn=medyanFiyat-(Çarpan*atr);

//-- Göstergeyi çiz

if (trend==1) {

TrendUp=dn;

if (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown=yukarı;

if (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Nokta);

DnBuffer = BOŞ_DEĞER;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iYüksek(Symbol(),0,i)+(3*Nokta);

}

}

WindowRedraw();

//----

dönüş(0);

}

 
rpasupathy:
Aşağıdaki kodlamada Medyan fiyat yerine "KAPALI FİYAT" kullanmak istiyorum .... Lütfen yardım :

Çok teşekkürler

int başlangıç()

{

double ClosePrice=Kapat[0];

int limit, i, flag, flagh, trend[5000];

ikiye katla[5000], dn[5000], medyanPrice, atr;

int counted_bars = IndicatorCounted();

//---- olası hataları kontrol et

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

//---- son sayılan çubuk yeniden sayılacak

if(counted_bars > 0) counted_bars--;

limit=Barlar-1-sayılan_barlar;

//Baskı(sınır);

//----

for (i = Çubuklar; i >= 1; i--) {

TrendUp = BOŞ_VALUE;

TrendDown = BOŞ_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medyanFiyat = (Yüksek+Düşük)/2;

//Print("medyanFiyat: "+ortancaFiyat);

up=medyanFiyat+(Çarpan*atr);

//Print("yukarı: "+yukarı);

dn=medyanFiyat-(Çarpan*atr);

//Print("dn: "+dn);

eğilim=1;

if (Yakın>yukarı) {

eğilim=1;

if (trend == -1) changeOfTrend = 1;

//Print("trend: "+trend);

}

başka if (Kapat<dn) {

eğilim=-1;

if (trend == 1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (trend==1) {

eğilim=1;

changeOfTrend = 0;

}

else if (trend==-1) {

eğilim=-1;

changeOfTrend = 0;

}

eğer (trend0) {

bayrak=1;

//Print("bayrak: "+bayrak);

}

başka {

bayrak=0;

//Print("bayrak: "+bayrak);

}

if (trend>0 && trend<0) {

bayrak=1;

//Print("işaret: "+işaret);

}

başka {

bayrak = 0;

//Print("işaret: "+işaret);

}

if (trend>0 && dn<dn)

dn=dn;

eğer (trend)

yukarı=yukarı;

if (bayrak==1)

up=medyanFiyat+(Çarpan*atr);

if (işaret==1)

dn=medyanFiyat-(Çarpan*atr);

//-- Göstergeyi çiz

if (trend==1) {

TrendUp=dn;

if (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown=yukarı;

if (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Nokta);

DnBuffer = BOŞ_DEĞER;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iYüksek(Symbol(),0,i)+(3*Nokta);

}

}

WindowRedraw();

//----

dönüş(0);

}

Değiştirebilirsiniz:

(Yüksek+Düşük)/2

ile

Kapat

 
mladen:
kenva

Hangi otomatik kontrol sembolü işlevinden bahsediyorsunuz? O kodda öyle bir şey yok

Tek yapmanız gereken uygun parametre alanına sembolü girmek ve çalışacaktır (sembol adı doğru olduğu sürece herhangi bir sembolde) Hakkında konuştuğunuz her şeyi yaptığı için fareastol'ün sağladığı göstergeyi kullanın. ona ihtiyacı olmak

merhaba mladen,

Bunları içeride görüyorum:

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

bazı parçalar:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));

for (int i=limit; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

tampon = iCustom(Symbol,timeFrame,indicatorFileName,"calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

ne yaptığını tam olarak bilmiyorum, çünkü yeteneğim tam amacını bilemiyor, ancak ham tahminime göre, harici bir sembol girersek kod otomatik olarak algılanıyor gibi görünüyor, sonra grafikte göster, eğer girilmemişse, gösterecek yerel Null grafiği. o zaman, birkaç harici giriş dizesini kasıtlı olarak dışarıda boş bırakırsam (orada hiçbir şeyi doldurmadan), gösterge tekrar tekrar (en azından üst üste bindirerek) yerel Null grafiğini birkaç kez gösterecek mi? ayrıca kod dahili önceden ayarlanmış sembollere nasıl uyum sağlar? tam olarak nasıl yapacağımı bilmiyorum, ama deniyorum, ek yolu gibi mi (harici giriş sembolü işlevini/tanımasını duyarsızlaştırmak için)? veya değişiklik, dahili önceden ayarlanmış sembollere nasıl uyarlanır?

bu arada, neden sayfa 166 #1660'tan önce yaptığım versiyon hala canlı olarak yeniden boyanıyor? böyle bir yeniden boyamaya neden olan temel nedenler nelerdir? tavsiyeler için teşekkürler

 
kenwa:
merhaba mladen,

Bunları içeride görüyorum:

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

bazı parçalar:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));

for (int i=limit; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

tampon = iCustom(Symbol,timeFrame,indicatorFileName,"calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

ne yaptığını tam olarak bilmiyorum, çünkü yeteneğim tam amacını bilemiyor, ancak ham tahminime göre, harici bir sembol girersek kod otomatik olarak algılanıyor gibi görünüyor, sonra grafikte göster, eğer girilmemişse, gösterecek yerel Null grafiği. o zaman, birkaç harici giriş dizesini kasıtlı olarak dışarıda boş bırakırsam (orada hiçbir şeyi doldurmadan), gösterge tekrar tekrar (en azından üst üste bindirerek) yerel Null grafiğini birkaç kez gösterecek mi? ayrıca kod dahili önceden ayarlanmış sembollere nasıl uyum sağlar? tam olarak nasıl yapacağımı bilmiyorum, ama deniyorum, ek yapmanın yolu gibi mi (harici giriş sembolü işlevini/tanımayı duyarsızlaştırmak için)? veya değişiklik, dahili önceden ayarlanmış sembollere nasıl uyarlanır?

bu arada, neden sayfa 166 #1660'tan önce yaptığım versiyon hala canlı olarak yeniden boyanıyor? böyle bir yeniden boyamaya neden olan temel nedenler nelerdir? tavsiyeler için teşekkürler

Göstergeyi bu gönderiden kontrol edebilirsiniz: https://www.mql5.com/en/forum/178416/page19 bazı ek kontrollerin nasıl yapılabileceğini görmek için

 

#1664 için, daha önce okuyun ve indirin, kodları uyarlayamıyorum, bana çok gelişmiş ve karmaşık.

 
kenwa:
#1664 için, daha önce okuyun ve indirin, kodları uyarlayamıyorum, benim için çok gelişmiş ve karmaşık.

Her şey iki satırda yazılamaz. Bazı durumlarda imkansız

 
fareastol:
Merhaba Mladen

Belirli bir pazar profiline dayalı olarak bir hedef bant için POC ve VA'yı hesaplama isteğimle ilgili olarak, mümkün olduğunca çok denedim. Ne yazık ki, sadece POC değeri kazandım. VA Yüksek/Düşük değerleri almak şu anki yeteneğimin ötesinde.

Ayrıca, haftanın başında, orijinal gösterge Seviye Sensörünün kodunda hata var gibi görünüyor ve ekteki resimde görebileceğiniz gibi korkunç bir görüntüye neden oluyor. Nedenini anlayamıyorum, sadece MT4 varsayılan ekranı ile daha düşük zaman dilimindeki veriler (<W1) arasındaki çakışmalarla ilgili olduğunu tahmin ediyorum.

Lütfen bir göz atın ve devam etmem için bana tavsiye verin.

derinden teşekkürler,

uzakdoğu

uzakdoğu

Ekrandaki bu şey, grafikte geçen Cuma verileri ile ilk Pazar veya Pazartesi verileri arasında ve satırın zamanlarına xshift zamanı eklendiğinde bir zaman boşluğu olduğu için oluyor.

Olası bir çözüm, bu sürümdeki çözümdür: ekranı ters çevirmek ve sağdan sola görüntülemek yerine soldan sağa görüntülemek (resimdeki gibi). Şimdiye kadar sağdan sola görüntüleme için bir çözüm bulunamadı

Dosyalar:
 

Bazen tek gereken biraz düşünmektir (önceki gönderiyi bitirir bitirmez fikir oradaydı. )

İşte "sağdan sola" çözüm (denediğim kadarıyla şimdi iyi çalışıyor)

 

Merhaba,

Standart sapma doğrusunu "elle" hesapladım.

Şimdi metatrader'dan orijinal Sapma Kanalı gibi bir kanal çizmek istiyorum.

Ama orijinal kanal gibi çalışması için faktör = 0,618'i normal sapma çizgime nasıl hesaplayacağımı bilmiyorum ...OBJPROP_DEVIATION,0.618)

 

Merhaba Mladen,

Bana birçok anlamlı şeyi hatırlatıyorsun ve beni çok motive ediyorsun.

Her şey için teşekkürler

uzakdoğu