Pluton Otomatik Forex İşlem Robotu

Uzunca bir süreden sonra herkese yeniden selamlar, sevgiler. Bu zaman süreci içerisinde işlerimden dolayı piyasanın çok içerisinde olamasam da çok yakından takip etmeye çalıştım piyasayı, olanı biteni. Tabi EA programlama sürecinden hiç elimi çekmedim, bir çok sistem geliştirip test ettim. Otomatik İşlem robotları için algoritma tasarlamak ve piyasanın tüm volatilitesine karşı kazançlı çıkarmak ciddi zor iş daha öncelerde söylediğim gibi. Robot tasarlarken yüzlerce varyasyon oluşumunu modellemek ve sonuçları için bir çok kriteri elemekte zaten işin çabası. Her şeyden önce volatilitesi, momentumu ve trendi farklılık gösteren piyasa enstrümanları için tasarım yaparak bunun sonucunda bir sistem üretmeyi başaramamakta var. Piyasada bu işleri yapmaya çalışanlar için sonucun %90‘ı negatif olsa bile bu kadar kod geliştirmeden sonra doğru yol için adım atmak ve testlerden sistematik olarak başarılı çıkmak kendi adıma beni sevindirdi.

Major paritelerin başında gelen EURUSD, USDJPY ve GBPUSD için sorunsuzca kullanılabilen Geri Çekilme (DD) seviyesi oldukça az ve toplam süreçte iyi kazançlar üretebilecek bir yapı geliştirmeyi başardım. Otomatik Forex sistemlerinin test, işlem ve manuel müdahale süreçlerine girmeyeceğim. Pluton EA tarafından otomatik olarak açılan emirleri iyi kar gördüm kapattım diyerek manuel müdahale etseniz bile yeni bir en iyi işlem olasılığı yakalayana kadar algoritması fiyat parametresi üzerinde gerekli hesaplamaları yapıyor. RSI, CCI, MACD vs gibi osilatör mantığını algoritmanın içerisine katmadım. Kod olarak testleri gerçekleştirdim ama istediğim sonuçları alamayınca kodun içerisinden çıkarttım.

Çok uzatmadan sona gelecek olursak Test verilerini aşağıda grafikler halinde yayınlıyorum, Pluton EA çalışır halde bir yapı olmasına karşın, şu an için anlık piyasa koşullarında ki testleri de gerçekleştirerek sisteme ekstra yenilikler ve güncellemeler katmayı düşünüyorum.

2017 başından bugüne kadar olan süreçte Euro, Yen ve Sterlin ciddi bir volatilite sergilediler. Bu zaman süreci içerisindeki performansları bir çok EA ve Trader’ın canını yaktı. Test sonuçlarında Pluton EA Stop Out olmadan sonuç vermeyi başarıyor. Hangi zaman diliminde kullanırsanız kullanın sorun teşkil etmiyor.

Euro Dolar 01.01.2017 – 12.04.2018 Performansı (Varlık 2000$ 0.30Lot Piramit İşlem)

Dolar Japon Yeni 12.04.2017 – 12.04.2018 Performansı (Varlık 2000$ 0.30Lot Piramit İşlem)
Sterlin Dolar 12.04.2017 – 12.04.2018 Performansı (Varlık 2000$ 0.30Lot Piramit İşlem)

 

Yapay Zeka Girdi Katmanı Oluşturmak

Yapay Zeka (YZ) ile ilgili araştırmalar yaparak konunun içerisine girdikçe YZ ‘nin aslında bir Paradoks olduğunu düşünmeye başladım. Biyolojik taraftaki cevaplanamamış sorular bu düşüncelerimi perçinledi. Fakat daha derinlere girmeden benim kullanmak istediğim YZ’nin sadece bir “Tahmin Metodu” olduğunu ve bana işlemlerimde yön göstermede kullanmam gerektiğini anladım. YZ üretmek çok karışık bir konu, Forex ‘te YZ kadar karışık bir konu olunca işler bazen içerisinden çıkılmayacak duruma dönüşebiliyor. Beni yanlış anlamayın fakat YZ konusu ben çok iyi yazılımcıyım, Forex ‘i çok iyi biliyorum diyenlerin bile sıkılacağı bir konu bence. Bir Veri Ambarı (BigData) oluşturmak ve bu veri ambarı içerisinde Veri Madenciliği kullanmak bunu normal PC’ler ve bizim internet alt yapımızla gerçekleştirmek ömür törpüsü oluyor. Bu konuyu aşmak ise ciddi maddi güç gerektiriyor. (Robotun Sistem eksikleri yüzünden hatalı işleme düştüğü yada yanlış işleme girdiği çok zaman oldu belirtmek isterim)

Uzun süredir YZ ile ilgili kod geliştirmesi yapmadım sadece araştırıyorum ve notlar alıyorum. Bir çalışma düzeni oluşturmadan yap-boz yaparak sonuç üretilmeyeceği çok açık. Kısaca Finansal piyasalarda bir Tahmin Sistemi oluşturmak için yapmamız gerekenleri anlatmaya çalışacağım;

