Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 404
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
Emirleri açma ve değiştirme işlevleri için bir wrapper yazmaya başladım (bu operatörlerden değer döndürmekle sorunlarımı çözeceğini düşündüm), ama aynı sorun var.
Sorunun ne olduğunu açıklar mısın? (Ne yazarsam yazayım OrderSend, OrderSelex ve ModifyOrder'dan değerleri döndürmede her zaman sorun oluyor)
sarıcı kodu.
int başlangıç()
{
if (sinyal == 1)
{
OrderSendX(Symbol(),OP_BUY,0.1,Ask,0,500,500,"123",123,0,Kırmızı);
}
dönüş(0);
}
//-------------------------------------------
int OrderSendX (string sembolü,int cmd,çift hacim,çift fiyat,int kayma,çift stoploss,çift kar al,dize yorumu,
int magic,datetime sona erme,color arrow_color)
{
int err=GetLastError();
hata = 0;
bool exit_loop = yanlış;
int bilet = -1;
int Yeniden Dene = 10;
int cnt = 0;
if(cmd == OP_BUY || cmd == OP_SELL) // açılış için sipariş tipini kontrol edin
{
while(!exit_loop)
{
bilet = OrderSend(sembol,cmd,hacim,fiyat,slippage,stoploss,takeprofit,yorum,sihir,sona erme,ok_renk);
hata = GetLastError();
geçiş(hata)
{
durum ERR_NO_ERROR:
çıkış_döngüsü = doğru;
kırmak;
durum ERR_SERVER_BUSY:
durum ERR_NO_CONNECTION:
durum ERR_INVALID_PRICE:
durum ERR_BROKER_BUSY:
ERR_TRADE_CONTEXT_BUSY vakası:
cnt++;
kırmak;
ERR_PRICE_CHANGED vakası:
durum ERR_OFF_QUOTES:
durum ERR_REQUOTE:
Yeniler();
devam etmek;
varsayılan:
çıkış_döngüsü = doğru;
kırmak;
}
if(cnt>tekrar dene)
çıkış_döngüsü = doğru;
if(!exit_loop)
{
uyku(1000);
Yeniler();
}
başka
{
if(hata !=ERR_NO_ERROR)
{
Print("Hata : " + hata);
}
}
if(err ==ERR_NO_ERROR)
{
OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES);
bilet iadesi);
}
Print("Sıra açılırken hata oluştu" + cnt + "denemeler");
dönüş(-1);
}
}
}
Emirleri açma ve değiştirme işlevleri için bir wrapper yazmaya başladım (bu operatörlerden değer döndürmekle sorunlarımı çözeceğini düşündüm), ama aynı sorun var.
Sorunun ne olduğunu açıklar mısın? (Ne yazarsam yazayım OrderSend, OrderSelex ve ModifyOrder'dan değerleri döndürmede her zaman sorun oluyor)
https://docs.mql4.com/ru/trading/ordermodify
OrderModify() evet , hayır döndürür
Kimse açıklayamaz.
Yardımı bana 100 kez kopyalayarak değil, bir örnekle farklı bir şekilde deneyelim.
Nasıl doğru olmalı? Düzeltmeleri bir örnekle anlayacağım
{
SL=NormalizeÇift(Teklif-SondakiDurma*Noktası,Rakamlar);
if(OrderStopLoss()!=SL)
OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
gerçekten eklemek
"""ticket """= OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0); her zaman ve doğru yemek?
Ve açıklamaya çalışan herkese teşekkürler.
Ne yazık ki, bir değişkeni önceden fonksiyon olarak tanımlanmış bir değişken olarak nasıl tanımlayacağımı anlamıyorum.
Ve açıklamaya çalışan herkese teşekkürler.
Ne yazık ki, bir değişkeni önceden fonksiyon olarak tanımlanmış bir değişken olarak nasıl tanımlayacağımı anlamıyorum.
Sevgili Leanid, Yardımı okumayı ve hatalar ve uyarılarla çalışmayı öğrenin. Bunu nasıl yapacağınızı öğrenmezseniz, normal şekilde programlamayacaksınız. Bunlar temel bilgiler. Uyarıda yazılanları çevirmeyi denediniz mi? "Doğrulama gerektiren" işlevlerin anlamını anlıyor musunuz? Yardım, bu işlevlerle çalışmanın doğru bir örneğini açıklar. Örneğin, OrderModify(). Yardıma bakın:
Geri dönüş değeri
Başarı durumunda true, başarısızlık durumunda false döndürür. hakkında bilgi almak için hata , işlevi çağırmanız gerekir GetLastError() .
ve aşağıdaki bir örnektir:
Gördüğünüz gibi, fonksiyonun dönüş değeri if-else ifadesinde işlenir. res değişkenine bir nedenden dolayı ihtiyaç vardır. Bu, ticaret işlevinin yürütülmesinin sonucudur! Paranızın bağlı olduğu fonksiyonlar! Buna göre, olası tüm seçenekleri mümkün olduğunca doğru bir şekilde işlemek için (bu örnekte işleme sunulmamaktadır), res değişkeni ve GetLastError() işlevi tarafından döndürülen hata kodu gereklidir. Geliştiriciler, programcıların dikkatle ele alınması gereken "önemli" işlevler olduğunu unutmamaları için bir hatırlatma olarak bilerek uyarılar eklediler! Ayrıca değer kontrol edilmezse hata olmayacağına dikkat edin! Yani bu durumda fonksiyon yine de çalışacak ancak anormal bir durum olursa işleme alınmayacaktır. Anormal durumların listesi - GetLastError() işlevinin dönüş kodları.
Umarım bu daha açıktır.
Emirleri açma ve değiştirme işlevleri için bir wrapper yazmaya başladım (bu operatörlerden değer döndürmekle sorunlarımı çözeceğini düşündüm), ama aynı sorun var.
Ve bu durumda, bir sarmalayıcı yazmanıza gerek yoktur. Dönüş değeri kontrol uyarısını çözmez! Bu fonksiyonların örneklerine bir göz atın ve aynısını yapın!
Yardımda belirtildiği gibi hata veriyor.
yazdım ve sorun yok
if(OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0))
{
Print("Değişiklik başarılı.");
}
else Print("Sipariş değiştirme hatası .");
Kodu mesajlara doğru şekilde ekleyin: Kodu foruma doğru şekilde yerleştirin
Traling neden satış için çalışmıyor? işleri satın almak için!
Genetik derleme sırasında herhangi bir hata veya uyarı yoktur.
İşte kod: