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.
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ı.
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
'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.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
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-- )
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
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.
HiachieverTeş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
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çıklamatrisbizim,
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
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,
HiachieverTamam, ö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?
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