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

 

Her şey hazır ve Python TS'mizi MT terminaline bağlamanın zamanı geldi. Ancak bunu başarmak için bazı adımların atılması gerekiyor.

Gelecekteki TS'miz dosyaları C:\PyTS klasörüne okur ve yazar, ancak MQ'nun bilinmeyen bir hevesi nedeniyle MT terminali dosyaları yalnızca kendi dizinine okuyabilir ve yazabilir - C:\<och. birçok harf ve sayı>\Dosya ve başka bir şey yok. Tabii ki, Python kodundaki ayarları değiştirebilir ve yerel MT klasöründe değiş tokuş etmesine izin verebilirsiniz, ancak dosyaları oradan ve ihtiyacım olan yerde okumak ve yazmak için terminale ihtiyacım var ve terminalin sabırsız olduğu yere değil . Ayrıca, gelecekte gerekli olacaktır.

Aslında, bu sorun birkaç yıl önce benim başlığımda çözüldü - https://www.mql5.com/ru/forum/79922 .

Her şey Windows aracılığıyla çözülür. Terminal klasöründe C:\<och. birçok harf ve sayı>\Files, terminal (ve işletim sistemi de) tarafından Files\PyTS'nin bir alt klasörü olarak algılanan C:\PyTS klasörüne bir bağlantı yerleştirilir ve terminal oraya yazar, C:\ PyTS, kendi başına olduğu gibi.)

Bu, yerel Windows yardımcı programı MKLINK kullanılarak komut satırında yapılır. Kendi başlarına çözemeyenler için ayrıntılı bir açıklama:

Çalıştır - cmd veya menüden - Windows Araçları -> Komut İstemi yazıyoruz. Kediye bir pencere açıyoruz. MKLINK veya mklink yazıyoruz. Sahibiz:


Şimdi satırda C:\ içerene kadar birkaç kez cd .. yazıyoruz.

Şimdi gezgini açın ve C:\<och klasörüne gidin. birçok harf ve sayı>\Files, terminal dosyaları kediye yazar ve Ctrl-Ins klasörünün yolunu seçip kopyalar.

Komut istemi penceresine geri dönüyoruz ve orada Shift-In'leri kullanarak cd <space> yazıyoruz, yolu ... \Files klasörüne yapıştırıyoruz ve Enter'a basıyoruz. Alırız:

Şimdi komut satırına yazıyoruz - mklink /D PyTS c:\PyTS ve her zamanki gibi - Enter. Alırız:

Bağlantının oluşturulduğunu görüyoruz. ......\Files klasöründe göründüğüne bakarız ve içine gireriz - dosyaları C:\PyTS klasöründen görürüz. )) Herşey.

Şimdi, terminal tarafından ...Files\PyTS klasörüne yazılan tüm dosyalar aslında C:\PyTS klasörüne yazılacaktır.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
Yani dosya alışverişi bitti. Her şey çalışıyor, tüm kaynaklar ekte. Diğer her şey ve Python'dan MT'ye ters aktarım aynı şekilde yapılır ve umarım herhangi bir soruna yol açmaz. Başlamak için bir önceki yazımı okuyun ve takip edin. Başka yol yok.))

MQL kodu da ekte bulunmaktadır. - MQL geçmişi okur ve Python uygulamasına iletir. Python kabul eder ve yazdırır. Python'da Başlat düğmesine basmayı unutmayın. )

Umarım MQL koduna yorum yazmanıza gerek yoktur - bir referans var.) Evet, MT'den veri aktarımı bir zamanlayıcıda yapılır - benim için bu aşamada daha uygun.

Herhangi bir sorunuz varsa arayın.)

Şimdilik duracağım - şimdi stratejiyle ilgili sorunları çözmemiz gerekiyor. Öneriler olursa değerlendiririz.)

Bir kez daha tekrarlıyorum: Bir strateji geliştirirken ve hata ayıklarken dosya paylaşımı idealdir, çünkü. değiştirmek için herhangi bir çaba gerektirmez. Çoğu gerçek strateji için gelecekte uygundur. Ancak, gerekirse, programda önemli bir değişiklik yapmadan - 1-2 gün içinde - her zaman başka bir şeyle değiştirebiliriz.

Dosyalar:
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

Sık sık yazacağıma söz vermedim, sadece müsait olduklarında. Proje arka planda, ne titrek ne de yuvarlanarak, boş zamanlarında başka şeylerden yapılır.

