Güzel gün. Bir danışman yapıyorum, belirli bir durumda 2 emir açıyor (mecazi olarak diyelim: fiyat yükseldiğinde ve düştüğünde). Arttırırken 2 açılır, fiyat düştüğünde bu 2'si kapanır ve yeni 2'si açılır.Bir emir kar almadan, ikincisi alımla gider. Sorun ikincisinde. Ölüm saati geldiğinde, o seçilmez, işte emirleri silmek için kod:
for ( int a = 0 ; a < OrdersTotal ()- 1 ; a++)
if ( OrderSelect (a, SELECT_BY_POS, MODE_TRADES))
if ( OrderComment () == "MyOrd" && OrderType () == OP_SELL)
OrderClose ( OrderTicket (), NormalizeDouble ( OrderLots (), Digits ), NormalizeDouble (Ask, Digits ), 0 );
OP_BUY için aynı. Bunun kalemler veya başka bir danışman tarafından değil, danışmanım tarafından açılan bir emir olduğundan emin olmak için yorumları karşılaştırırım. İşte OrderSelect ile ilgili sorun, sadece bir kar al emri seçmek istemiyor. a numarasına ulaştığında, OrderSelect false döndürür. Tester günlüğünde hata yok, GetLastError ayrıca her şeyin yolunda olduğunu söylüyor (0 döndürür). Neden seçilmiyor? Eğer seçememişse neden hata yok? Herkese teşekkürler.
Bir takip sorusu. Neden test cihazında, süreyi bir ay+ olarak ayarladığımda sonuçlarda beş basamak görünüyor? Fiyatlar nerede belirlenirse, NormalizeDouble(SomeValue, Digits) var. Ve sadece sonuçlarda, dergi küfretmez, ancak yuvarlama işlevi hakkında henüz bir şey bilmediğinde lanetlendi.
ve yine de - çoğu şeyi normalleştirmek o kadar kolay değil. izin verilen parti değişikliği adımını dikkate almak gerekir. örneğin, adım 0,01 ise, 2 ile normalleştirme ve eğer adım 0.1 ise, o zaman 1 ile normalleştirme
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.
düzenleme | sil Kaymayı hesaba katarak ve 130-134 hatası olmadan sipariş vermek için bir fonksiyon bulmama yardım et.
Bana seçimini göster.
Yazdır( GetLastError() );
SL ve TP'nin herhangi bir değeri için 134 verir, genellikle hiç sipariş vermez.
if(NumberOfOrders(NULL)==0) açılır
test cihazında bir sipariş yerine sürekli bir paket yerleştiriyor, neden anlayamadım, yani. bu çiftte başka kimse açık değilse sipariş vermelidir
NumderOrder=SiparişGönder(Symbol(),OP_BUY,0.01,Ask,3,Ask-SL*Point,Ask+TP*Point,"SATIN AL",0,0,Kırmızı);
Yazdır(GetLastError());
SL ve TP'nin herhangi bir değeri için 134 verir, genellikle hiç sipariş vermez.
if(NumberOfOrders(NULL)==0) açılır
test cihazında bir sipariş yerine sürekli bir paket yerleştiriyor, neden anlayamadım, yani. bu çiftte başka kimse açık değilse sipariş vermelidir
ERR_NOT_ENOUGH_MONEY 134 İşlemi tamamlamak için yeterli para yok
Güzel gün. Bir danışman yapıyorum, belirli bir durumda 2 emir açıyor (mecazi olarak diyelim: fiyat yükseldiğinde ve düştüğünde). Arttırırken 2 açılır, fiyat düştüğünde bu 2'si kapanır ve yeni 2'si açılır.Bir emir kar almadan, ikincisi alımla gider. Sorun ikincisinde. Ölüm saati geldiğinde, o seçilmez, işte emirleri silmek için kod:
OP_BUY için aynı. Bunun kalemler veya başka bir danışman tarafından değil, danışmanım tarafından açılan bir emir olduğundan emin olmak için yorumları karşılaştırırım. İşte OrderSelect ile ilgili sorun, sadece bir kar al emri seçmek istemiyor. a numarasına ulaştığında, OrderSelect false döndürür. Tester günlüğünde hata yok, GetLastError ayrıca her şeyin yolunda olduğunu söylüyor (0 döndürür). Neden seçilmiyor? Eğer seçememişse neden hata yok? Herkese teşekkürler.
koşul
her yinelemede kontrol edilir.
düşün - ilk yinelemeden sonra ne a 'ya eşit olacak ve ne OrdersTotal() -1 - olacak
OrderClose(OrderTicket(), NormalizeDouble(OrderLots(), Digits), NormalizeDouble(Ask, Digits), 0);
Solree :
NormalizeDouble ( OrderLots (), Rakamlar )
izin verilen parti değişikliği adımını dikkate almak gerekir.
örneğin, adım 0,01 ise, 2 ile normalleştirme
ve eğer adım 0.1 ise, o zaman 1 ile normalleştirme