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
Yukarıda yapıştırdığım gibi, OrderTicket()'in ne olduğuyla ilgisi olmayan siparişin yarısını alırsam, HERHANGİ bir açık "OP_BUY" tekrar tekrar çağrılacak mı?
Kodu yazmanın bir yoluna ihtiyacım var, böylece "in start ()" içinde ve yukarıdaki kodda, zaten bir yarıyı kapattıktan SONRA her seferinde "OP_BUY" çağrısı yapmaya devam etmeyecek mi?
Üzgünüm, ama bunun bana nasıl yardımcı olacağını anlamıyorum. For döngüsünde ve çağrılan boşlukta ne olduğu önemli değil. Kesinlikle "int start()" içinde ilk aradığım şeyle ilgili mi?
Yukarıda yapıştırdığım gibi, OrderTicket()'in ne olduğuyla ilgisi olmayan siparişin yarısını alırsam, HERHANGİ bir açık "OP_BUY" tekrar tekrar çağrılacak mı?
Kodu yazmanın bir yoluna ihtiyacım var, böylece "in start ()" içinde ve yukarıdaki kodda, zaten bir yarıyı kapattıktan SONRA her seferinde "OP_BUY" çağrısı yapmaya devam etmeyecek mi?
Çağrılan boşluk sadece start() içinden çağrılan bir fonksiyondur . . . bu, kodun doğrudan start() içinde olmasıyla aynıdır.
sözde kod:
OP_BUY'ları ara
bulunursa - TP BE'de mi?
TP BE'de değilse ve Teklif>= ilk hedef TP'yi BE'ye taşıyın ve siparişin yarısını kapatın
TP BE'deyse hiçbir şey yapmayın
EVET!!! RaptorUK'a teşekkürler!
Üzgünüm, sandığın kadar aptal değilim ;) - Sadece bazen bir şeylerde yeniyken bazı şeylerin bana hafifçe tekrar edilmesi gerekir...
Herkesin bana bunu sayfalar önce söylediğini fark ettim - anlayamadığım veya anlamadığım için özür dilerim!
SAĞ! Sonunda yarı kapanmayı başardık, başabaşa geçtik ve yarıların sürekli kapanmasını aynı fiyata durdurduk :D! Yani hemen hemen mükemmel!
Şimdi yapacağım tek şey, esasen bunu diğer çıkışlarım için kopyalayıp yapıştırmak ve birkaç kuralı ve saman prestoyu değiştirmek! Bobs amcan = sıralandı :)
Başkalarının isterlerse kullanmasını adil hale getirmek için hepsini burada yayınlayacağım - Sonuçta, diğerlerinden çok fazla sabır sadece kodlamama değil, aynı zamanda anlamama da izin verdi :)
Oh ve eğer fiyat 1:1'lik ilk hedefe ulaşmazsa ne yapılması önerilir AMA stoploss girişten DAHA BÜYÜK...? O zaman bunun etrafında nasıl bir kural oluştururum ....
başa baş için ne zaman değiştirirsiniz?
eğer hedefe ulaşılmazsa, ticaret OrderStopLoss()'ta kapatılacaktır.
başa baş için ne zaman değiştirirsiniz?
eğer hedefe ulaşılmazsa, ticaret OrderStopLoss()'ta kapatılacaktır.
OrderClose() kullanarak yarısını kapatıyorum ve bu doğruysa, stoploss'u başabaş noktasına taşımak için başabaş boşluğunu çağırıyorum? Bu şekilde, lotlardaki açık pozisyonun geri kalanı sürekli olarak kapatılmayacaktır, çünkü pozisyon başabaşa taşınmışsa, o zaman o pozisyonun sabit al kar fiyatına ulaşana kadar o pozisyonun daha fazla kapanmayacağını yazdım. 1:2.
Bununla birlikte, bazı işlemler, yarı kapanışı tetiklemeden, işlem ilk hedefe ulaşmadan ÖNCE bile girişe eşit veya kırılmanın ötesine gidecektir...
Ayrıca, bazıları çıkışın yarısını takas eder ve sonra mükemmel bir şekilde başa çıkmak için harekete geçer.... üzerinde çalışması gereken bazı işlemler, hiçbir şey yapmıyor mu? Bu, zayıf verilerden ve strateji test cihazıyla ilgili bir kusurdan olabilir mi, yoksa kodumda bir tutarsızlık mı var?
Oh ve hala OrderModify 1 alıyorum - çok sinir bozucu...
Parçayı kapattıktan sonra SL'yi başabaş olacak şekilde değiştirmek için siparişi nasıl belirliyorsunuz? Orijinal bilet numarasını kullanamayacağınızı biliyorsunuz değil mi? Bir siparişi kapattığınızda, orijinal bilet numarası kapatılır. Kalan kısma yeni bir bilet numarası verilir. Bunu tanımlamanın bir yolu, kapatmadan önce OrderOpenTime()'ı almaktır. Bir siparişi kısmen kapattıktan sonra kalan kısım yeni bir bilet numarası alacak, ancak OrderOpenTime() öncekiyle aynı olacaktır.
Bu OrderOpenTime()'ı, onu tanımlamak ve tekrar tekrar kısmen kapanmasını önlemek için de kullanabilirsiniz.
Alternatif olarak, kapatmadan önce değiştirebilirsiniz. Siparişinizin kalan kısmı, değiştirilmiş SL veya TP'yi koruyacaktır.
İşte bir test. 0.09'da açıldı, 0.07'de kapandı, 0.02 kaldı
Bilet numarasının nasıl değiştiğine, ancak açık saatin aynı kaldığına dikkat edin:
23:42:48 2013.08.01 11:28 SDCMegaTrend EURUSD,M1: açık #14 1.3240 sl'de 0.09 EURUSD satın al: 1.3037 tp: 1.3737 tamam
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 14'ü kapat 0.07 EURUSD'yi 1.3240 sl'den: 1.3037 tp: 1.3737, 1.3253 fiyatından
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Uyarı: Bilet 14 Parça kapanmadan önce OrderOpenTime: 1375356521
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Uyarı: Bilet 15 SiparişAçılma Süresi: 1375356521
23:42:48 2013.08.01 12:45 SDCMegaTrend EURUSD,M1: #15'i kapat 0.02 EURUSD'yi 1.3240 sl: 1.3037 tp: 1.3737, 1.3242 fiyatından
Parçayı kapattıktan sonra SL'yi başabaş olacak şekilde değiştirmek için siparişi nasıl belirliyorsunuz? Orijinal bilet numarasını kullanamayacağınızı biliyorsunuz değil mi? Bir siparişi kapattığınızda, orijinal bilet numarası kapatılır. Kalan kısma yeni bir bilet numarası verilir. Bunu tanımlamanın bir yolu, kapatmadan önce OrderOpenTime()'ı almaktır. Bir siparişi kısmen kapattıktan sonra kalan kısım yeni bir bilet numarası alacak, ancak OrderOpenTime() öncekiyle aynı olacaktır.
Bu OrderOpenTime()'ı, onu tanımlamak ve tekrar tekrar kısmen kapanmasını önlemek için de kullanabilirsiniz.
Alternatif olarak, kapatmadan önce değiştirebilirsiniz. Siparişinizin kalan kısmı, değiştirilmiş SL veya TP'yi koruyacaktır.
İşte bir test. 0.09'da açıldı, 0.07'de kapandı, 0.02 kaldı
Bilet numarasının nasıl değiştiğine, ancak açık saatin aynı kaldığına dikkat edin:
23:42:48 2013.08.01 11:28 SDCMegaTrend EURUSD,M1: açık #14 0.09 EURUSD'yi 1.3240 sl'de: 1.3037 tp: 1.3737 tamam
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 14'ü kapat 0.07 EURUSD'yi 1.3240 sl: 1.3037 tp: 1.3737, 1.3253 fiyatından
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Uyarı: Bilet 14 Parça kapanmadan önce OrderOpenTime: 1375356521
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Uyarı: Bilet 15 SiparişAçma Süresi: 1375356521
23:42:48 2013.08.01 12:45 SDCMegaTrend EURUSD,M1: #15'i kapat 0.02 EURUSD'yi 1.3240 sl: 1.3037 tp: 1.3737, 1.3242 fiyatından
Ah - Harika, teşekkürler. OrderOpenTime()'ı tamamen unuttum - bunu yapmanın harika bir yolu! Bahşiş için teşekkürler - şimdi bunu deneyeceğim.
Bir önceki gönderiyi takip ederek, şimdi çok daha sorunsuz çalışmasını sağladım - OrderModify hatası 1 nadiren şimdi ortaya çıkıyor. Şimdi daha sorunsuz çalışıyor gibi görünüyor.
Tek sorun, zararı durdurmanın OrderEntry() - değerinden daha fazla olduğu bir ticaretim varsa (uzun bir süre hakkında konuştuğumuzu varsayarsak), o zaman emrin yarısını kapatmayacak çünkü ana kapanış kriterleri yarısı karşılanmadı.
Buradaki tek kod, lotların yarısının kapanmasını ve yarıların sürekli kapanmasının aynı fiyata durdurulmasını başlatan şeydir - ("in start()" daki tek şey bu değil, sadece görmeyi kolaylaştırdı) :
Durdurma IS >= OrderOpen() herhangi bir yeri kaçırmadan, her işlemin orada 1:1'de yarım lotta kapanmasını sağlamak için daha iyi kontrole sahip olmak için OrderOpenTime() işlevini nasıl dahil edebilirim?
Her siparişin kısmen kapalı olduğundan emin olmanın birkaç yolu vardır, bunu yapmanın en sevdiğim yolu, kısmen kapattığımda TP'yi bir pip değiştirmektir.
Örneğin, 100 piplik bir TP'ye ihtiyacım var, bu yüzden siparişi 99 piplik bir TP ile açıyorum. Kâr almaya ulaşılmadan önce siparişimin 40 pipte kısmen kapatılacağını biliyorum. Bu olduğunda, TP'yi 100 pip olarak değiştiririm. Bu nedenle karı >= 40 pip ve TP < 100 pip olan herhangi bir siparişin kısmen kapatılması gerekir. TP > 99 pip olan herhangi bir sipariş zaten kısmen kapatılmıştır. Bu şekilde yaparsanız SL'nin ne olduğu fark etmez. Üzerinde hesaplamalar yapmadan önce tüm sipariş fiyatlarını iki katına çıkardığınızdan emin olun.