Otomatik alım/satım yapan yada size al/sat sinyali üreten basit bir sistemimiz olduğunu düşünelim. YZ ‘nin ilk önce sizin ne yaptığını bilmesi gerekiyor. Bunu için oluşturulan Yapay Sinir Ağı (YSA) ‘nın eğitilmesi gerekli. 2 metodumuz var yönlendirilmeli (öğretici ile) ve yönlendirmesiz eğitilme (Genetik Algoritmalar Evrimsel öğrenme ile). Biz öğretici ile öğrenme mantığını kullanacağız. Bizler bir enstrümanın yada bir hisse senedinin hareketlerini izler ve göstergelere, fiyat hareketlerine göre karar veririz. (genel olarak) Burada Girdi Katmanı’nı oluşturmak için bir öğrenme algoritmasına ihtiyaç duyacağız. Bu algoritma istediğiniz verileri (fiyatlar, tickler, volumler, hareket hızları vs.) Girdi olarak kayıt edecek bir fonksiyon yada fiyat hareketlerinin algoritmik (matematiksel) desenlerini çıkaran bir sistemde olabilir. (bu yapı sizin kuracağınız mantıkta olmalı) Sonuçta veri olmadan YZ öğrenmeye başlayamaz. Girdi Katmanı ‘nı bu şekilde oluştururken veri ambarına (veri tabanı diyelim ki anlam kargaşası oluşmasın) verileri ağırlık değerleriyle kayıt etmemiz gerekli. (YZ’nin normal mantığına göre) Bu ne demek oluyor diye soracak olursanız Çıktı Katmanın’daki Çıktı ile olması gereken değer arasındaki farkı minimize etmek için kullanılan bir mantık. Fakat burada karşılaşacağımız sorun biz Tahmin Sistemi kurduğumuz için olması gereken Çıktı hakkında hiç bir tahminimiz veya bilgimiz yok. Bu yüzden ağırlık çarpanlarını bir yana atıyoruz. Oluşturduğumuz sistemde verileri Girdi Katmanına göndererek (isterseniz bu katmanda verileri sisteminize göre işleyebilirsiniz.) Veri Ambarını yani YZ’nin bilmesi gereken verileri işleyeceği veri bütünlüğünü kurmuş oluyoruz. Tabi bu veriler işlem yaptığınız parite, emtia yada hissenin 3-5 fiyat hareketi olmamalı. Belki günlerce, haftalarca sisteminize göre YZ’nin öğrenmesi için Girdi Katmanına kayıt göndermelisiniz. Burada Öğrenme Fonksiyonu haricinde Katmanlar arası Transfer Fonksiyonu, İleri ve Geri Besleme sistemleri devreye girmekte. Veri işlenirken oluşan hatalar ve YZ’nin bunu öğrenmesi için bir Geri Besleme Katmanı oluşturabilirsiniz. Geri Besleme YSA’nın hataları öğrenmesine ve tekrarlamamasına yardımcı olacaktır. Söylediğim gibi konu çok karmaşık ve detaylı.

Bu kadar kavram kargaşasını anlattıktan sonra kendi sistemim için yazdığım uygulamadan kısaca bahsedeyim ki, senin sistemin ne yapıyor demeyin. Ben Veri Ambarı olarak domainim üzerinde bir mySQL veri tabanı oluşturdum. EURUSD paritesinde işlem yaptığım için her tick verisini ve  bir algoritmayla fiyat hareketlerinin matematiksel karşılığını çıkarıp bu değeri Master Value olarak ilgili tabloma kayıt ediyorum. Günde bazen 100.000 tickin üzerinde veri girişi oluyor tabloya. Bu işlemi AWS (Amazon Web Server) üzerinde server açıp bir Nero Bot kodlayarak gerçekleştirdim. Nero Bot’um EURUSD paritesindeki gerekli değerleri yazdığım bir API ile veri tabanına sorunsuz şekilde gönderiyor. Bu işlemler benim öğrenme algoritmamı ve Girdi Katmanı’mı oluşturuyor. (Şuan için 6milyona yakın tick value mevcut). Sistemim için Tahmin Metodum burada yürümeye çalışıyor. Fakat bu sistemin eksikleri mevcut YZ buradaki fiyat hareketlerinin neye bağlı, neden hızlı veya yavaş olduğunu bilmiyor. Bunu öğrenmesi için Ekonomik Takvim ile ilişkilendirmem gerekiyor. Örneğin bir TDİ veya PMI verisindeki hareket hızını ve veriye göre yönünü öğrenirse Tahmin/İşlem farklılığı oluşturabilir.

YZ üretmek için gerekli olan YSA üzerindeki Girdi Katma’nının oluşumunu bu şekilde özetlemek istedim. Sonraki YZ makalelerinde Gizli Katman ve Çıktı Katmanı (önerme/tahmin) hakkında yazacağım. Bu arada Yapay Zeka hiç bir zaman dünyayı ele geçiremez çok rahat olun 🙂