Nasıl kodlanır? - sayfa 118

 

CEHansen için

Merhaba,

Bunun içinde çubukları tek tek aldığınız yer için Current yerine her yerde i değişkenini kullanmanız gerekir. Akım başlatılmamış, yani 0.

Bunu görmenin en kolay yolu, başlangıçta şunun için içine konur:

Akım = ben;

Oklar görünecektir. Ayrıca Sto_Lookback için daha büyük bir değer kullanmayı unutmayın. Mabe 100,1000 ya da onun gibi bir şey.

PS Bunun gibi yapmak için kullanın, benim açımdan daha iyi.

for (int i = Sto_Lookback; i >0; i--){

...

}

Çünkü bu, "çubukların" normal yolu olduğundan, 0 sonuncusu geliyor. Daha sonra sizi başka dertlerden kurtarır. (örneğin - yeniden boyama). Sadece bir düşünce.

Teşekkürler,

Victor

 
 

Klinger Hacim Osilatörü

Buna baktım, ilginç bir gösterge gibi görünüyor.

Bununla birlikte, kısmen, Forex'te gerçekten bulunmayan hacme dayanır.

büyük olmak

 

Sipariş Değiştirme Hatası 1

Geri testimde ara sıra "OrderModify error1" alıyorum. Anlayabildiğim kadarıyla bu, hiçbir değişiklik olmadığı anlamına geliyor, yani OrderModify() argümanları, değiştirilen sıranın karşılık gelen parametreleriyle aynı.

Bunun nedeni çift karşılaştırma sorunu olabilir.

Soru şu, bu sorunu nasıl çözebilirim?

İşte soruna neden olduğuna inandığım alan:

if (Sipariş == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Teklif, Rakamlar) + " Satın Alma Kapat");

if (!EachTickMode) BarCount = Çubuklar;

IsTrade = Yanlış;

devam etmek;

}

//Bir Kez Taşı

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Nokta * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Nokta * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Nokta * MoveStopTo, OrderTakeProfit(), 0, Kırmızı);

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

//Sondaki durdurma

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Nokta * TrailingStop) {

if(OrderStopLoss() < Teklif - Nokta * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

} başka {

//Kapat

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

//| Sinyal Başla(Çıkış Sat) |

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

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

//| Sinyal Sonu(Çıkış Sat) |

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

if (Sipariş == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Kapat Satış");

if (!EachTickMode) BarCount = Çubuklar;

IsTrade = Yanlış;

devam etmek;

}

//Bir Kez Taşı

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Sor >= Nokta * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Nokta * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Nokta * MoveStopTo, OrderTakeProfit(), 0, Kırmızı);

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

//Sondaki durdurma

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Sor) > (Nokta * TrailingStop)) {

if((OrderStopLoss() > (Sor + Nokta * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

}

}

}

 

Kod Sorusu

i++ veya i-- kodlamada ne anlama geliyor?

Örn: for (int i=5; i>0; i-- )

 
matrixebiz:
i++ veya i-- kodlamada ne anlama geliyor? Örn: for (int i=5; i>0; i-- )

Sayı tabanlı bir değişkeni artırmak veya azaltmak için C tabanlı dillerde kısa yoldur.

Örneğin, Visual Basic'te yazmanız gerekir.

i = i + 1, i değişkenini artırmak için.

ancak, C'de basitçe i++ yazabilirsiniz.

Bu yardımcı olur umarım.

Hiachiever

 
hiachiever:
Sayı tabanlı bir değişkeni artırmak veya azaltmak için C tabanlı dillerde kısa yoldur.

Örneğin, Visual Basic'te yazmanız gerekir.

i = i + 1, i değişkenini artırmak için.

ancak, C'de basitçe i++ yazabilirsiniz.

Bu yardımcı olur umarım.

Hiachiever

Teşekkürler,

öyleyse eğer koyarsam if (int i=6; i>0; i++)

'döngü' yapacak veya değeri maksimum 6'ya kadar kontrol etmeye devam edecek mi? Bunun doğru olup olmadığından emin değilim. Ya i-- kullanırsam? Lütfen açıkla

 
matrixebiz:
Teşekkürler,

öyleyse eğer koyarsam if (int i=6; i>0; i++)

'döngü' yapacak veya değeri maksimum 6'ya kadar kontrol etmeye devam edecek mi? Bunun doğru olup olmadığından emin değilim. Ya i-- kullanırsam? Lütfen açıkla

matrisbizim,

6'dan başlayıp 0'a geri dönmek istiyorsanız i--

(int i=6; i>0; i--)

Bu, 6'da başlayacak, I > 0 olduğu sürece her döngüde 1'er azalacak.

0'ı dahil etmek istiyorsanız i>=0 kullanın.

Şerefe,

Hiachiever

 
hiachiever:
matrisbizim,

6'dan başlayıp 0'a geri dönmek istiyorsanız i--

(int i=6; i>0; i--)

Bu, 6'da başlayacak, I > 0 olduğu sürece her döngüde 1'er azalacak.

0'ı dahil etmek istiyorsanız i>=0 kullanın.

Şerefe,

Hiachiever

Tamam, öyleyse eğer koyarsam if (int i=6; i>0; i++)

o zaman 6'da başlayacak, sonra 1, 2, 3 ... 6'yı artırmaya başlayacak, doğru mu?

 
matrixebiz:
Tamam, öyleyse if (int i=6; i>0; i++) koyarsam 6'dan başlayacak, sonra 1, 2, 3 ... 6'yı artırmaya başlayacak, doğru mu?

Hayır, orada yapmak istediğin şey 6'da bitiyorsa.

Bu durumda kod olacaktır

(int i=1; i<=6; i++) için

Bu, 1'de başlayacak ve her döngüde 1'er artışla 6'da bitecektir.

Şerefe,

Hiachiever