Kodlama yardımı - sayfa 195

 
shtopr:
спасибо за ответ.

проверил h1, m30, m15, m5, m1

по-прежнему работает только один цвет, красный.

Sana söylediğim buydu: 3. renk için (her iki değer de aynı değer aralığına düştüğünde), 3. renk için bir seçenek eklemek için kodu değiştirmeniz gerekir.

 
mladen:
İşte bir sütun kullanan bir sürüm. Üçüncü bir renk istiyorsanız, yeni bir seçenek eklemeniz gerekir.

2 dakikalık bir renko canlı grafiğinde, en üstte sadece 2 yeşil çubuk var ve yorulduğum tüm çiftler için bu normal mi?

 
drunkpips:
2 dakikalık bir renko canlı grafiğinde, en üstte sadece 2 yeşil çubuk var ve yorulduğum tüm çiftler için bu normal mi?

renko çizelgeleri kullanmıyorum

Yerleşik göstergeleri (iBEarsPower() ve iBullsPower()) kullanıyor, bu nedenle bazı sorunlar varsa, sorun zaten yerleşik göstergelerin kendisindedir.

 
mladen:
Sana söylediğim buydu: 3. renk için (her iki değer de aynı değer aralığına düştüğünde), 3. renk için bir seçenek eklemek için kodu değiştirmeniz gerekir.

Ок. Спасибо!!

 

mladen,

# 1874 numaralı yazıdan 'basit mtf' ile çalıştım ve oynadım.

Not: Bir MA'nın MA'sıdır ve MTF özelliklidir.

Birkaç sorum var:

Kodla ne yaparsam yapayım, eğer bir şey olursa 'returnBars'ın ne yaptığını anlayamıyorum.

1. Hedef zaman çerçevesinde değiştirilen çubukların sayısının gerekli olup olmadığını ne belirler ve neden?

2. Bu satırla ilgili olarak:

returnBars = TimeFrame == "returnBars"; // değiştirilen çubuk sayısının istenip istenmediğini kontrol edin

Ben yüksek eğitimli bir programcı değilim. Bu bileşik yapıyı bilmiyorum. Değişken türlerini karıştırmanın kurallarını da bilmiyorum.

Timeframe string değişkeni boolean returnBars değerini alıyor gibi görünüyor.

Ardından değeri returnBars - öğesine yeniden atar. ??

returnBars boolean olduğundan, TimeFrame 0'dan büyükse '1' atayın, aksi takdirde '0' atayın mı?

3. Göstergeyi daha yüksek bir TF'ye ayarladım ve birçok çubuğu canlı (ileri) veya Strateji test cihazında test ediyorum. Onu kullanan satırı ortadan kaldırabilir ve gösterge satırlarında HİÇBİR değişiklik elde edemem:

if (returnBars) Comment("returnBars",returnBars," Tick",Volume(0));

// if (returnBars) { ma1[0] = limit+1; dönüş(0); }

Ekrandaki yorum satırında "returnBars 1" gösterilir.

'1' değerini nereden aldığını bilmiyorum.

'Eğer' kısmı olmadan, her zaman '0' gösterir.

Init() içine konulursa aynı sonuçlar.

büyük olmak

 
Big Be:
mladen,

# 1874 numaralı yazıdan 'basit mtf' ile çalıştım ve oynadım.

Not: Bir MA'nın MA'sıdır ve MTF özelliklidir.

Birkaç sorum var:

Kodla ne yaparsam yapayım, eğer bir şey olursa 'returnBars'ın ne yaptığını anlayamıyorum.

1. Hedef zaman çerçevesinde değiştirilen çubukların sayısının gerekli olup olmadığını ne belirler ve neden?

2. Bu satırla ilgili olarak:

returnBars = TimeFrame == "returnBars"; // değiştirilen çubuk sayısının istenip istenmediğini kontrol edin

Ben yüksek eğitimli bir programcı değilim. Bu bileşik yapıyı bilmiyorum. Değişken türlerini karıştırmanın kurallarını da bilmiyorum.

Timeframe string değişkeni boolean returnBars değerini alıyor gibi görünüyor.

Ardından değeri returnBars - öğesine yeniden atar. ??

returnBars boolean olduğundan, TimeFrame 0'dan büyükse '1' atayın, aksi takdirde '0' atayın mı?

3. Göstergeyi daha yüksek bir TF'ye ayarladım ve birçok çubuğu canlı (ileri) veya Strateji test cihazında test ediyorum. Onu kullanan satırı ortadan kaldırabilir ve gösterge satırlarında HİÇBİR değişiklik elde edemem:

if (returnBars) Comment("returnBars",returnBars," Tick",Volume(0));

// if (returnBars) { ma1[0] = limit+1; dönüş(0); }

Ekrandaki yorum satırında "returnBars 1" gösterilir.

'1' değerini nereden aldığını bilmiyorum.

'Eğer' kısmı olmadan, her zaman '0' gösterir.

Init() içine konulursa aynı sonuçlar.

büyük olmak

büyük olmak

Bunu hayal edin:

1. 15 dakikalık bir grafik üzerinde çalışıyorsunuz ve göstergeniz 1 saatlik verileri gösteriyor. 15 dakikalık grafikte son tikte kaç çubuk değişti ve 1 saatlik grafikte kaç çubuk değişti? Dönüş çubukları bunu kontrol ediyor. Bu sayının herhangi bir varsayılan değer olması gerekmez (grafiklerinizden uzun süredir ziyaret etmediğiniz bir zaman aralığı seçin ve metatrader o zaman aralığı için veri indirmeye başladığında ne olacağını görün - kaç yeni çubuk kontrol etmelisiniz) indirildi veya aksi takdirde çoklu zaman çerçevesi göstergesinin geçmiş çubukları için doğru bir duruma sahip olmak için zaman çerçeveleri arasında ileri geri atlamak zorunda kalacaksınız)

