Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 70
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
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Değiştirme takvimi nasıl belirlenir?
fxsaber , 2018.02.08 12:39
Bazı işlevlerde boş bir ChartID giriş parametresi, değerlerin yeniden hesaplanmasına neden olmaz. Mevcut grafik için güncel verilere ihtiyacınız varsa, tam teşekküllü bir kimlik kullanmanız gerekir.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
POSITION_TICKET != POSITION_IDENTIFIER
fxsaber , 2018.02.12 20:14
bulgular
Bunun, komisyoncu hackinin özellikleri değil, MT5'in normal davranışı olduğunu düşünürsek, o zaman
Dezavantajları
ZY Tamamen doğrulanmış hipotez
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
POSITION_TICKET != POSITION_IDENTIFIER
Pavel Kolchin , 2018.02.12 13:31
(Emin değilim, pozisyonların kısmen kapanmasına benzeterek kontrol etmek zor)
Her şey şu şekilde çalışır:
1) bekleyen emir kısmen tetiklendi - Position_ID = Order_Ticket1 ile bir pozisyon açıldı
2) emrin geri kalanı yeni bir Order_Ticket2 emrine dönüştürülür ve aynı Order_Ticket ile geçmişte 2 emir olamayacağı için yeni Order_Ticket2 != Order_Ticket1'in yürütülmesini bekler.
3) emrin geri kalanı dolduruldu - Position_ID = Order_Ticket2 ile bir pozisyon açıldı
tarihte iki emir var, terminalde iki pozisyon var, her şey uyuyor
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
"Bir tüccar için LifeHack: Tanımlar üzerinde ForEach'i yoğurmak (#define)" makalesinin tartışılması
fxsaber , 2018.02.14 10:54
Performans ölçümü
Sonuç
Kesinlikle yanılmışım! SymbolInfoDouble, SymbolInfoTick'ten iki kat daha yavaştır.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
"Bir tüccar için LifeHack: Tanımlar üzerinde ForEach'i yoğurmak (#define)" makalesinin tartışılması
fxsaber , 2018.02.14 11:58
beceriksiz. Test Cihazında Sonuç
Performansın gerekli olduğu durumlarda (Optimizer), SymbolInfoDouble kullanmak daha iyidir. Gerçekte, önemli değil.
ЗЫ Fonksiyonların hızının ölçülmesi performansın önemli olduğu bir ortamda ölçülmelidir - Tester.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
fxsaber , 2018.02.12 23:10
İki ticaret demo sunucusunda ellerimle bir SATIN AL pozisyonu açıyorum
RoboForex-MetaTrader 5
FXOpen-MT5
Aynı renkteki satırlar aynı anlama gelir. Ancak farklı sıralarda gittikleri açıkça görülmektedir. Robo için, işlemin yürütülmesinden sonra emrin yerine getirildiğine dair bir mesaj gelir. Ve açık için - ÖNCE! Bu nedenle OrderSend şans getirir, ancak henüz bir anlaşma yoktur. Onlar. OrderSend'i geçmişle senkronize etmiyoruz
FXOpen-MT5 için kod
Sonuç
Bu durum aşağıdaki açıklamaya sahiptir.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
Raşid Umarov , 2018.02.15 06:25
Harici bir alım satım sistemine bir emir gönderilirse, MetaTrader 5 alım satım sunucusu ondan bir cevap beklemez ve talebin sonucunu derhal "sipariş verildi" olarak döndürür. Bu nedenle, tamamlanan anlaşma hakkında henüz bir bilgi olmadığı için OrderSend her zaman anlaşma=0 döndürür. OnTrade veya OnTradeTransaction'da yakalayın.
Bir ticaret olayı dinleyicisi örneği , MOEX Moskova Borsası için bir ticaret robotu oluştururken nereden başlamalı makalesinde verilmiştir - TradeTransactionListener.mq5
OrderSend - bir piyasa işlemi yapmak için bir emir gönderdi. Sipariş verildi - bunun için Result.order'ı tanımanız gerekiyor. Ancak hiç kimse bir anlaşma (lar) beklemiyor - birçoğu olabilir ve bunların uygulanması için toplam süre genellikle tanımlanmamıştır.
Aracı tarafındaki belirli çıktı uygulamasına bağlıdır. Genellikle tanımlanmamıştır.
Bu nedenle, kodunuzu test etmek için FXOpen-MT5'te bir demo hesabı kullanmanızı şiddetle tavsiye ederim, çünkü. diğer demolardan oldukça farklı duruyor.
Örneğin, böyle bir ticaret mantığıyla MQL5'te bir komut dosyası yazmaya çalışmanızı öneririm (MQL4 stili sadece anlamın hızlı bir şekilde gösterilmesi içindir)
Hiç de kolay değil. Ayrıca, kısmi yürütme için söz konusu demo sunucusunu tavsiye ederim.
MT5'teki en yaygın hatalardan biri için açıklamanın yapıldığı bir gönderi kaldırıldı.
Gönderi harikaydı. Kaldırılmasını beklemiyordum. Kaldırılma sebebini öğrenmek istiyorum. Çünkü yeniden uzaklaştırmayla karşılaşmak mazoşizmdir.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Sipariş numaralandırma döngüsünün organizasyonu
fxsaber , 2018.02.16 09:40
MT5'te her şey yolunda değil. Sorunu gösteren bir örnek
Ne dersiniz, bu betiği pozisyonsuz bir sembol üzerinde çalıştırırsanız sonuç ne olur?
Doğru cevap: Bir veya iki pozisyon açılacaktır.
Bunun olmasının nedeni. İlk EmirGönder'den sonra bir piyasa emri belirir ve gerçekleşmeden önce yeni bir işaret gelirse henüz pozisyon yoktur ve ikinci EmirGönder verilir.
Bu bağlamda, görünüşte normal olan MT5 şablonu düzgün çalışmayacak ve sonuç olarak , kod tabanındaki MT5 Uzman Danışmanlarının çoğu çalışmayacaktır . Aynı zamanda, neredeyse aynı MT4 şablonu sorunsuz bir şekilde sürmeye devam edecektir.
İlk bakışta iyi bir fikir olan PositionsTotal, MT5'in piyasa siparişleri için OrdersTotal'ı da analiz etme ihtiyacı nedeniyle bir şekilde gölgede kalıyor.
Dikkat olmak!
Bu bağlamda, görünüşte normal olan MT5 şablonu düzgün çalışmayacak ve sonuç olarak , kod tabanındaki MT5 Uzman Danışmanlarının çoğu çalışmayacaktır .
Bu ifadenin bir kanıtı olarak, MT5 kod tabanından hemen hemen her Expert Advisor'ı alabilirsiniz. Bir şey aramayalım, hemen şu anda en güncel Expert Advisor'ı alalım. KB'de kapsamlı MT5 yayıncılık deneyimine sahip bir yazar tarafından yazılmış olması güzel.
Kaynak kodunda böyle satırlar var (yorumlarımı vurguladım)
Açıklanan özdeş bir durum elde ediyoruz
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri
fxsaber , 2018.02.16 19:52
İlk EmirGönder'den sonra bir piyasa emri belirir ve gerçekleşmeden önce yeni bir işaret gelirse henüz pozisyon yoktur ve ikinci EmirGönder verilir.
İlk bakışta iyi bir fikir olan PositionsTotal, MT5'in piyasa siparişleri için OrdersTotal'ı da analiz etme ihtiyacı nedeniyle bir şekilde gölgede kalıyor.
Bu, genel durumda danışmanın bir yerine iki, üç vb. pozisyon açacağı anlamına gelir. Kenelerin ne sıklıkta geleceğine ve piyasa emirlerinin ne kadar süreyle uygulanacağına bağlı olarak.
Kod tabanındaki hemen hemen tüm MT5 Expert Advisor'lar MT5 şablonu ile aynı mantığa göre yazıldığından, içerdiği hatanın aynısına sahiptirler. Bu, ne yazık ki KB'deki neredeyse tüm MT5 Uzman Danışmanları için geçerlidir.
Netleştirmede, aynı sembol üzerinde aynı anda açık bir pozisyon ve herhangi bir yöndeki birkaç piyasa emri olabilir. Örneğin, bir AL pozisyonu ve bir AL emri. Doğru, böyle bir demo hesabı bulamadım, çünkü kural her yerde uyumsuz olarak uygulandı
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
fxsaber , 2018.02.14 08:58
Tüm OnTradeTransaction olayları, OrderSend'in tamamlanmasından sonra gerçekleşir.
danışman
Eller bir ticaret emri gönderir.
Kayıt
2018.02.14 09:41:46.671 '8854170': instant sell 1.00 EURUSD at 1.23673 2018.02.14 09:41:46.853 '8854170': accepted instant sell 1.00 EURUSD at 1.23673 2018.02.14 09:41:46.853 '8854170': deal #192088422 sell 1.00 EURUSD at 1.23673 done (based on order #208541700) 2018.02.14 09:41:46.853 '8854170': order #208541700 sell 1.00 / 1.00 EURUSD at 1.23673 done in 190.608 ms
Uzman Danışman sonucu
Hem zaman sütunundan hem de EA'nın sayısal göstergelerinden , bir ticaret emrinin yürütülme süresinin, OnTradeTransaction olaylarının sırasını hiçbir şekilde etkilemediği açıkça görülmektedir. Tüm uyumsuzluklar cehenneme gider! Bunu batırmayı başardılar. 1755 oluşturun.
Örneğin, Terminal'de OrderSendAsync piyasa emri verirken, bir an bile piyasa emri görünmez. Belki de geliştiriciler bunu biraz hızlandırmak için yapmaya karar verdiler.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
"MetaTrader 5'te bir ticaret stratejisinin optimizasyonunu görselleştirme" makalesinin tartışılması
fxsaber , 2018.02.22 08:39
Çerçeve modunda OnInit, OnDeinit, OnTick, OnTrade, OnTradeTransaction ve OnTimer yok sayılır. Yalnızca OnChartEvent saban sürer.
Tabii ki, OnChartEvent istisnası nedeniyle, içinde çerçeve modu bayrağının varlığı için zorunlu bir kontrol yapılması gerekir.