MT4 için MQL5 kitaplıklarını başlatma temasının sürdürülmesi
#property strict // https://www.mql5.com/ru/docs/standardlibrary/graphics/cgraphic #include <Graphics\Graphic.mqh> // MQL5\Include\Graphics\Graphic.mqh void OnStart () { double Y[] = { 1 , 2 }; GraphPlot(Y); }
Genellikle test cihazında, hız kaydırıcısı 31'e ayarlanmışsa - bu, 32'ye ayarlanmışsa yavaştır - test süper hızla tamamlanmaya başlar.
Sayaçtan koda bir gecikme ekleyerek çıkıyorum:
input int gDelay = 10000 ; // Счетчик для задержки, off=0 void OnTick () { int delayCount = 0 ; while (delayCount < gDelay) ++delayCount; }
Girişteki gecikme, danışmanın hızına ve işlemcinin gücüne bağlı olarak ayarlanabilir.
Şimdi 32. hızda, ilginizi çeken anlara, bana uygun hızda ilerleyebilirsiniz.
Sadece MT4'ü değil, diğer platformlarla birlikte MT5'i de ilgilendiren aşağıdaki konuya değinilecektir. Ancak kolay algılanması için mantık MQL4'te yazılacaktır, yani bu başlıkta.
Çoğu zaman, siparişleri değiştirmenin / silmenin omurgası (herhangi bir et büyür) aşağıdaki mantığa iner.
// Самый распространенный костяк логики модификации ордеров for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) if ( OrderSelect (i, SELECT_BY_POS )) OrderModify ( OrderTicket (), Price, SL, TP, OrderExpiration ());
Ve şimdi yaklaşım nadir, ancak çok daha doğru
// Редкий, но правильный костяк модификации ордеров for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) if ( OrderSelect (i, SELECT_BY_POS )) if ( OrderModify ( OrderTicket (), Price, SL, TP, OrderExpiration ())) { i = OrdersTotal (); // Хотя бы так // А лучше так // OnTick(); break; // вместо строки выше лучше делать такой вызов (переполнения стека от рекурсивных вызовов быть не должно) }
Bir ticaret talebi gönderdikten sonra, ticaret ortamı değişir, bu nedenle ticaret sunucusunun yanıtından hemen sonra TS'nin tüm ticaret mantığını sıfırdan yürütmeniz önerilir.
Ve şimdi yaklaşım nadir, ama çok daha doğru
Bu varyant, herhangi bir hata durumunda, listedeki son sırayı değiştirmeye sabitlenir ve 1'den fazla siparişi olan Uzman Danışman, geri kalan her şeyi "gözden kaçırır".
Tarifim: tüm siparişlerimde dolaşın, her birini işleyin (gerekirse, piyasa bilgilerinin güncellemesini işlemeden önce), bir sonraki tıklamada - bir sonraki yaklaşım. Bazı durumlarda, bir sonraki yaklaşım (OnTick'i çağırır), içinde hatalar varsa, mevcut döngü sona erdikten hemen sonra yapılabilir.
Bu varyant, herhangi bir hata durumunda, listedeki son sırayı değiştirmeye sabitlenir ve 1'den fazla siparişi olan Uzman Danışman, geri kalan her şeyi "gözden kaçırır".
Bu koşul nedeniyle döngü olmayacak
if ( OrderModify ( OrderTicket (), Price, SL, TP, OrderExpiration ()))
Tarifim: tüm siparişlerimde dolaşın, her birini işleyin (gerekirse, piyasa bilgilerinin güncellemesini işlemeden önce), bir sonraki tıklamada - bir sonraki yaklaşım. Bazı durumlarda, bir sonraki yaklaşım (OnTick'i çağırır), içinde hatalar varsa, mevcut döngü sona erdikten hemen sonra yapılabilir.
Ardından, terminal günlüğünde daha fazla ticaret talebi hatası göreceksiniz.
Bu koşul nedeniyle döngü olmayacak
Evet, yanlış, !OrderModify olarak okuyun.
Değişiklik başarılı olursa, işlemi listenin başından itibaren tekrarlamak da imkansızdır, çünkü bu durumda, bir emir de değiştirilir (örneğin, fiyat tarafından yukarı çekilir) ve geri kalanı uzun süre gözetimsiz kalabilir.
Tarifim yayında.
Bunu anlamadım.
Değişiklik başarılı olursa, işlemi listenin başından itibaren tekrarlamak da imkansızdır, çünkü bu durumda, bir emir de değiştirilir (örneğin, fiyat tarafından yukarı çekilir) ve geri kalanı uzun süre gözetimsiz kalabilir.
Bu mantıkta bir şeyler başlangıçta yanlıştır. Burada bilinçli bir seçim yapmanız gerekir: bir gerçek sıraya veya birçok alakasız sıraya sahip olmak daha iyidir.
Tarifim yayında.
Bunu anlamadım.
OrderModify'ın 5 saniye çalışmasına izin verin. Yürütülmesi sırasında, ticaret sunucusunda birkaç kez kısmi bir limit emri uygulandı ve bir düzine anlaşmaya yol açtı.
Bu mantıkta bir şeyler başlangıçta yanlıştır. Burada bilinçli bir seçim yapmanız gerekir: bir gerçek sıraya veya birçok alakasız sıraya sahip olmak daha iyidir.
Bir sipariş aynı anda farklı seviyelerde olamaz. Veya her seviye için kendi danışmanınızı mı kuruyorsunuz? Stratejilerin büyük çoğunluğu için şüpheli bir karar.
Özel bir durum olarak, birkaç pozisyon (birkaç girişle trend tarafından edinilir) ve onlar için bir takip durağı. Tek bir ticaretin SL'sini çekmek mi yoksa her şeyi değiştirmek mi? Aynı keskin sonraki geri alma ile keskin bir harekette, yalnızca bir siparişi değiştirme seçeneği çok şey kaybeder (ve geri kalanı işe yaramaz, çünkü her yeni OnTick çağrısı listedeki ilk sırayı değiştirir).
OrderModify'ın 5 saniye çalışmasına izin verin. Yürütülmesi sırasında, ticaret sunucusunda birkaç kez kısmi bir limit emri uygulandı ve bir düzine anlaşmaya yol açtı.
İzin vermek. İşlenmiş (ve olması gereken) tüm siparişleri işleyeceğiz ve bir sonraki tıklamada veya ilk döngünün tamamlanmasından hemen sonra yenilerine geçeceğiz.
Aksi takdirde, her zaman son bir emrin son yürütülen kısmıyla çalışma riski vardır. Belki de en küçük parçası. Büyük bir arama emrini gözetimsiz bırakmak.
Bir sipariş aynı anda farklı seviyelerde olamaz. Veya her seviye için kendi danışmanınızı mı kuruyorsunuz? Stratejilerin büyük çoğunluğu için şüpheli bir karar.
Özel bir durum olarak, birkaç pozisyon (birkaç girişle trend tarafından edinilir) ve onlar için bir takip durağı. Tek bir ticaretin SL'sini çekmek mi yoksa her şeyi değiştirmek mi? Aynı keskin sonraki geri alma ile keskin bir harekette, yalnızca bir siparişi değiştirme seçeneği çok şey kaybeder (ve geri kalanı işe yaramaz, çünkü her yeni OnTick çağrısı listedeki ilk sırayı değiştirir).
OnTick'in neden yalnızca bir siparişi değiştireceğini anlamıyorum? Hepsi değiştirilecek.
İzin vermek. İşlenmiş (ve olması gereken) tüm siparişleri işleyeceğiz ve bir sonraki tıklamada veya ilk döngünün tamamlanmasından hemen sonra yenilerine geçeceğiz.
Aksi takdirde, her zaman son bir emrin son yürütülen kısmıyla çalışma riski vardır. Belki de en küçük parçası. Büyük bir arama emrini gözetimsiz bırakmak.
"Omurga" kelimesine dikkat çekiyorum. Bir sürü veya başka bir şey için bir öncelik seçme şeklinde et her zaman arttırılabilir. Mantığın temeli aynı kalır: Başarılı bir ticaret emrinden sonra, tüm ticaret mantığını sıfırdan başlatın.
OnTick'in neden yalnızca bir siparişi değiştireceğini anlamıyorum? Hepsi değiştirilecek.
Fiyat hareket edeceğinden ve her yeni OnTick aramasında, listedeki ilk emirde yeni bir değişiklik şartı yerine getirilmiş olacaktır. Hele modifikasyon 5 saniye sürecekse ;)
"Omurga" kelimesine dikkat çekiyorum. Bir sürü veya başka bir şey için bir öncelik seçme şeklinde et her zaman arttırılabilir. Mantığın temeli aynı kalır: Başarılı bir ticaret emrinden sonra, tüm ticaret mantığını sıfırdan başlatın.
Böyle bir "omurga", birden fazla siparişle çalışan bir Uzman Danışmanın mantığını bozacaktır.
Bir düzene sahip sistemlere bir fayda sağlamayıp gerisini mahvediyorsa ne anlamı var?
Siparişlerle çalışmadan önce fiyata göre hacim ve/veya mesafeye göre sıralama yapmak doğru karardır. Ancak kodu forumdan kopyalayan herkesin onu uygulayacağı varsayılmamalıdır.
Bu anlamda, kodum daha güvenli.
- Ü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