![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
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