Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 202
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
=
Eğer ikame ilkesini doğru anladıysam öyle görünüyor.
Kıvrımlı parantezlerden sonra fazladan noktalı virgül. Ve şimdi başka ne ifade ettiği açık değil.
Ne olduğunu görmek için makro genişletmeyi otomatikleştirmenin kolay bir yolu olmaması çok kötü. Kendi senaryosunu karıştırmadıkça.
Teşekkür ederim! Makroda bir süre sonra noktalı virgül olmamasına şaşmamalı.
Makrolar iyi bir şeydir, ancak iyi ve kötü arasındaki çizgi, onların durumunda, bir kadından bile daha incedir))) Onlara karşı çok, çok dikkatli olmalısınız. Ve evet, benim örneğimde ';' değil, ;'yi kaldırdıktan sonra makrodaki if ile ilgili olan başka bir şey.
Makroları çok iyi biliyorum, bu yüzden sizinki gibi bir durumda, onları kullanmaya yemin edeli 1.5 yıl oldu, daha uygun:
Bu sadece satır içi ile ilgili, burada gerçekten hiçbir şey bulamadım.
C++ bilmiyorum.
Tünaydın! Lütfen yardım et!
Bir siparişi açmak ve değiştirmek için oldukça basit bir kod vardır. OrderSend , OrderSelect ve OrderModify işlevlerini denemeler arasında küçük bir gecikmeyle bir döngüye koydum. İletişim hatalarını en aza indirmek vb.
Aşağıdaki yanlış anlaşılma meydana gelir: sipariş normal olarak açılır, ardından StopLoss'un başarılı bir modifikasyonu, TakeProfit'in başarılı bir modifikasyonu olur. Ancak TP ayarlanırken StopLoss sıfırlanır. nedenini anlayamıyorum.
İşte kodun o kısmı:
gönder = 5; // sipariş vermek için maksimum deneme sayısı
tik=0;
sendset=0; //Sayacı dene
while(!tick && sendset<=gönder)
{
tick=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lot,2),Bid,150,0.0,0.0,komm,MagNum,0,Yellow);
sendset++;
uyku(1000); // Bir sonraki denemeden önce 1 saniye geciktir
}
seç = 5; // bir sipariş seçmek için maksimum deneme sayısı
slschet=0; //Sipariş seçme denemelerinin sayısı
while(!OrderSelect(tick,SELECT_BY_TICKET) && slschet<=seç)
{
slschet++;
Uyku(500); // Sonraki denemeden 0,5 saniye önce gecikme
}
if(slschet<select) //maksimum değerden daha az deneme yapıldı, bu, sipariş seçiminin başarılı olduğu anlamına gelir
{
değiştirme = 5;//bir siparişi değiştirmek için maksimum deneme sayısı
mdset=0;
while(!OrderModify(tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),OrderTakeProfit(),0,Sarı)
&& mdschet<=değiştir)
{
mdschet++;
Uyku(500); // Sonraki denemeden 0,5 saniye önce gecikme
}
*Burada her şey harika - SL kurulu
mdset=0; //TP'yi değiştirmeden önce sayacı sıfırla
while(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(TP,Rakamlar),0,Sarı)
&& mdschet<=değiştir)
{
mdschet++;
Uyku(500);
}
}
*Burada TP normal olarak ayarlanır, ancak SL zaten 0.0'a eşittir. Yani, OrderStopLoss()'un 0.0'a eşit olduğu ortaya çıktı.
Her ne kadar sipariş seçimi değişmedi.
SL ve TP kurulumu arasına tekrar OrderSelect eklerseniz, her şey çalışıyor gibi görünüyor. Ama mantığa meydan okuyor.
Konuyla ilgili yardımlarınız için şimdiden teşekkürler.
Tünaydın!
Lütfen dinamik bir dizinin boyutunu nasıl değiştireceğimi bulmama yardım edin.
Diyelim ki bir dizi ayarladım:
Ayrıca, döngüdeki ilk alt programda, belki birkaç kez (bunda soru yok - şimdiye kadar amaçlandığı gibi çalışıyor):
Bir sonraki alt programda, bir döngüdeki ilk boyuttaki öğeleri ekleyeceğim. Ne kadarı önceden bilinmiyor. Bunun, boyutu önceden bildirmenizden daha yavaş olduğunu biliyorum. Ancak yılda 500'e kadar eklemenin havayı bozmayacağını düşünüyorum.
Soru şu ki, bu alt programda dizinin mevcut boyutunu nasıl bulacağız? Bunu temel almak ve ona yeni bir değer eklemek.
ArraySize() alın ve 8'e bölünsün mü? Yoksa daha uygun bir işlev var mı?
Şimdiden teşekkürler!
Tünaydın!
Lütfen dinamik bir dizinin boyutunu nasıl değiştireceğimi bulmama yardım edin.
Diyelim ki bir dizi ayarladım:
Ayrıca, döngüdeki ilk alt programda, muhtemelen birkaç kez (bunda soru yok - şimdiye kadar amaçlandığı gibi çalışıyor):
Bir sonraki alt programda, bir döngüdeki ilk boyuttaki öğeleri ekleyeceğim. Ne kadarı önceden bilinmiyor. Bunun, boyutu önceden bildirmenizden daha yavaş olduğunu biliyorum. Ancak yılda 500'e kadar eklemenin havayı değiştirmeyeceğini düşünüyorum.
Soru şu ki, bu alt programda dizinin mevcut boyutunu nasıl bulacağız? Bunu temel almak ve ona yeni bir değer eklemek.
ArraySize() alın ve 8'e bölünsün mü? Yoksa daha uygun bir işlev var mı?
Şimdiden teşekkürler!
DiziAralığı()
DiziAralığı()
Güzel gün.
Çok uzun zamandır MT4'te işlem yapmıyorum, tekrar denemeye karar verdim. Daha önce komut dosyasını kullandım (ekli), ancak şimdi başlamıyor, lütfen neyin yanlış gittiğine bakın.
Merhaba!
Herhangi bir zaman dilimindeki dizi öğelerinin sayısını CopyHigh'ı hemen bilmenin bir yolu var mı?
Kendime cevap vereceğim, belki arama motorundan birileri soruya rastlar.
Kendime cevap vereceğim, belki arama motorundan birileri soruya rastlar.
Daha Fazla Bar(), iBars()
Bars() ile, herhangi bir zaman periyodundaki dizi elemanlarının sayısını bulamazsınız, sadece mevcut grafikte bulabilirsiniz.