Sistemin grafikleri göstermesinin iyi olacağını düşündüm

Genel olarak Python basit bir dildir - öğrenmek için birkaç gün yeterlidir. Modüllerle uğraşmak çok daha zor - bunlardan birkaç bin var ve kimin neyi ve neden gerekli olduğu her zaman açık olmaktan uzak. Listelerde olan buydu - bunu anlamak uzun zaman aldı. Ama sonuç şu:

Program CSV dosyasını okur ve çizer.

Grafik, yaklaşık 50 bin mum olan Kapanış fiyatlarını gösterir.

Büyüteç üzerine tıklarsanız ve grafik alanında bir dikdörtgen seçerseniz - bunun gibi:

sonra grafiğin ölçeğini artırabiliriz ve şunu elde ederiz:

Bu birden çok kez yapılabilir. Grafik ayrıca resim olarak taşınabilir ve kaydedilebilir ve tabii ki tam ekrana genişletilebilir.

Uygulamadaki tüm gerekli dosyalar. Zip'i bir klasöre açın ve yürütmek için CSVGraph.py dosyasını çalıştırın

Başlamadan önce, program tarafından içe aktarılan modüllerin kurulu olup olmadığını öğrenmeyi unutmayın.

Dosyalar:
CSVGraph.zip  582 kb
 
Python öğrenme alıştırması olarak - belki. Ancak pratik bir bakış açısından, çok az kullanım + zaman kaybıdır. Elbette herkesin kendi yolu vardır. İyi şanlar
 

Saçmalıkları komşulara ve amatör akılcılara bırakalım ve ön sonuçları kendimiz özetleyelim.

Konuyu zaten anladıysan Python'u bir dereceye kadar biliyorsun, CSV dosyalarıyla nasıl çalışılacağını biliyorsun, grafiklerin nasıl oluşturulacağını ve terminal ile nasıl iletişim kurulacağını biliyorsun. Bu, ticaret stratejilerini geliştirmek, simüle etmek ve test etmek için zaten oldukça yeterli. Stratejileriniz keneler kullanmadan 1 dakika veya daha fazla zaman dilimlerinde çalışıyorsa ve yaklaşık 5-10 s aralıklarla terminale erişiyorsa, o zaman doğrudan Phyton'da çalışma stratejileri yapabilir, terminali yalnızca veri sağlamak ve "yürütmek" için bırakabilirsiniz. senin emirlerin.

