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
Temelde belirli bir zamanda bekleyen iki emir belirledim, özellikle 23:00 GMT+2 sanırım. Bekleyen emirlerden biri satış stop, diğeri alış stop, her iki emir de açıktan 23:00 mumundan eşit uzaklıkta, bu durumda 14 pip. Her ikisi de 28 piplik bir TakeProfit'e (bu durumda) ve 55 piplik bir StopLoss'a sahiptir.
Şimdi her iki emir de yerine getirildiğinde (esas olarak emirler sona ermeden 23:00 mumunda açık fiyattan 14 pip yukarı ve aşağı gidiyor), her iki emrin de kâr almalarının örneğin 20 pip artmasını istiyorum. . Yani bu durumda yeni kar almaları 58 pip. Durdurma kaybı ancak boyunca aynı tutulmalıdır. Esasen yapmaya çalıştığım şey bir tür riskten korunma işi.
Eğer iki işlem açıksa, fiyatın bir yönde oldukça fazla gitmesi muhtemeldir, eğer her iki işlemin de kârı artarsa, herhangi bir zararı iptal etmek için yeterlidir. Herhangi bir kar elde etmek için, yalnızca bir işlem açılır ve kâr al'a ulaşır veya her iki işlem de tek bir yöne gitmeden açılır ve kâr al'a ulaşır.
Umarım bu açıktır, değilse daha net olması gereken bir resim sunacağım.
Direkt bir önceki yazınıza atıfta bulundum
İşte tüm EA için gözden geçirilmiş kod:
Umarım bu açıktır, değilse daha net olması gereken bir resim sunacağım.
Açık, teşekkürler.
Yani bu siparişleri sadece bir kez değiştirmek istiyorsunuz. . . o zaman cevap basit. 23:00 barını kontrol etmeniz ve siparişlerin açılması gereken TP'leri belirlemeniz gerekir. . . emirler aynı TP'deyse değiştirilmeleri gerekir, eğer aynı TP'de değilseler zaten değiştirilmişlerdir ve tekrar değiştirilmeleri gerekmez. . . basit.
Açık, teşekkürler.
Yani bu siparişleri bir kez değiştirmek istiyorsunuz. . . o zaman cevap basit. 23:00 barını kontrol etmeniz ve siparişlerin açılması gereken TP'leri belirlemeniz gerekir. . . emirler aynı TP'deyse değiştirilmeleri gerekir, eğer aynı TP'de değilseler zaten değiştirilmişlerdir ve tekrar değiştirilmeleri gerekmez. . . basit.
Bu nedenle, esasen, iki işlem varsa (aynı sembol ve sihirli sayı) EA, daha önce mevcut olan bekleyen emirlere (şimdi gerçekleştirilir) kıyasla açık işlemlerin karını alma durumunu kontrol etmelidir ve sonra bunlar aynıysa, değişti ve bir kez döngüye girdikten sonra tekrar kontrol edecek ve aynı olmadıklarını görecek ve bu nedenle işlemleri daha fazla değiştirmeyecek mi?
1. Değişiklik ve kontrol sadece iki işlem açıkken yapılmalıdır, bunu nasıl yapabilirim? Zaten sahip olduğum koda eklemeli miyim yoksa yeniden başlamalı mıyım?
2. Bu nedenle, esasen, iki işlem varsa (aynı sembol ve sihirli sayı) EA, önceden mevcut bekleyen emirlerle (şimdi yürütülmekte olan) karşılaştırıldığında açık işlemlerin karını alma durumunu kontrol etmelidir ve sonra bunlar aynıysa, değiştirilmeli ve bir kez döngüye girdiğinde tekrar kontrol edecek ve aynı olmadıklarını görecek ve bu nedenle işlemleri daha fazla değiştirmeyecek mi?
1. Açık emirler arasında dolaşın, sembolü, sihirli sayıyı kontrol edin, bekleyen emir tipi olmayan bir eşleşmeniz olduğunda bir sayacı artırın. . . Siparişleri kontrol ettiğinizde 2 saydıysanız, doğru sembol ve sihirli sayı için 2 açık siparişiniz olur. . . . yani şimdi onları değiştirebilirsiniz. . . bkz. 2.
2. Hayır, etkinleştirildiyse ve artık beklemede değilse bekleyen siparişlerin TP'sini göremezsiniz. EA, 23:00 çubuğunu kontrol etmeli ve orijinal TP'lerin ne olacağını hesaplamalıdır. . . ardından bunları 2 açık siparişin TP'leri ile karşılaştırın. . . . bu bilgilerden, değiştirme veya değiştirmeme kararı verilebilir.
1. Açık emirler arasında dolaşın, sembolü, sihirli sayıyı kontrol edin, bekleyen emir tipi olmayan bir eşleşmeniz olduğunda bir sayacı artırın. . . Siparişleri kontrol ettiğinizde 2 saydıysanız, doğru sembol ve sihirli sayı için 2 açık siparişiniz olur. . . . yani şimdi onları değiştirebilirsiniz. . . bkz. 2.
2. Hayır, etkinleştirildiyse ve artık beklemede değilse bekleyen siparişlerin TP'sini göremezsiniz. EA, 23:00 çubuğunu kontrol etmeli ve orijinal TP'lerin ne olacağını hesaplamalıdır. . . ardından bunları 2 açık siparişin TP'leri ile karşılaştırın. . . . bu bilgilerden, değiştirme veya değiştirmeme kararı verilebilir.
Ah anlıyorum, sanırım başından beri yapmaya çalıştığım şey bu. Şimdiye kadar siparişlerden biri değiştirildi (özellikle benim testimde 2. sipariş olan satın alma) ancak değiştirilmeye devam ediyor, tekrar etmesini önlemek için 'break' kullanıyor muyum? Ayrıca, açık emirleri sadece ve sadece ikisi açık olduğunda nasıl sayar ve değiştiririm? Bunun için OrdersTotal() kullanmaya çalışıyorum ama işe yaramıyor, her sipariş için iki ayrı kod parçası yapmam gerektiğini düşünmüyorum değil mi?
Yalnızca çift numaralı açık siparişler değiştiriliyor ve dediğim gibi defalarca değiştiriliyorlar, OrderSelect() için çeşitli kombinasyonlar denedim ama hala çözemiyorum, dediğim gibi MQL'de tam bir çaylakım ve Bu EA neredeyse bitti, bu yüzden sadece bitirmek istiyorum. Bunu okudum https://book.mql4.com/trading/ordermodify bunun benim durumumla bir ilgisi olabilir mi? Zararı durdurmak için ama esasen kar almak için buna ihtiyacım var.
Burada neyi yanlış yapıyorum?
TP'nin 23:00 mumuyla aynı olup olmadığını nasıl kontrol edebilirim? Açık emirler 2 tanesi oradayken değiştirildiği sürece aynı etkiyi elde edeceğine göre, bu şekilde gerekli olur mu? Yoksa bu sadece siparişin sürekli değiştirilmesini durdurmak için mi ve evet belgeleri kontrol ettim.
Teşekkürler,
madmax3
2. sıra değiştirilmeden önce iadeniz (0) sizi start()'tan çıkarıyor.
Yaptığınız tek şey, sıraya göre sıralamayı seçmek, doğru Sihirli numaraya sahip olup olmadığını kontrol etmek, doğru sembol olup olmadığını kontrol etmek ve OP_BUY olup olmadığını kontrol etmektir. . . . o zaman onu değiştirirsiniz, daha önce değiştirilip değiştirilmediğini nereden belirliyorsunuz?
EA, kesintiye uğramaktan kurtulabilmeniz gerekir. .. siparişleriniz verilirse ve MT4 çökerse, yeniden başlatıldığında kaldığı yerden devam edebilmesi gerekir.
Bu nedenle, Siparişin daha önce değiştirilip değiştirilmediğini veya değiştirilmesi gerekip gerekmediğini belirlemeniz gerekir. . . nasıl ?
" Belirli bir zamanda iki bekleyen emir belirledim, özellikle 23:00 GMT+2 sanırım. Bekleyen emirlerden biri satış stop, diğeri alış stop, her iki emir de açıktan eşit uzaklıkta. 23:00 mum, bu durumda 14 pip. Her ikisinin de TakeProfit 28 pip (bu durumda) ve StopLoss 55 pip var. "
23:00 mumunu referans alarak orijinal TP'nin nerede olduğunu hesaplayabilir, sırayı kontrol edebilir ve hala orijinal TP'ye ayarlanıp ayarlanmadığını görebilirsiniz, eğer öyleyse değiştirilebilir. . . değilse, zaten değiştirildi, bu yüzden tekrar değiştirmeyin.
Siparişin değiştirildiğini kaydetmenin başka yolları da vardır, bilet numarasını takip edin, değiştirildiğinde bilgileri bir dosyaya yazın, yeniden değiştirmek üzereyken dosyayı açın ve bilet numarasını kontrol edin, vb. . . . Orijinal TP'ye karşı kontrol etmenin çok daha basit olduğunu düşünüyorum.
Şimdiye kadar bu var,
Yukarıda yer alan dosya yazma kodu,
Bu hataları alıyorum ama
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Sürüm 2: FileOpen - çok fazla açık dosya
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Sürüm 2: FileWrite'ta geçersiz tanıtıcı -1
Ne oldu?
Neden iki seçenekten en zorunu seçtin?
Dosyaya yazmayı bitirdiğinizde, onu kapatmanız gerekir. . . zaten açıksa tekrar açmanıza gerek yok.
for döngünüz yanlış. . . son sipariş pozisyonu 0 değil 1
Neden iki seçenekten en zorunu seçtin?