2. ReturnBars = TimeFrame == "returnBars";

Orada bir atamanız ("=") ve bir mantıksal karşılaştırmanız var ("==") Bu, returnBars'ın iki dizenin mantıksal karşılaştırmasının sonucunu alması gerektiği anlamına gelir (TimeFrame ve "returnBars")

3. Dönüş çubukları, boole türünde bir değişkendir. İki değere sahip olabilir: "yanlış"a eşit olan 0 ve "doğru"ya eşit olan 1. Bu nedenle returnBars için 1 alıyorsunuz (yani returnBars "true" olarak ayarlanmıştır)

______________

Not: boolean için C/C++ kuralları için olsaydı, 0'dan farklı herhangi bir değer doğru kabul edilirdi ve metatrader değişkenlerini aynı şekilde test edebilirsiniz (örneğin if(someDoubleValue) someDoubleValue'nin 0'dan farklı olup olmadığını test ederdi), ancak metatrader, boole tipi değişkenlere 0 ve 1 atar

 

Sevgili Mladen

Poalln göstergesinin nasıl yeniden boyadığını anlayamıyorum. iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) veya iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8) gelecek değerler anlamına geldiğini biliyorum, ancak son çubuğu hesaplarken i-8 için veri yok.

Bence sıfır olur. Peki Pollan nasıl yeniden boyar?

En iyi,

 
-IXI-:
Sevgili Mladen

Poalln göstergesinin nasıl yeniden boyadığını anlayamıyorum. iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) veya iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8) gelecek değerler anlamına geldiğini biliyorum, ancak son çubuğu hesaplarken i-8 için veri yok.

Bence sıfır olur. Peki Pollan nasıl yeniden boyar?

En iyi,

IXI

Geçerli bir çubukta, bu çubuklar için 0 değerini alır. İlk geçmiş çubukta 1 gelecek değeri ve 7 sıfır alır. Ve benzeri.

Yeni çubuklar oluştukça, gelecekteki değerlerin sonuçları için sıfır alan çubuklar aslında gerçek gelecek sonuçları alıyor ve daha sonra bu değerler bu "yeni" gelecek değerlere göre değiştiriliyor

 

Bu göstergenin JPY çiftlerinde çalışmasını nasıl sağlayabilirim

Merhaba,

Bu indi, her tur numarasıyla bir satır ve tur numarasının her iki tarafında bir satır 15 pip yapar.

Ancak JPY çiftleriyle çalışmaz.

Bunun çalışması için neyin değiştirilmesi gerekiyor?

#property indicator_chart_window

extern color UpperLineColor = Red;

extern color MainLineColor = Red;

extern color LowerLineColor = Red;

extern double HighOffset = 150;

extern double LowOffset = 150;

extern int LineStyle = 2;

extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot";

double LineSpaceOld;

double Hoch;

double Tief;

bool FirstRun = true;

double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent)

string LineText = "RoundNr ";

string LineText1 = "RoundNr1 ";

string LineText2 = "RoundNr2 ";

int deinit()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

ObjectDelete(LineText+DoubleToStr(i,2));

ObjectDelete(LineText1+DoubleToStr(i,2));

ObjectDelete(LineText2+DoubleToStr(i,2));

}

return(0);

}

int start()

{

if(FirstRun)

{

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

FirstRun = false;

}

else if(LineSpace != LineSpaceOld)

{

deinit();

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

}

DrawLines();

LineSpaceOld = LineSpace;

return(0);

}

void DrawLines()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

string StringNr = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

else // Adjustments

{

ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

else // Adjustments

{

ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

else // Adjustments

{

ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

}

WindowRedraw();

}
 
Georgebaker:
Merhaba,

Bu indi, her tur numarasıyla bir satır ve tur numarasının her iki tarafında bir satır 15 pip yapar.

Ancak JPY çiftleriyle çalışmaz.

Bunun çalışması için neyin değiştirilmesi gerekiyor?

#property indicator_chart_window

extern color UpperLineColor = Red;

extern color MainLineColor = Red;

extern color LowerLineColor = Red;

extern double HighOffset = 150;

extern double LowOffset = 150;

extern int LineStyle = 2;

extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot";

double LineSpaceOld;

double Hoch;

double Tief;

bool FirstRun = true;

double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent)

string LineText = "RoundNr ";

string LineText1 = "RoundNr1 ";

string LineText2 = "RoundNr2 ";

int deinit()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

ObjectDelete(LineText+DoubleToStr(i,2));

ObjectDelete(LineText1+DoubleToStr(i,2));

ObjectDelete(LineText2+DoubleToStr(i,2));

}

return(0);

}

int start()

{

if(FirstRun)

{

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

FirstRun = false;

}

else if(LineSpace != LineSpaceOld)

{

deinit();

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

}

DrawLines();

LineSpaceOld = LineSpace;

return(0);

}

void DrawLines()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

string StringNr = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

else // Adjustments

{

ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

else // Adjustments

{

ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

else // Adjustments

{

ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

}

WindowRedraw();

}

Georgebaker,

Neden bunun gibi bazı göstergeleri kullanmıyorsunuz: https://www.mql5.com/en/forum/180648/page307 göstergeniz için temel olarak? Size biraz kodlama süresi kazandırabilir