Ayrıca, yerel makine öğrenimi savunucuları arasında çok popüler olan R dili ve ortamının yeteneklerinin ötesine geçen Phyton programlama ve ortam becerilerine zaten sahipsiniz. Şimdi bile Python'da çok karmaşık gösterge stratejileri oluşturabilirsiniz, ancak Python'un tüm özellikleri (R'ye benzer şekilde) modüller kullanılarak uygulanabilir. Temada sadece 3 modül kullandık - tkinter, numpy ve matplotlib.

Şimdi, Python'un makine öğrenimini kullanarak daha gelişmiş stratejiler geliştirmesi için buna ihtiyacı var. Bunu yapmak için - scikit-learn modülünü kullanabilirsiniz. scikit-learn'in kullanılmasıyla aşağıdaki özellikler kullanılabilir hale gelir - Kullanıcı Kılavuzu . Yöntem setini nasıl buldunuz? - Bayes sınıflandırmasından rastgele ormanlara ve sinir ağlarına kadar R'de bilinmeyen yöntemler ve "Makine Öğrenimi" konusu dahil hemen hemen her şey zaten var.

Bu, Python'daki makine öğrenimi modüllerinden sadece bir tanesidir ve bunlardan yaklaşık bir düzine vardır. Scikit-learn modülünün en iyisi olmadığı ve en gelişmişi olmadığı söyleniyor. Bu kimin neye ihtiyacı var. Gerisini çevrimiçi bulmak kolaydır.


PS Python ile çalışmaya başlayan veya başlamak üzere olanlar için.

Birkaç Python geliştirme ortamı denedim ve en başlangıç dostu olana (kendimi dahil ettiğim) karar verdim - Anaconda . Python da dahil olmak üzere ihtiyacınız olan her şeyin kitte yüklü olması burada uygundur. Spyder kullandığım editör Anaconda ile kurulu. Ayrıca VSCode düzenleyicisini kurmanızı da tavsiye ederim - ayrıca çok iyi ve doğrudan Anaconda'dan yüklendi.

Belki profesyoneller seçimimden memnun olmayacaklar.

 
Konunun 4 sayfasından sonra nihayet Python'da açıklanan stratejiye geçmeye hazırız. Bunun için zaten her şey yapıldı.
Basit bir strateji ile başlayalım - EMA'nın geçişinde, muhtemelen değişikliklerle ticaret.
Sinir ağlarında (NN) uzmanlaştığımda, basit bir görevle başladım - NN, EMA'nın kesişme noktalarını belirlemek zorundaydı. Görev, pratik açıdan kesinlikle işe yaramaz, ancak piyasa verilerinin Millet Meclisine nasıl sunulacağını, nasıl hazırlanacağını belirlemeyi mümkün kıldı ve birçok eğitim sorununu çözdü.
Şimdi görevimiz hiç kar etmek değil ve hatta terminale bağlanmak bile değil - bu basit, ancak karlı bir strateji olmadan anlamsız. Şimdi görevimiz bir strateji şablonu oluşturmak ve nasıl test edileceğini öğrenmek ve bunun için herhangi bir strateji yapacak. Ayrıca, herhangi bir şablonu şablona sokun, test edin ve işe yararsa, terminal üzerinden belirli ticaret yapabilirsiniz.

Gerekli göstergeler hazır. Python'da yapılan çizime bakın (Python her türlü grafiği çizmek için çok kullanışlı ve hızlıdır.). Bu, tek bir sıçramaya - 1(t) veya bir geçiş fonksiyonuna verilen yanıttır. Aslında standart testlerden biri.


fm - olağan hareketli ortalama (yalnızca kalibrasyon için), f1 - EMA, değiştirilmiş katsayılar ve f2 - standart olmayan gösterge.

Ancak ortak arkadaşımızın dediği gibi:

Igor Makanu :

Milyonlarca kez söyledim ve muhtemelen aynı sayıda tekrar edeceğim... MT sunumundaki göstergelerden daha iyi (standart... eski Slav göstergeleri, tabiri caizse... pagan!!!) hayır bir şey ile geldi.

Dolayısıyla bilimle kafanızı karıştırmamak için standart bir EMA ve strateji kaynakları alacaksınız. Ancak, stratejimi göstergelerime göre yapacağım ve test edeceğim. Belki meraklı gözlerden bir şey saklayacağım, ancak işlevselliği kaybetmeden.

Ancak, EMA'yı geçmek uğruna değil, tüm bunlar başlatıldı. Tüm bunların amacı, makine öğrenimi stratejileridir. Şu anda çeşitli sınıflandırma yöntemlerini test ediyorum. Ve işte test sonuçları:

Şimdiye kadarki en iyi Gauss, RBF SVM, Sinir Ağları ve saf Bayes sınıflandırmasında. Python programı zaten hazır, internette bir yerde ama verilerin hazırlanması kullanıcıya kalmış.

Gitmek.

 
Yuriy Asaulenko :
Konunun 4 sayfasından sonra nihayet Python'da açıklanan stratejiye geçmeye hazırız. Bunun için zaten her şey yapıldı.
Basit bir strateji ile başlayalım - EMA'nın geçişinde, muhtemelen değişikliklerle ticaret.
Sinir ağlarında (NN) uzmanlaştığımda, basit bir görevle başladım - NN, EMA'nın kesişme noktalarını belirlemek zorundaydı. Görev, pratik açıdan kesinlikle işe yaramaz, ancak piyasa verilerinin Millet Meclisine nasıl sunulacağını, nasıl hazırlanacağını belirlemeyi mümkün kıldı ve birçok eğitim sorununu çözdü.
Şimdi görevimiz hiç kar etmek değil ve hatta terminale bağlanmak bile değil - bu basit, ancak karlı bir strateji olmadan anlamsız. Şimdi görevimiz bir strateji şablonu oluşturmak ve nasıl test edileceğini öğrenmek ve bunun için herhangi bir strateji yapacak. Ayrıca, herhangi bir şablonu şablona sokun, test edin ve işe yararsa, terminal aracılığıyla belirli ticaret yapabilirsiniz.

Gerekli göstergeler hazır. Python'da yapılan çizime bakın (Python her türlü grafiği çizmek için çok kullanışlı ve hızlıdır.). Bu, tek bir sıçrama - 1(t) veya bir geçiş fonksiyonuna verilen yanıttır. Aslında standart testlerden biri.


fm - olağan hareketli ortalama (yalnızca kalibrasyon için), f1 - EMA, değiştirilmiş katsayılar ve f2 - standart olmayan gösterge.

Ancak ortak arkadaşımızın dediği gibi:

Dolayısıyla bilimle kafanızı karıştırmamak için standart bir EMA ve strateji kaynakları alacaksınız. Ancak, stratejimi göstergelerime göre yapacağım ve test edeceğim. Belki meraklı gözlerden bir şey saklayacağım, ancak işlevselliği kaybetmeden.

Ancak, EMA'yı geçmek uğruna değil, tüm bunlar başlatıldı. Tüm bunların amacı, makine öğrenimi stratejileridir. Şu anda çeşitli sınıflandırma yöntemlerini test ediyorum. Ve işte test sonuçları:

Şimdiye kadarki en iyi Gauss, RBF SVM, Sinir Ağları ve saf Bayes sınıflandırmasında. Python programı zaten hazır, internette bir yerde ama verilerin hazırlanması kullanıcıya kalmış.

Gitmek.


Sinir ağlarına geçmeleri üzücü. Ama çoğunlukla çok faydalı, işe yarayacağını düşünüyorum.

 
Sergey Chalyshev :


Sinir ağlarına geçmeleri üzücü. Ama çoğunlukla çok faydalı, işe yarayacağını düşünüyorum.

Bu konuda NS ve diğer ML yöntemlerine geçiş planı bulunmamaktadır. En azından şimdilik.) Bakalım.

