MT için Python'da bir ticaret sistemi yapmak.

 
Python'da bir ticaret sistemi yazmak için bir fikir vardı ve zaten ortaya çıktıysa, neden bu sistemi kamuya açık hale getirmiyorsunuz? Belki benden başka birinin de ilgisini çeker.
Ama neden Python'da?
- Bu, birçok yönü olan karmaşık bir konudur. cevaplamaya çalışacağım.
Tarihsel olarak, bilgisayarımda kurulu dört terminal var. Bazıları tam teşekküllü bir API'ye, bazıları kendi standart dışı dillerine, bazıları ise her ikisine sahip.
Birincisi, 2008'de, API'nin kurulu olduğu terminaldi - altında, sonunda C ++ / C # dillerine gelen ilk sistemler yapıldı. Aşağıdaki terminaller (dilli ve dilsiz) eklenirken sistem değiştirilmedi, sadece terminal ile sistem arasında yeni bir arayüz geliştirildi. Böylece sistem birleştirilmiştir ve başka bir terminal ile çalışabilmesi için gerekli arayüzün bağlanması yeterlidir. En basit versiyonda, bir günden fazla sürmez. Ve sistemi belirli bir terminal için yeniden yapma arzusu yoktur.
Terminal sadece bir veri sağlayıcı ve emirlerin uygulayıcısıdır. Hepsi bu - ondan başka bir şey gerekli değil.
Bu sistemin ideolojisidir.
Ama bu sadece bir yönü. Diğerleri gelecek gönderilerde. Sık sık yazacağıma söz vermiyorum.
 
Kim isterse Python xs'de. Bazı şeyleri Java'ya taşımak için 3 ay içinde planlarım var. Onun hakkında düşünüyorum. Ve python'da herhangi bir komisyoncunun API'siyle bile tanışmadım. Gerçi, .. belki vardır, elbette.
 
Evet, ama sonuçta neden Python?
Aslında Python, geçen yıl yaptığım Makine Öğrenimi (makine öğrenimi veya ML) dahil olmak üzere bir yığın kitaplığın (modüllerin) varlığıyla ilgilendi. Ancak Python ile çalışmadım - henüz tek bir satır yazmadım.) Pekala, soyut bir şey denedim ama belirli hedeflerim yoktu.
Bununla birlikte, ticaret sistemlerinde Python'u özel olarak uygulamak için, önce hem TS hem de terminal ile etkileşiminde hata ayıklamanız gerekir.
Pythonişlevlerini DLL aracılığıyla MQL'den çağırmayı yanlış buluyorum - bir Python işlevini bu şekilde çağırmak için yorumlayıcıyı başlatmanız ve işlevi onun üzerinden çağırmanız gerekir - ve bu nedenle her çağrıda - çok uzun.
Farklı bir konseptim var: TS, önceki tüm verileri ve gerekli geçmişi depolayan tam teşekküllü bir EXE uygulamasıdır. Bu nedenle, yalnızca halihazırda çalışan bir uygulamadan bir işlevi çağırırız - çağrı süresi minimumdur.
Bazıları Python'un çok yavaş olduğunu söylüyor. Bu doğru değil. Çoğu sistem için (gün içinde bile), Python fazlasıyla yeterli hıza sahiptir ve bunu gelecekte göreceğiz. HFT'ye gelince, onlarla hiçbir hızda rekabet edemeyiz - bu farklı para.) Ve diğer spreadler.)
 
Viktar Dzemikhau :
Kim isterse Python xs'de. Bazı şeyleri Java'ya taşımak için 3 ay içinde planlarım var. Onun hakkında düşünüyorum. Ve python'da herhangi bir komisyoncunun API'siyle bile tanışmadım. Gerçi, .. belki vardır, elbette.

Bekle, bir API yapalım. Bu iş parçacığında. Hepsi birden değil.) İlgi varsa forumdan.

IMHO, Java bir seçenek değildir. yanılıyor olabilirim.

 
Konstantin Nikitin :
Alternatif olarak, QT kullanarak C++ yazabilirsiniz. Avantajlardan biri, platformlar arası derleme için hemen yazabilmenizdir.

Kabul ediyorum. Ancak bu konudaki amaç Python ve kitaplıklarının (modüllerinin) kullanılmasıdır. Sonuç olarak, platformlar arası (terminaller arası) bir API elde edeceğiz. Herhangi bir programlama dili için.

Ancak genel olarak Python çoğu TS için fazlasıyla yeterlidir. Ve araç ile herhangi bir terminal arasındaki arayüzü yazmak için - en fazla 1 gün.

Ancak, boş zamana bağlı olarak hemen değil. Düzenli olarak söz vermiyorum.

 
Python yorumlayıcısı bir kez başlatılır, ardından onu bir danışman veya göstergede kullanabilirsiniz. Her şey zaten yapıldı ve forumda. Makine öğrenimi ile ilgili bir konu var. https://github.com/RandomKori/Py36MT5'i kullanın
 
Grigoriy Chaunin :
Python yorumlayıcısı bir kez başlatılır, ardından onu bir danışman veya göstergede kullanabilirsiniz. Her şey zaten yapıldı ve forumda. Makine öğrenimi ile ilgili bir konu var. https://github.com/RandomKori/Py36MT5'i kullanın

Evet teşekkür ederim. Ama fikir farklı. Uygulama için tam teşekküllü bir uygulamaya ihtiyacınız var - EXE. Ama bir şey işe yarayabilir. Ne yazık ki DLL kaynağı yok, ama kritik değil.

 
Tüm kaynaklar orada yayınlanmıştır.
 
Grigoriy Chaunin :
Tüm kaynaklar orada yayınlanmıştır.

Evet, gerçekten de VS'deki tüm DLL projesi . Yetersiz.

Ve MO konusunda, bir şekilde bu bağlantıyı kaçırdım.

Ancak normal kahramanlar her zaman ortalıkta dolaşırlar (c). Biz de kendi yolumuza gideceğiz.) Bu konuda başka görevler de var.

 

Daha sonra terminal ile veri alışverişi yapacak bir Python uygulaması oluşturarak başlayalım - terminalden veri alıp bunları çıkış penceresine gönderecek ve ayrıca SendData penceresinden terminale veri aktaracak. Bu, aracın terminal ile etkileşimini çözmek için gerekli olacaktır.

Şimdiye kadar, uygulama herhangi bir işlev gerçekleştirmiyor.

Pencere böyle çıktı.

Python kodu ekte.

Dosyalar:
PyTS.txt  2 kb
 
Yuriy Asaulenko :

Daha sonra terminal ile veri alışverişi yapacak bir Python uygulaması oluşturarak başlayalım - terminalden veri alıp bunları çıkış penceresine gönderecek ve ayrıca SendData penceresinden terminale veri aktaracak. Bu, aracın terminal ile etkileşimini çözmek için gerekli olacaktır.

Şimdiye kadar, uygulama herhangi bir işlev gerçekleştirmiyor.

Pencere böyle çıktı.

Python kodu ekte.

Koddaki yorumlar nerede? Buradaki herkesin python'u anladığını ve fikirlerinizi, yorumlarınızın gereksiz olacağını düşünüyor musunuz?

Ne tür bir krakozyabry """ Окно ввода """ ?

import tkinter kütüphanesi nedir, fonksiyonlarının (yöntemlerinin) açıklaması nerede?