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
Stoploss'u düzeltmenin en iyi yolu, yayılma hakkında düzgün düşünmektir. Yayılma, Talep ve Teklif arasındaki mesafedir. Böylece Bid - SL kullanarak bir satın alma emrine stoploss eklediğinizde, farkı otomatik olarak dahil eder ve bunun için kodlama yapmanıza gerek kalmaz ve yayılmayı etkili bir şekilde tamamen yok sayabilirsiniz. Satış işlemi için Ask + SL kullanarak aynı etkiye sahiptir. Ancak, DİKKAT --- ticaret hacminin düşük olduğu zamanlarda spread büyür ve beklediğiniz yerden çok uzakta bir SL ile sonuçlanabilir --- bu nedenle, eklemeyi önlemek için bazı kodlar eklemek isteyebilirsiniz. SL'nin belirli bir Yayılma boyutunun üzerinde.
Şimdi, Yayılma sorunu, 130'ların hatalarının bir sonraki ana nedeni, EA'nız hala yürütülürken fiyatların değişmiş olmasıdır. Bunun nedeni, yürütülmesi uzun zaman alan bir EA olabilir veya sunucu, EA yürütmenizi geciktiren işlemlere hizmet vermekle çok meşgul olabilir. Sonuç olarak, bir onay işareti EA'nızın çalışmaya başlamasına neden oldu, ancak yürütme bitmeden başka bir onay işareti geldi ve fiyatlar artık geçersiz.
Her iki durumda da fiyatları RefreshRates kullanarak yenilemeniz gerekir: while (RefrshRates() == 1) Sleep(5); ------ veya ne isterseniz bekleme süresi olarak.
Her iki durumda da fiyatları RefreshRates kullanarak yenilemeniz gerekir: while (RefrshRates() == 1) Sleep(5); ------ veya ne isterseniz bekleme süresi olarak.
AFAIK RefreshRates() hatası 130 ile ilgisi yok
RaptorUK noktası alındı ve MODE_ASK vb. kullanmanın RefreshRates() gerekliliğini ortadan kaldıracağına katılıyorum, ancak shinobi'nin kod örneğinde olduğu gibi varsaydım ....
Örneğin bir sipariş gönderiyorum:
int bilet = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);
önceden tanımlanmış ASK değişkeni kullanılıyor ve bu nedenle talep/teklif ve yayılma değeri 130 hatası vererek değişmiş olabilir. Böyle bir durumda, OrderSend'den hemen önce RefreshRates() kullanılabilir
RaptorUK noktası alındı ve MODE_ASK vb. kullanmanın RefreshRates() gerekliliğini ortadan kaldıracağına katılıyorum, ancak shinobi'nin kod örneğinde olduğu gibi varsaydım ....
Örneğin bir sipariş gönderiyorum:
int bilet = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);
önceden tanımlanmış ASK değişkeni kullanılıyor ve bu nedenle talep/teklif ve yayılma değeri 130 hatası vererek değişmiş olabilir. Böyle bir durumda, OrderSend'den hemen önce RefreshRates() kullanılabilir
Şu anda biraz meşgulüm ama fırsat bulduğumda tüm önerilerinizi deneyeceğim ve daha sonra aynı sorunla bu konuya rastlayabilecek herkes için bir özet yazısı yazacağım.
Teşekkürler ve kendine iyi bak!
şinobi
int bilet = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);
her şeyi söylemez. Bid'i kullanarak initial_stop'u nasıl hesaplıyorsunuz?
SLIPPAGE'i nasıl hesaplıyorsunuz - 4/5 haneli brokerler için ayarlama mı yapıyorsunuz?
Bir süre ara vermek zorunda kaldım (yeni bir şehre taşınma, yeni iş).
Ama şimdi bu konuyu ele almak ve nihayet bu lanetli #130 stoploss hatası için bir çözüm bulmak istiyorum.
Tüm tavsiyeleriniz için minnettarım ve hepsini birleştirmeye çalıştım:
1: Yaymak.
2: Değişen Piyasa Oranları
3: 4-5 Haneli-Komisyoncu
Bu yüzden tüm önerileri dahil ettim, ancak hata hala devam ediyor. Söyleyebileceğim kadarıyla, eskisi kadar sık oluyor, bu yüzden bunun başka bir nedeni olmalı.
İşte son bir günlük:
onay değeri: 12.5000000
posta boyutu: 37.00000000
Talep/Teklif 1262.00000000/1261.75000000
durma kaybı:12.59610000
konum_boyutu: 37
Yayılma 0.25000000
Hata uzun pozisyon alamazdı. Hata: #130 geçersiz durak
Yukarıdaki OrderSend kod satırı, günlüğe kaydedilen değerlerle uzun bir pozisyon denemek ve almak için kullanıldı.
Başka fikrin var mı, nedeni ne olabilir?
Teşekkürler!
şinobi
Bu bir ECN Aracısı mı?
ECN brokerlerinde açmalı ve SONRA durdurmalısınız.
geçersiz basamak sayısının olası nedenini ortadan kaldırmak için stoploss'u WHRoeders koduna göre yuvarladım:
Sadece yap
harici çift StopLoss = 50;
harici çift TakeProfit = 50;
sonra satın almak için:
double SL = Teklif - Kaybı Durdur * Puan ;
double TP = Teklif + Kâr Al * Puan ;
int Ticket = OrderSend ( Simge () , 0 , 1 , Ask , 2 , SL , TP , "" , 12345 ) ;
if( Bilet<0) print("error="GetLastError());
satış için:
double SL = Ask + StopLoss * Puan ;
double TP = Ask - TakeProfit * Puan ;
int Ticket = OrderSend ( Symbol () , 1 , 1 , Bid , 2 , SL , TP , "" , 12345 ) ;
if( Bilet<0) print("error="GetLastError());
sonra işe yaramazsa günlük dosyasını gönderin.
SDC:
Kodunuzu şöyle denedim:
Tek fark, Raptor ve BigAI tarafından bahsedilen RefreshRates sorununu önlemek için Point, Ask ve Bid'i MarketInfo ile değiştirmem.
Bu basit örnekte sorun devam ediyor. hala anlıyorum
#ESZ1,M5: Açılış Pozisyonu
#ESZ1,M5: işaret değeri: 12.5000000
#ESZ1,M5: konum boyutu: 10000000000
#ESZ1,M5: Sor/Teklif 1244.50000000/1244.25000000
#ESZ1,M5: Yayılma 0.25000000
#ESZ1,M5: SL: 1244.00000000
#ESZ1,M5: TP: 1245.00000000
#ESZ1,M5: hata=130
yırtıcı hayvan:
Şu anda test için bir demo hesabıyla UWC-Trader kullanıyorum.
Daha önce de belirtildiği gibi, Vadeli İşlemler ticareti yapıyorum. Örneğin ESZ1 ve FDXZ1.
WHRoeder:
Üzgünüm ben de yuvarlamıyorum. "yuvarlak"ı "4/5-Digit Brokers için ayarla" ile değiştirin. IE Az önce kodunuzu uyguladım.
Ayrıca OrderSend'i önceki cevabımda kullandığım gibi yayınladım. Ve ilgili tüm değişkenlerin değerleri. Kodun başka hangi bölümünün ilginç olacağından emin değilim.
SDC tarafından önerilen mini örneğin gösterdiği gibi, hata bu basit koda bölünebilir. Yani daha temel olmalı.
Metal ticareti yapmıyorum, bu yüzden yuvarlama önemli olmamalı.
Bir sonraki deneyeceğim:
açma (stoploss yok) ve daha sonra değiştirme (stoploss ayarlama).
düşünceleriniz için tekrar teşekkürler
şinobi