Python'da sistem şablonunun yapıldığı yer burasıdır. Bu şablonun belirli içeriği, belirli bir kullanıcının işidir.

Pekala, zaman zaman Python kitaplıklarının olasılığını göstermenin gereksiz olmadığını düşünüyorum.

 
Not Evet, FORTS (MOEX) için tüm stratejileri yapacağım demedim. Forex DC ile oynamıyorum.
 
Oyunlarımıza devam edelim. Bugün hazır ve çalışır durumdayız:
2. Strateji şablonu.
3. Şablona basit bir EMA geçiş stratejisi yerleştirilir.

Program başlatıldığında, strateji test edilir, tüm işlemlere ilişkin bir rapor bir CSV dosyasına kaydedilir, konsolda diske kaydedilebilecek bir kar tablosu görüntülenir - bkz.


Test, SBER MOEX vadeli işlemlerinde gerçekleştirildi - 3 aylık bir aralık, TF - 1 m, toplamda ~ 55.000 mum. Strateji sadece mumların yakın değerlerini kullandı. Test süresi, programın başlangıcından itibaren ~1 dakikadır. Bu, mum başına yaklaşık 1 ms'dir.
SBER vadeli işlemlerinin geçmişi de dahil olmak üzere gerekli tüm program dosyalarının bulunduğu klasör - eke bakın.
Programı çalıştırmak için, yürütme için main.py dosyasını çalıştırın. Başlamadan önce Python'unuzda gerekli tüm paketlerin ve modüllerin kurulu olduğundan emin olun. Anaconda çalıştırıyorsanız, gerekli tüm modüller zaten kuruludur.
Genel olarak, stratejinizi şablona yazın ve test edin.
Şimdi, bu teknolojinin uygulamasını nasıl hayal ediyorum.
Sinir ağlarını kullanarak kanıtlanmış bir stratejiyi, belki de küçük bir yükseltme ile Python platformuna aktarmaya karar verildi. Bununla Python'da bulunan ML teknolojilerinin kullanımına minimum maliyetle hakim olmak, sistemi terminale bağlamak ve doğrudan çalışmaya başlamak mümkün olacak. Çünkü Benim için ana platform MOEX ve Forex yardımcı bir yapıya sahip, daha sonra konunun başında bir çalışma seçeneği olarak kabul edilmesine rağmen, öngörülebilir gelecekte sistemi MT terminaline bağlamak planlanmamaktadır. dışarı.
Ancak forumda, eğer isterlerse bunu yapabilecek yeterli sayıda uzman var. Ayrıca, Python'un C API'si çok daha basittir.Yerel uzmanların başarıyla başa çıktığı aynı R'nin API'si ile.
Konunun görevlerinin tam olarak tamamlandığı düşünülebilir.
Dosyalar:
Public.zip  683 kb