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
Lütfen bu fikrin temel bir şema kodunu sağlayın. İlk bakışta, tam bir yanlış anlama gibi geliyor.
OnMain işlevinin yürütülmesi sırasında, mevcut gerçek kuyruğun durumunu bilmenin bir yolu yoktur . Bunu yapmak için tek geçici çözüm, bağlantıda bahsettiğim gibi bir casus programdır.
En basit haliyle:
Sadece hesaplamalara yönelik yaklaşımı değiştirmeniz gerekir (görev gerektirdiği sıklıkta bir ara dönüş yapın). Ama eğer zorsa, 1. aşamada OnMain'in sizin için olmadığını düşünün (ana kodu sırasıyla OnMain'e değil, On2XX'e aktarırsınız), OnMain'de hiçbir şey öğrenmenize gerek yoktur.
Koltuk değneklerini yanlış yönde yapıyorsun:
OnXXX işlevlerinde yalnızca kuyruktaki olayları (parametreleri) kopyalayarak ve ana OnMain işlevini çağırarak bırakın. Tüm kodlarını yinelenen On2XX işlevlerine taşıyın. Ve bu yinelenen On2XX işlevlerini OnMain'den ihtiyacınız olan sırayla çağırın, sırayla bunları kuyruklardan parametre olarak iletin
Ardından, ölçümler yapın - hızdaki kazancı gösterin ve ardından MQL'yi uygun işlevsellik ile desteklemeyi önermek zaten mümkün olacaktır. Ama her şeyi burada ve şimdi zaten yaptıysanız neden ek?!
Bunun hakkında yazmıyorsun.
Sorun, "OntaredeTransaction" işlevinin giriş değişkenlerindeki alanları doldurma işlevselliğinin, daha kötüsü için, Yardım'da verilen açıklamaya karşılık gelmemesidir:
onlar. aramalarda ve son aramada bile TRADE_TRANSACTION_HISTORY_ADD'de birçok alan doldurulmaz.
Buna göre, tüm tüccarlar, varış anında bu eksik parametreleri bir şekilde belirlemek için burada sıkıntı çekiyor.
Burada pek çok tartışma vardı, sadece forumda bir arama yapın - "OntaredeTransaction"ın çarpık işlevselliği ek üretir. işleme maliyetleri. hem zaman hem de "yükler" açısından algoritmik tüccarlar, yeterince çalışan bir kod geliştirmeye harcanan ekstra zamana sahiptir (yani, tüm topluluk düzeyinde büyük zaman kaybı ve devasa verimsizlik).
Şu anda geliştiricilerin abonelikten çıkmaları, "Simgeye göre Piyasa yürütmeniz varsa, o zaman sıfır fiyat değeri olacaktır; öyle olmalıdır." ( Bağlantı ) - bu yine NORMAL DEĞİL -
son fonksiyon çağrılarında ayrıntılı değerlerin olmaması bir çok ekstraya yol açar. işçilik maliyetleri.
GeçmişSeçin.
Bu delicesine pahalı bir özellik. Ve ne yazık ki, hiçbir önbelleğe alma, çalışma hızını şu anda kabul edilebilir hale getiremez.
Örneğin, muharebe danışmanlarında güncel verilerle çalışmak önemlidir. Özellikle, Market Watch ve CopyTicks'teki işaretler mümkün olduğunca güncel olmalıdır.
Bunu yapmak için, mevcut fiyat verilerinin uygunluğunu kontrol etmek için çok iyi değil, zorunlu mekanizmalar vardır. Böyle bir mekanizmanın parçalarından biri, bir sembol üzerinde bir anlaşmanın son onay işaretinden sonra geçtiği durumların tespitidir. Bu nadiren olmaz, bu nedenle mevcut tik işaretinin hala alakalı olup olmadığını bilmek önemlidir.
Bu tür bir tespit için, son işlemlerin geçmişine erişebilmeniz gerekir. Bu, aşağıdaki şematik şekilde HistorySelect aracılığıyla yapılır.
Ne yazık ki, böyle bir HistorySelect çağrısı 5-30 milisaniye sürer (Bunu Release-EX5'te kendim ölçtüm). OnTick'teki Expert Advisor'da bu tür birkaç güncelleme yapıldığında (iyi bir şekilde, herhangi bir duraklamadan sonra yapılmalıdır. Örneğin, her OrderSend'den sonra), o zaman her şey delicesine pahalı / uzun olur. HistorySelect, bir OnTick'te toplamda birkaç saniye yiyebilir.
Sevgili geliştiriciler, neden bu kadar pahalı? Bu işlev, düzgün bir şekilde uygulanırsa anlık olabilir.
" HistorySelect'e yapılan böyle bir çağrının 5-30 milisaniye sürdüğüne" dair kanıtınız var mı?
Fikrinizi doğru anlarsam, test kodu şöyle görünmelidir:
100.000 istek şu şekilde işlenir:
" HistorySelect'e yapılan böyle bir çağrının 5-30 milisaniye sürdüğüne" dair kanıtınız var mı?
Fikrinizi doğru anlarsam, test kodu şöyle görünmelidir:
100.000 istek şu şekilde işlenir:
" HistorySelect'e yapılan böyle bir çağrının 5-30 milisaniye sürdüğüne" dair kanıtınız var mı?
Fikrinizi doğru anlarsam, test kodu şöyle görünmelidir:
100.000 istek şu şekilde işlenir:
Komut dosyanızı çalıştırma.
Başka bir komut dosyası çalıştırın.
Normal savaş puanı. HFT değil.
Not Bu arada, komut dosyanız HistorySelect'in her seferinde her şeyi yeniden hesapladığını gösterdi. Ancak giriş parametreleri değişmedi, geçmiş tablosu güncellenmedi, diğer HistorySelect işlevleri çağrılmadı.
Komut dosyanızı çalıştırma.
O yüzden detaylara ihtiyaç var.
Testim, arka planda çalışan birçok başka işlemle yavaş bir "Intel Xeon E5-2630 v4 @ 2.20GHz" üzerinde gerçekleştirildi.
Test hesabında, 2009'dan bu yana, bugün 8 sipariş de dahil olmak üzere, aşağı yukarı eşit olarak geçmişte 31315 sipariş vardı.
Belki de aynı anda terminalin temellerini büyük ölçüde yükleyen bir komut dosyası veya Uzman Danışman çalışıyordu. "Temiz" bir terminalde deneyin.
Daha bilgilendirici test:
Üç lansman:
O yüzden detaylara ihtiyaç var.
Testim, arka planda çalışan birçok başka işlemle yavaş bir "Intel Xeon E5-2630 v4 @ 2.20GHz" üzerinde gerçekleştirildi.
Test hesabında, 2009'dan bu yana, bugün 8 sipariş de dahil olmak üzere, aşağı yukarı eşit olarak geçmişte 31315 sipariş vardı.
Belki de aynı anda terminalin temellerini büyük ölçüde yükleyen bir komut dosyası veya Uzman Danışman çalışıyordu. "Temiz" bir terminalde deneyin.
Aynı hesap ve makinede Boş Terminal.
Resim diğer hesaplarda ve Terminallerde benzer. Yapılandırma.
Okuyuculardan bu betiğin sonuçlarını sağlamaları istenir.
Daha bilgilendirici test:
Üç lansman:
Boş Terminal 2460.
Tehdit Boş bir hesapta çalıştırın.
Siparişlerin değil , işlem sayısının hızı büyük ölçüde etkilediği görülüyor.
Aynı hesap ve makinede Boş Terminal.
Resim diğer hesaplarda ve Terminallerde benzer. Yapılandırma.
Okuyuculardan bu betiğin sonuçlarını sağlamaları istenir.
Bu hiçbir şeyi kanıtlamaz, ancak her yeni lansmanda (farklı bir sembolde) sürenin artması endişe vericidir ...
Uzun bir ticaret geçmişine sahip bir hesapta çalışmanız gerekir.