![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Döngü, en tehlikeli programlama tekniklerinden biridir. Analiz edilmesi neredeyse imkansız olan garip, nadiren tezahür eden hatalarla doludur.
Döngü yapmak yerine tam tersini yapmanız, kullanıcı iş parçacığını olabildiğince çabuk tamamlamaya çalışmanız gerekir. Gerçekten "nabzı tutmak" istiyorsanız - OnTradeTransaction'ı MT5'te analiz edin. MT4 genellikle bu tür tuhaflıklar için kötüdür, çünkü dedikleri gibi basitlik hırsızlıktan daha kötüdür.
Belirli bir uygulama ile ilgili değil, herhangi bir duraklamadan sonra TS'yi sallama ilkesiyle ilgiliydi. Eh, korkunç bir döngünün olduğu yer belli değil. Net olmamakla birlikte, kullanıcı akışını bitirmek için ne acele edilmeli.
Eh, korkunç bir döngünün olduğu yer belli değil.
OnTick'ten OnTick'i çağırma - özyineleme yoluyla önemsiz olmayan döngü:
Net olmamakla birlikte, kullanıcı akışını bitirmek için ne acele edilmeli.
Bir olay modeli ile çalışıyoruz. Bu nedenle, bir sonraki için bekleme moduna geçmek için mevcut olayı olabildiğince hızlı işlemek gerekir. Akışta geçirilen zaman bir kara deliktir. Akışta ne kadar çok zaman harcarsak, birlikte çalıştığımız ticaret ortamı o kadar modası geçmiş olur.
OnTick'ten OnTick'i çağırma - özyineleme yoluyla önemsiz olmayan döngü:
Görünüşe göre, beni korkutan tek şey bu.
Bir olay modeli ile çalışıyoruz. Bu nedenle, bir sonraki için bekleme moduna geçmek için mevcut olayı olabildiğince hızlı işlemek gerekir. Akışta geçirilen zaman bir kara deliktir. Akışta ne kadar çok zaman harcarsak, birlikte çalıştığımız ticaret ortamı o kadar eskimiş olur .
ps Genel olarak, kategorik olarak birbirimizi anlamıyoruz. Aramızda bir diyalog olacağını sanmıyorum.
:
Kodunuzda, yalnızca varlığı TS'yi sıfırdan sallamanın nedeni olan bir duraklama gördünüz mü? sende yok!
Kodunuzda, yalnızca varlığı TS'yi sıfırdan sallamanın nedeni olan bir duraklama gördünüz mü? sende yok!
Dolayısıyla bu kod, mevcut iş parçacığının neden mümkün olduğunca çabuk tamamlanması gerektiğinin bir örneğidir. OnTick'te ticaret ortamını sorgulamaya bile çalışamazsınız:
İki değişkenin karşılaştırılması noktasında olduğumuz için onları karşılaştıramayız çünkü ortam değişmeye devam ediyor. total_1 ve total_2 içindeki değerler ya birbirine eşit değil ya da her ikisi de güncel değil ya da var olmayan sayıda sipariş içeriyor ya da doğru değerleri içeriyor. OnTick'te değişen ticaret ortamıyla uğraşmak mantıklı değildir, bunun yerine, for döngüsünden hemen sonra OnTick'ten çıkmanız ve ticaret ortamında bir değişikliği gösteren yeni olayları beklemeniz yeterlidir.
Dolayısıyla bu kod, mevcut iş parçacığının neden mümkün olduğunca çabuk tamamlanması gerektiğinin bir örneğidir. OnTick'te ticaret ortamını sorgulamaya bile çalışamazsınız:
İki değişkenin karşılaştırılması noktasında olduğumuz için onları karşılaştıramayız çünkü ortam değişmeye devam ediyor. total_1 ve total_2 içindeki değerler ya birbirine eşit değil ya da her ikisi de güncel değil ya da var olmayansayıda sipariş içeriyor ya da doğru değerleri içeriyor. OnTick'te değişen ticaret ortamıyla uğraşmak mantıklı değildir, bunun yerine, for döngüsünden hemen sonra OnTick'ten çıkmanız ve ticaret ortamında bir değişikliği gösteren yeni olayları beklemeniz yeterlidir.
Peki neden duraklama?
Bir kez daha, herhangi bir duraklamadan sonra (fişler veya senkronize ticaret emirleri), TS sallanmalıdır - ticaret mantığı sıfırdan başlar. Buna göre asenkron alım satım emirleri kullanılırsa söz konusu duraklamalar gerçekleşmez ve yeni bir olay beklentisi ile Event fonksiyonundan çıkılır. Eşzamansız işlem yoksa, tüm ticaret mantığı döngülü bir komut dosyasına bile yerleştirilebilir.
Peki neden duraklama?
Bir kez daha, herhangi bir duraklamadan sonra (fişler veya senkronize ticaret emirleri), TS sallanmalıdır - ticaret mantığı sıfırdan başlar. Buna göre asenkron alım satım emirleri kullanılırsa söz konusu duraklamalar gerçekleşmez ve yeni bir olay beklentisi ile Event fonksiyonundan çıkılır. Eşzamansız işlem yoksa, tüm ticaret mantığı döngülü bir komut dosyasına bile yerleştirilebilir.
Ben sana Foma'dan bahsediyorum, sen bana Yeryoma'dan. Diyalogumuzu bitirelim. Döngüsel komut dosyalarınızı oluşturmaya devam edin. Evet gerçekten işe yarıyor ama bunu bir çalışma yöntemi olarak önermek kesinlikle imkansız.
Deneyimli kişilerin MT4'teki böyle bir durum hakkındaki görüşleri ilginç, bunu nasıl çözerler?
EA'nın Görev Tanımı, beklemede tutmak ve her bir işarette mevcut fiyattan belirli bir sabit mesafede açık pozisyonları almaktır.
Aracının değişikliklerinin, fiyat işaretleri arasındaki ortalama zaman aralığından biraz daha uzun sürmesine izin verin.
Böylece ters çevrimde (azalan SELECT_BY_POS indeksi yönünde) koşuyoruz ve buna karşılık gelen OrderModify'ı yapıyoruz.
Bu nedenle, OnTick'e doldurulan bu döngü sırasında aşağıdakiler olabilir:
Nasıl olunur?
Soru dolaylı olarak yukarıdaki tartışma ile ilgilidir, ancak bu onun devamı için değildir (konu kapanmıştır). MT4Orders for MT5'te bazı belirgin olmayan nüansları çözmem gerekiyor. Bu nedenle, MT4'te iyi olanlardan açıklanan durumlar hakkında fikir almak faydalı olacaktır. Eh, sadece ben değilim, muhtemelen faydalı olacaktır.
Sorunu OnTimer aracılığıyla çözün - bu muhtemelen hemen sunulacaktır. Ama onsuz gidelim - sadece OnTick.
Deneyimli kişilerin MT4'teki böyle bir durum hakkındaki görüşleri ilginç, bunu nasıl çözerler?
EA'nın Görev Tanımı, beklemede tutmak ve her bir işarette mevcut fiyattan belirli bir sabit mesafede açık pozisyonları almaktır.
Aracının değişikliklerinin, fiyat işaretleri arasındaki ortalama zaman aralığından biraz daha uzun sürmesine izin verin.
Böylece ters çevrimde (azalan SELECT_BY_POS indeksi yönünde) koşuyoruz ve buna karşılık gelen OrderModify'ı yapıyoruz.
Bu nedenle, OnTick'e doldurulan bu döngü sırasında aşağıdakiler olabilir:
Nasıl olunur?
Soru dolaylı olarak yukarıdaki tartışma ile ilgilidir, ancak bu onun devamı için değildir (konu kapanmıştır). MT4Orders for MT5'te bazı belirgin olmayan nüansları çözmem gerekiyor. Bu nedenle, MT4'te iyi olanlardan açıklanan durumlar hakkında fikir almak faydalı olacaktır. Eh, sadece ben değilim, muhtemelen faydalı olacaktır.
Sorunu OnTimer aracılığıyla çözmek için - bu muhtemelen hemen sunulacaktır. Ama onsuz gidelim - sadece OnTick.
İlk olarak, durum standart dışı olarak sunulur ve eğer varsa, çok az kişi bu durumu zaten çözmüştür.
Tamamen teorik olarak:
OrderModify için bir ters çevrim düzenlemek gerekli değildir, bu yüzden doğrudan olmasına izin verin
Ve sonra sipariş listesini değiştirmeyi kontrol edin
Sayıda bir değişiklik olursa, yeni bir sipariş sayısıyla döngüyü yeniden başlatacağız.
Ve başka bir soru:
fxsaber :
Eklenirlerse, onların veya diğerlerinin atlanacağı açıktır. Ya sadece silindilerse? Sipariş listesinin sınırlarının ötesine geçemiyor musunuz?