ur kodunda bir hata durumu yapabilir ve RefreshRates() işlevini kullanabilirsiniz.
Nasıl yapacağımı bilmiyorum ama belki böyle bir şey yapabilirsiniz.
if(Ticaret==fase)
{
int ErrorCode= GetLastError();
if (HataKodu=130)
{
Yenileme Oranları();
}
}
yine bu kod doğru olmayabilir, bu yüzden nasıl yapılacağını google'da aramalısınız.
ayrıca, sayıları yuvarlamak için NormalizeDouble işlevini henüz yapmadıysanız.
ur kodunda bir hata durumu yapabilir ve RefreshRates() işlevini kullanabilirsiniz.
Bu nasıl yardımcı olacak?
geçici bir sorun olabilir. büyük/küçük harfe duyarlı olduğunu, bu nedenle oranların yenilenmesinin sorunu çözebileceğini söyledi.
geçici bir sorun olabilir. büyük/küçük harfe duyarlı olduğunu, bu nedenle oranların yenilenmesinin sorunu çözebileceğini söyledi.
doğru.
Raptor, yukarıdaki ticaretin yayılmasını bilmiyorum. Kod içerisine log çıktısı ekledim, bir dahaki sefere hata oluştuğunda size yayılmayı söyleyebileceğim.
Ama bana söyler misin, yayılma neden önemli ? Stoploss belirlenirken mesafeyi ne şekilde dikkate almam gerekiyor?
Örneğin bir sipariş gönderiyorum:
int bilet = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);
bu nedenle sipariş gönderirken kullandığım tek önceden tanımlanmış değişken: Sor
KAYMA ve TAKEPROFIT'in ikisi de 0'dır.
EXPERT_ID, benzersiz bir sihirli sayıdır
position_size bir tamsayıdır, örneğin 3
initial_stop benim stoploss'um, yani (yukarıdaki örnekte olduğu gibi) Teklif - risk.
İlk gönderide işlem yapılması durumunda risk (MODE_STOPLEVEL * Puan) değerinden daha büyük bir değerdir. Risk şuydu: 1.35
düşünceleriniz için teşekkürler.
Raptor, yukarıdaki ticaretin yayılmasını bilmiyorum. Kod içerisine log çıktısı ekledim, bir dahaki sefere hata oluştuğunda size yayılmayı söyleyebileceğim.
Ama bana söyler misin, yayılma neden önemli? Stoploss belirlenirken mesafeyi ne şekilde dikkate almam gerekiyor?
Yazdırmayı gelecek için günlüğe eklediğiniz için aferin :-)
Spread'in nerelerde dikkate alınıp, alınmaması gerektiği konusunda her zaman uzun uzun düşünmek zorundayım. . Söz konusu olduğunda zihinsel bir engelim var gibi görünüyor. . . ama sanırım bu doğru.
Bir Satın Alma için önemli olmamalı, Sor'da Satın Al, SL Bid'de gerçekleşecek, bu nedenle Fark zaten OpenPrice'ınıza dahil edilmiştir. Bir Sat için bu farklı bir konudur. . Bid'de satarsınız ve SL'niz Satış fiyatından alınır. . . Ask fiyatı nerede? iyi o zaman yayılmasına bağlıdır. . . Bunun doğru olduğunu düşünüyorum, lütfen bir düşünün ve mantıklı olup olmadığına bakın. . . Yanlışım varsa düzeltilirse sevinirim. . . :-)
int ticket = OrderSend ( Symbol (), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL , EXPERT_ID, 0 , Green );EA'lar 4/5 basamaklı brokerler, TP, SL ve VE kayması için ayarlama yapmalıdır. ECN brokerlerinde açmalı ve SONRA durdurmalısınız.
//++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.0015 0.00150 int Digits .pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int init(){ if ( Digits % 2 == 1 ){ // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 pips2dbl = Point * 10 ; pips2points = 10 ; Digits .pips = 1 ; } else { pips2dbl = Point ; pips2points = 1 ; Digits .pips = 0 ; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- These are adjusted for 5 digit brokers. /* On ECN brokers you must open first and THEN set stops int ticket = OrderSend(...) if (ticket < 0) Alert("OrderSend failed: ", GetLastError()); else if (!OrderSelect(ticket, SELECT_BY_POS)) Alert("OrderSelect failed: ", GetLastError()); else if (!OrderModify(OrderTicket()...) Alert("OrderModify failed: ", GetLastError()); */
geçici bir sorun olabilir. büyük/küçük harfe duyarlı olduğunu, bu nedenle oranların yenilenmesinin sorunu çözebileceğini söyledi.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Forumda birçok kişinin bu hatayla mücadele ettiğini gördüm.
Diğer konuları anladığım gibi, hata neden olabilir
a: mevcut fiyata çok yakın bir stoploss değeri ayarlamak
b: 0'dan sonra yanlış sayıda basamak
Bir ile ilgili:
Anladığım kadarıyla. MarketInfo(Symbol(), MODE_STOPLEVEL)) bana stoploss'un sahip olması gereken minimum mesafeyi vermelidir.
İşte başarısız bir ticaret örneği:
Marka Bilgisi:
Tarih: 2011/9/15 16:31
Sembol: #ESU1
Durma Seviyesi: 75.00000000
Puan: 0.01000000
Kene Boyutu: 0.25000000
Onay Değeri: 12.5000000
Rakamlar: 2.000000000
Bu nedenle minimum mesafe durma seviyesi * nokta olmalıdır, değil mi? yani 0.75
İşte başarısız siparişim:
2011.09.15 16:32:07 '393930': satış emri 18.00 #ESU1 1201.00 sl'de açılıyor: 1202.35 tp: 0.00 başarısız [Geçersiz S/L veya T/P]
Hata: 130 / geçersiz duraklar
stoploss açılışa 1,35 uzaklıkta. Bu yüzden iyi olmalı. (b) rakamları da eşleşir.
Peki neden bu hatayı alıyorum?
Ayrıca, bu hatayı yeniden oluşturmak zordur. Bazen görünür. Bazen olmuyor.
Bazen birbiri ardına birkaç kez görünür.
Herhangi bir fikir?
Şimdiden teşekkürler!
şinobi