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
Python'da Kanal Çıkışı Göstergesi
Python'da Kanal Çıkışı Göstergesi
MERHABA! Bugün, bir algoritma tarafından oluşturulan fiyat kanalı koparma örneklerine derinlemesine bakacağız. Daha sonra, aşağıdaki açıklamadaki bağlantıdan ücretsiz olarak indirebileceğiniz kodu size göstereceğim. Fiyat kanalı kırılmasının ne olduğunu anlayarak başlayalım.
Fiyat kanalı kırılması, tüccarlar tarafından fiyattaki potansiyel kırılmaları belirlemek için kullanılan bir teknik analiz aracıdır. Belirli bir süre boyunca fiyatın yüksek ve düşük noktalarını temsil eden fiyat hareketi etrafında bir kanal çizerek çalışır. Fiyat bu kanalın dışına çıktığında, potansiyel bir trend değişikliğine veya bir pazar fırsatına işaret edebilir.
İşin ilginç yanı, Python kullanarak kanalları ve olası çıkışları belirleme sürecini otomatikleştirebiliyor olmamız. Bu videoda, algoritma adımlarında size yol göstereceğim ve ticaret tercihlerinize ve üzerinde kullanacağınız varlığa göre değiştirmenize ve ince ayar yapmanıza olanak tanıyan kodu sağlayacağım.
Grafikte gösterilen örnekleri inceleyelim. Siyah yıldızlar, algoritma tarafından tespit edilen kırılmaları temsil eder. Mumların altındaki yıldızlar gelecekteki bir yükseliş trendini işaret ederken, mumların üzerindeki yıldızlar gelecekteki bir düşüş trendini gösterir. Bu kesintiler, algoritma tarafından tanımlanan kanallara dayalıdır.
Algoritmayı açıklamak için ilk örneği ele alalım. Bir düşüş trendimiz var, ardından belirli bir kanalın altında bir kırılma var. Mumun altındaki yıldız, gelecekteki bir düşüş trendini gösterir. Bu özel kanalın grafikte gösterilenden farklı olduğuna dikkat etmek önemlidir. Algoritma, kanalları önceki mumlara göre algılar.
Başka bir örnek, gelecekteki bir yükseliş trendinin sinyalini veren bir kanalın üzerinde bir kırılmadır. Algoritma tarafından tespit edilen kanallarla bu kırılmaları ve ilişkilerini gözlemleyebiliyoruz. Algoritma üç algılama noktası kullanır: pivot noktaları, kanal algılama ve koparma algılama.
İlk olarak, komşu mumlara kıyasla yüksek değerlere sahip mumlar veya komşu mumlara kıyasla düşük değerler olan pivot noktalarını tespit eder. Algoritma, pivot yüksekler veya alçaklar olarak her iki tarafta iki mum olup olmadığını kontrol eder. Bu pivot noktaları, kanalları tanımlamak için uygun hatlar için referans noktaları olarak işlev görür.
Daha sonra, algoritma çizgileri pivot yüksek ve alçak noktalarına uydurarak kanalı oluşturur. Bu adım, kanalın üst ve alt sınırlarını tanımlar. Kanal, potansiyel fiyat hareketi aralığını temsil eder.
Üçüncü aşama, koparma tespitidir. Algoritma, mevcut mumu kanalla karşılaştırarak bir kırılma olup olmadığını belirler. Koparma koşulu, açılış ve kapanış fiyatlarının kanala göre konumuna göre tanımlanır. Bu videoda, kanalın üstünde ve altında kırılmaları ele alıyoruz.
Python'da, alım satım tercihlerinize ve alım satım yaptığınız varlığa dayalı olarak koparma koşullarını değiştirme ve kendi kalıplarınızı tanımlama esnekliğine sahipsiniz. Bağlantıda verilen kod, denemeniz için bir başlangıç noktası görevi görecektir.
Algoritma, günlük zaman çerçevesi ve Euro/ABD doları fiyatları kullanılarak gösterilen örneklere göre iyi çalışıyor gibi görünüyor. Bununla birlikte, daha fazla test ve analiz gereklidir. Şimdi koda geçelim.
Jupyter Notebook dosyasında gerekli kütüphaneleri içe aktarıyoruz: pandas, numpy, plotly ve scipy.stats. Ayrıca 2003'ten 2023'e kadar Euro/ABD doları günlük şamdan fiyatlarını içeren bir CSV veri dosyasını da içe aktarıyoruz.
Kod, bir mumun bir pivot noktası olup olmadığını saptamak için bir işlev tanımlayarak başlar. İki bağımsız değişken gerekir: test edilecek mum indeksi ve dikkate alınacak komşu mumların sayısını belirleyen pencere parametresi. İşlev, mevcut mumun en yüksek ve en düşük değerlerinin, komşu mumların en yüksek ve en düşük değerlerinden daha yüksek veya daha düşük olup olmadığını kontrol eder. Pivot tipine (yüksek, düşük veya her ikisi) göre etiketler (0, 1, 2 veya 3) atar.
Bir Şamdan grafiğindeki fiyat kanalı kırılmalarını tespit etmek için şu adımları takip edebilirsiniz:
Genel fikir, belirtilen arka mum sayısı içindeki fiyat hareketlerini kapsayan trend çizgilerini belirlemektir. Bu kanallardan kopuşları tespit ederek potansiyel olarak önemli fiyat hareketlerini belirleyebilir ve bilinçli alım satım kararları verebilirsiniz.
Daha önce sağlanan kodun basitleştirilmiş bir örnek olduğunu ve özel ticaret gereksinimlerinize bağlı olarak, gereksinimlerinize uyacak şekilde kodu değiştirmeniz ve ince ayar yapmanız gerekebileceğini unutmamak önemlidir. Ek olarak, gerçek ticaret amaçları için kanal koparma tekniklerini kullanırken risk yönetimi stratejilerini, diğer göstergeleri ve ticaret yaklaşımınızla ilgili faktörleri dahil etmeyi düşünün.
ChatGPT Ticaret Stratejisi Yarışması
ChatGPT Ticaret Stratejisi Yarışması
Merhaba ve son deneyimize hoş geldiniz. Bu videoda yapay zekanın gücünü gerçek bir insan tüccarının deneyimiyle karşılaştırarak sergileyeceğim. Fiyat kanalını ele geçirme stratejisini derinlemesine inceleyeceğiz ve nasıl performans gösterdiğini görmek için yapay zeka modelimiz ChatGPT'ye meydan okuyacağız. İlginç bir şey keşfedersek bir sonraki videoda kendi algoritmamı yazıp performans sonuçlarını karşılaştıracağım. Daha sonra bu videoda kullanacağım Python kodunu da paylaşacağım. Merak ediyorsanız ve stratejimizi denemek ve genişletmek istiyorsanız, aşağıdaki açıklamadaki bağlantıdan indirebilirsiniz. Arkanıza yaslanın, rahatlayın ve bunun tadını çıkaralım.
Kanal kırılma göstergeleri hakkında konuştuğumuzda, genellikle mum grafik modellerini ve fraktal noktaları dikkate alırız. Koparma tipik olarak fiyat bir kanalın ötesine geçtiğinde gerçekleşir ve kırılmadan sonra trendin en azından bir süre aynı yönde devam etmesini bekleriz. Bugün, ChatGPT'nin, özellikle fiyat kanalından kaçış stratejisi için kodu bizim için üretmesini sağlamaya çalışacağız.
ChatGPT ile yaptığımız deneye dalmadan önce, bir sonraki videoda aynı stratejiyi, fiyat kanalı çıkışını programlayacağım. Bu, sonuçları karşılaştırmamıza ve programımızdaki her ayrıntı üzerinde sahip olduğumuz kontrolü vurgulamamıza olanak tanır. Öyleyse bizi izlemeye devam edin ve başlayalım.
Şimdi fiyat kırma stratejisini tanımlayarak başlayalım. Bu ticaret yaklaşımı, trend çizgileri ve grafik modelleri gibi teknik analiz araçlarını kullanarak temel destek ve direnç seviyelerini belirlemeyi içerir. Geçmişte birkaç kez test edilmiş seviyelere dikkat edin ve bu seviyelerdeki fiyat hareketini gözlemleyin. Anahtar seviyeleri belirledikten sonra, giriş ve çıkış kurallarını ayarlayabiliriz.
Giriş ve çıkış kurallarını belirlemek, stratejinin en zorlu kısmıdır. Bir ticarete hangi fiyat seviyesinden gireceğinize ve kar elde etmek veya potansiyel kayıpları sınırlamak için ne zaman çıkacağınıza karar vermeyi içerir. Bir pozisyon açtıktan sonra varlığın fiyat hareketlerini izlemek çok önemlidir. Alım satımın aleyhimize olması durumunda potansiyel kayıpları sınırlamak için zararı durdur emirlerini kullanmalıyız.
Giriş kurallarını ayarladıktan ve ticareti yönettikten sonra, açık alım satımları izlememiz gerekiyor. Fiyat beklenen yönde hareket etmeye devam ederse, ek kar elde etmek için çıkış stratejimizi ayarlamayı düşünebiliriz. Bu, değişen piyasa koşullarına dayalı olarak sürekli izleme ve uyarlama gerektirir.
İşte stratejinin bir dökümü:
Temel destek ve direnç seviyelerini belirleyin: Geçmişte birçok kez test edilmiş seviyeleri belirlemek için trend çizgileri ve grafik modelleri gibi teknik analiz araçlarını kullanın. Bu seviyeler destek veya direnç görevi görür ve kanalları oluşturur.
Kaçış seviyesini tanımlayın: Kanalları belirledikten sonra, kırılma seviyesini belirleyin. Bu, fiyatın kanal sınırlarının ötesine geçtiği fiyat seviyesidir. Potansiyel bir trendin devam ettiğini gösterir.
Giriş ve çıkış kurallarını belirleyin: Bir kırılma meydana geldiğinde bir ticarete girme kriterlerini belirleyin. Bu, fiyat yükseliş eğilimi için üst kanal sınırının üzerinde veya düşüş eğilimi için alt kanal sınırının altında kapandığında olabilir. Ek olarak, olumsuz fiyat hareketlerinden korunmak için belirli bir hedef seviyesinde kar almak veya takip eden bir zararı durdurmak gibi ticaretten çıkmak için kriterler belirleyin.
Açık işlemleri izleyin: Bir işleme girildiğinde, fiyat hareketini yakından izleyin. Fiyat olumlu yönde hareket etmeye devam ederse çıkış stratejisini ayarlayın. Bu, karları korumak için zararı durdurmayı takip etmeyi veya ek kazançlar elde etmek için yeni bir hedef seviyesi belirlemeyi içerebilir.
Riski yönetin: Potansiyel kayıpları sınırlamak için risk yönetimi tekniklerini uygulayın. Bu, fiyat beklenen eğilimin tersine hareket ederse ticaretten çıkmak için önceden belirlenmiş bir seviyede bir zararı durdurma emri vermeyi içerebilir.
Sürekli uyum: Stratejiyi değişen pazar koşullarına göre uyarlayın. Fiyat kanalı koparma stratejisi, en iyi ticaret fırsatlarını yakalamak için sürekli izleme ve ayarlama gerektirir.
Bu adımları izleyerek ve bunları alım satım yaptığınız belirli pazara ve zaman dilimine uygulayarak, fiyat kanalı koparma stratejisini uygulayabilirsiniz. Stratejinin etkinliğinin çeşitli faktörlere bağlı olarak değişebileceğini ve stratejiyi gerçek zamanlı ticarette uygulamadan önce geriye dönük olarak test etmenin ve doğrulamanın önemli olduğunu unutmayın.
Python kullanarak Otomatik Riskten Korunma Stratejisi ile FOREX Izgara Ticaretinde Ustalaşın
Python kullanarak Otomatik Riskten Korunma Stratejisi ile FOREX Izgara Ticaretinde Ustalaşın
Bir önceki videoda, Forex Piyasasında ızgara ticaret sistemini test ettik ve yüksek getiri ve olağanüstü keskin bir oran ile iyi sonuçlar verdiğini gördük. Ancak, yorumlarınıza dayanarak, daha doğru bir geriye dönük test yapabilmek için bazı detayların düzeltilmesi gerektiğini fark ettik. Sonuç olarak, algoritmamızda önerilen değişiklikleri yaptık.
Izgara stratejisini detaylandırdığımız bir önceki videoyu izlemediyseniz, stratejiyi daha iyi anlamanızı sağladığı için önce onu izlemenizi tavsiye ederim. O videonun linkini aşağıdaki açıklamada bulabilirsiniz. Ek olarak, sağlanan bağlantıdan Python kodunun güncellenmiş sürümünü indirebilirsiniz.
Kod değişikliklerini uyguladıktan sonra, kullanılan parametre grubuna bağlı olarak hala potansiyel olarak tercih edilebilir bir sistemimiz var. Lütfen parametreleri optimize etmek için fazla zaman harcamadığımı unutmayın, böylece kodu indirebilir ve beğeninize göre ayarlamayı deneyebilirsiniz. Bu, risk seviyesini tercihlerinize göre ayarlamanıza izin verecektir. Keskin oranı düşürme pahasına daha fazla risk dahil edebilir veya keskin oranı artırırken risk ve getirileri azaltabilirsiniz.
Şimdi, kodun önceki sürümünde yapılan belirli değişiklikleri tartışalım. İlk olarak, kârı al/zararı durdur oranıyla ilgili parametrelerden birini kaldırdık. Bu oranın stratejinin kendisinde değiştirilmesi gerektiğini fark ettik, dolayısıyla bu noktada ayarlanmasına gerek yok. Önceki sürümde kullanılan işlevler aynı kalır.
İlk önemli değişiklik parti büyüklüğü ile ilgiliydi. Önceki sürümde, parti büyüklüğü, mevcut öz sermayenin bir yüzdesini gösteren birin altında bir değere ayarlanmıştı. Ancak bu, grid stratejisinin kurallarını ihlal ediyordu çünkü her iki yönde de farklı lot büyüklükleriyle ticaret yapıyorduk. Bunu düzeltmek için parti büyüklüğünü sabit bir değer olarak ayarladık (bu örnekte 50).
İkinci önemli değişiklik, geriye dönük test işleviyle ilgilidir. Daha önce, bir ticaret açtığımızda ve ardından zıt bir ticaret veya ters yönde bir ticaret açmaya çalıştığımızda, geriye dönük test işlevi önceki ticareti kapatıyordu. Bu, önce satıp sonra aynı miktarda satın alırsak, geriye dönük test işlevinin satış pozisyonumuzu kapatacağı anlamına geliyordu. Geriye dönük testin iki işlemi bağımsız olarak zıt yönlerde açmasına izin vermek için, koruma parametresini true olarak ayarladık. Bu, aynı varlık üzerinde aynı anda zıt yönde pozisyonlara izin verir. Ek olarak, özel siparişler parametresini yanlış olarak ayarladık, yani bir sipariş önceki siparişi iptal etmez.
Zararı durdur değerleri için, bunları grid mesafesinin 1,5 katına, kârı al ise grid mesafesinin 0,5 katına ayarlıyoruz. Kar al/zararı durdur oranı 0,5 olarak ayarlanmıştır. Lütfen bunların örnek için kullanılan rastgele parametreler olduğunu unutmayın. Gerçek bir sistemde, strateji kar elde etmek için piyasa dalgalanmasına dayandığından, zararı durdurmanın karı almaktan daha fazla olmasını sağlamak önemlidir.
Bu parametreleri kullanarak, 500$'lık bir nakit hesabı ve 1'e 10'luk bir marjla, iki aylık veriler üzerinden şu sonuçları elde ettik: 13,49'luk bir getiri yüzdesi, 3,8'lik keskin bir oran ve %72'lik bir kazanma oranı. Öz sermaye eğrisi, bazı düşüş alanları ile birlikte artan bir eğim göstermektedir.
Riski azaltmak ve keskin oranı artırmak için ek nakit ile başlamayı veya marjı ayarlamayı düşünebilirsiniz. Örneğin, 1.000$ ile başlayıp 1'e 10 marjı koruyarak, getiri iki ayda %1,7'ye düştü, ancak keskin oran 4,9'a yükseldi. Bu, bu parametre değişikliği ile riskin azaldığını göstermektedir.
Bu sistemde çalışılacak birçok parametre olduğunu ve doğru dengeyi bulmanın çok önemli olduğunu unutmayın. Zararı durdur ve kar alma oranlarını değiştirmeyi de deneyebilirsiniz.
Tüm aracı kurumların riskten korunma işlemlerine izin vermediğini, yani aynı varlık üzerinde aynı anda zıt pozisyonlar açmanıza izin vermeyebileceklerini not etmek önemlidir. Bu, komisyoncuya ve konumunuza bağlı olabilir. Amerika Birleşik Devletleri'nden bazı izleyiciler, kendi bölgelerinde buna izin verilmediğini yorumlarda belirtti. Bu nedenle, politikalarıyla uyumlu olduğundan emin olmak için bu stratejiyi uygulamadan önce brokerinizle görüşmeniz önerilir.
Son olarak, geriye dönük testin bir sistemi incelemenin ilk adımı olduğunu ancak yeterli olmadığını unutmayın. Bu, işlem gören para biriminin yayılmasını içereceği ve beklenen sonuçları etkileyebileceği için, kağıt bir hesap kullanarak piyasada canlı olarak stratejiyi test etmek çok önemlidir.
Python'da Ticaret İçin Riskten Korunma Stratejisi
Python'da Ticaret İçin Riskten Korunma Stratejisi
Herkese merhaba, bugün grid ticaret stratejisini test edeceğiz. Bu strateji basitliği ile bilinir ve trendi belirlemek için herhangi bir teknik gösterge gerektirmez. Bu, eğilimi önceden tahmin etmemize gerek olmadığı anlamına gelir. Izgara ticareti, aynı anda hem uzun hem de kısa yönlerde ticareti içerir, bu da onu algoritmik ticaret için uygun hale getirir.
Bu stratejiyi değerlendirmek için Python dilini kullanarak bir geriye dönük test yapacağız. Beş dakikalık bir zaman dilimiyle iki aya yayılan geçmiş verileri kullanacağız. Geriye dönük test sonuçları, test süresi boyunca öz sermayede istikrarlı bir artış olduğunu gösteriyor ve strateji, etkileyici performans oranları sağlıyor. Riske göre ayarlanmış getirileri ölçen Sharpe oranı 5,7 civarında puan alıyor.
Kodlama kısmıyla ilgileniyorsanız, aşağıdaki açıklamada verilen bağlantıdan Jupyter Notebook dosyasını indirebilirsiniz. Yazar, hobi olarak ticarete ilk başladıklarında bu sistemi kullanarak küçük bir hesabı hatırı sayılır bir meblağ haline getirdiğini hatırladığından, stratejinin yazar için kişisel bir önemi vardır.
Izgara ticaret stratejisinin arkasındaki kavram, grafikte bir fiyat seviyeleri tablosu oluşturmaktır. Fiyat bu ızgara çizgilerini geçtiğinde, hem uzun hem de kısa pozisyonlar açıyoruz. Kâr alma seviyesi, her pozisyon için bir sonraki kılavuz çizgisinde belirlenir. Örnek bir grafikte gösterildiği gibi, strateji ilk uzun ve kısa pozisyonları açmayı ve ardından bir sonraki ızgara seviyesinde kazanan pozisyonu kapatmayı içerir. Daha sonra, bir ızgara çizgisinin her geçişinde biri uzun diğeri kısa olmak üzere iki ek pozisyon açılır.
Bu stratejiyle ilgili zorluklardan biri, şebekenin kenarlarında açık kalan kaybedilen işlemleri yönetmektir. Bazı pozisyonlar hiçbir zaman kar al değerlerine ulaşamayabilir ve bu da sistemde zorluk yaratır. Bu durumla başa çıkmak için çeşitli yaklaşımlar kullanılabilir. Bazı tacirler, işlem gününün sonunda kalan işlemleri kapatmayı seçebilirken, diğerleri birkaç saatte bir genel kâr durumunda olup olmadıklarını hesaplayabilir ve yeni bir ızgarayla yeniden başlamak için her şeyi kapatabilir. Çözüm, zaman çerçevesi, izin verilen maksimum paralel işlem sayısı ve ızgara mesafesi gibi ek parametrelere bağlı olacaktır.
Kodlama bölümünde yazar, Ortalama Gerçek Aralığı (ATR) kullanarak her ticaret için bir zararı durdur değeri uygular. Bu durdurma kaybı değeri, başlangıçta şebeke mesafesine göre hesaplanır, ancak daha sonra onu iyileştirmek için ATR kullanılır. ATR, alım satımların yapıldığı sırada piyasanın oynaklığını dikkate alır. Yazar, bunun en iyi yaklaşım olmayabileceğinden bahsediyor ve strateji için en uygun senaryoyu bulmak için farklı parametrelerle deney yapmayı teşvik ediyor.
Bu sistemin birçok durumda çalışabilmesinin nedeni, piyasa gürültüsünden yararlanmasıdır. Piyasa şebeke etrafında salındığı sürece, strateji fiyat dalgalanmalarından faydalanır ve hem uzun hem de kısa yönlerde pozisyonlar açar. Sistemin, daha fazla fiyat dalgalanmasının ve dolayısıyla potansiyel olarak daha yüksek kârın olduğu daha düşük zaman dilimlerinde daha iyi performans göstermesi bekleniyor.
Strateji iki avantaj sunar. Birincisi, belirli bir trendi takip etmediği için trendi tahmin etme ihtiyacını ortadan kaldırır. İkinci olarak, açık kaybetme işlemlerini yönetmeye odaklanarak ticaret sürecini basitleştirir. Bu stratejide, ızgara mesafesi olan tek bir ayarlanabilir parametre vardır. Ancak, alınıp satılan belirli bir varlık için uygun zaman çerçevesini ve ızgara mesafesini seçmek çok önemlidir.
Sağlanan Jupyter Notebook dosyası, stratejinin Python'da uygulanmasını gösterir. Kod, veri alımı için yfinance, veri işleme için pandas ve numpy ve ATR'nin hesaplanması gibi teknik analiz işlevleri için pandas_ta dahil olmak üzere çeşitli kitaplıkları içe aktarır. EUR/USD çifti için veriler, belirli bir zaman dilimi kullanılarak indirilir.
Şebeke mesafesi, karı al/zararı durdur oranı ve şebekenin orta fiyatı değişkenler olarak tanımlanır. Orta fiyat, şebekenin etrafında inşa edildiği ortalama fiyat olarak hizmet eder. Generate_grid() işlevi, orta fiyat ve ızgara mesafesine dayalı olarak ızgara seviyelerini oluşturmak için tanımlanır. Fonksiyon, bir döngü kullanarak ızgaranın üst ve alt seviyelerini hesaplar.
Ardından, strateji mantığı uygulanır. Geriye dönük test, başlangıç bakiyesi, pozisyon boyutu ve stoploss seviyesi gibi değişkenleri başlatarak başlar. Geçmiş verilerdeki her çubuğu yinelemek için bir for döngüsü kullanılır.
Döngü içinde, herhangi bir ızgara seviyesini geçip geçmediğini belirlemek için mevcut fiyat kontrol edilir. Bir çarpı oluşursa, hem uzun hem de kısa yönlerde yeni pozisyonlar açılır. Kar al ve zararı durdur seviyeleri, şebeke seviyelerine ve zararı durdur mesafesine göre belirlenir.
Döngü ayrıca herhangi bir açık pozisyonun kar alma veya zararı durdurma seviyelerine ulaşıp ulaşmadığını kontrol eder. Bir pozisyon herhangi bir seviyeye ulaşırsa kapatılır ve ilgili kar veya zarar kaydedilir.
Geriye dönük testin sonunda, hesap bakiyesinin zaman içindeki büyümesini gösteren özkaynak eğrisi çizilir. Toplam kar, işlem sayısı, kazanma oranı ve Sharpe oranı dahil olmak üzere performans ölçütleri hesaplanır ve görüntülenir.
Şebeke alım satım stratejisi geçmişe dönük testte umut verici sonuçlar vermiş olsa da, herhangi bir alım satım stratejisini gerçek ticarette uygulamadan önce kapsamlı bir şekilde değerlendirmek ve doğrulamak önemlidir. Geriye dönük test, geçmiş performansın değerlendirilmesine yardımcı olur, ancak gelecekteki karlılığı garanti etmez.
Uygulama ayrıntılarını tam olarak anlamak ve kodu keşfetmek için, açıklamada verilen Jupyter Notebook dosyasını indirmenizi tavsiye ederim. Not defteri, süreç boyunca size yol gösterecek ayrıntılı yorumlarla birlikte kodun tamamını içerir.
Alım satımın risk içerdiğini unutmayın ve herhangi bir yatırım kararı vermeden önce her zaman profesyonel bir finansal danışmana danışmanız önerilir.
Python'da Ticaret Botu Nasıl Yapılır?
Python'da Ticaret Botu Nasıl Yapılır?
Merhaba, bu videoda size Python kullanarak ticaret stratejinizi nasıl otomatik hale getirebileceğinizi göstereceğim. Başka bir deyişle, belirli bir stratejiyi izleyerek sizin adınıza otomatik olarak işlem gerçekleştirebilen kendi ücretsiz işlem botunuzu oluşturma sürecinde size rehberlik edeceğim. Kullanacağım kod aşağıdaki açıklamada bulunan linkten indirilebilir, bu yüzden video ile birlikte takip edebilir ve daha sonra dosyayı indirerek istediğiniz gibi kullanabilirsiniz.
Bu videoda göstereceğim şey, bir Python işlevi olarak uygulanabilecek herhangi bir ticaret stratejisi için işe yarayabilir. Stratejinizi geçmiş veriler üzerinde geriye dönük olarak test etmek yerine, canlı piyasa verileri üzerinde test etmenin mükemmel bir yolu olabilir. Stratejinizi gelecekteki veya canlı veriler üzerinde test etmek istiyorsanız, bu videoda sunulan teknikleri kullanabilirsiniz.
Jupyter Notebook dosyamızı açarak başlayalım. İlk olarak, test amacıyla bazı geçmiş verileri indireceğim. Bu verileri canlı ticaret için kullanmayacağımıza dikkat etmek önemlidir; esas olarak sinyal fonksiyonlarımızı test etmek içindir. Verileri indirmek için YFinance modülünü kullanıyorum ve 15 dakikalık bir zaman dilimiyle belirli iki tarih arasındaki Euro - ABD Doları değişim verilerini alıyorum.
Akılda tutulması gereken bir şey, 15 dakikalık aralık gibi düşük zaman dilimleri için veri indirirken Yahoo Finance'in yalnızca son 60 günlük verinin indirilmesine izin verdiğidir. Bu nedenle, bir kerede 60 günden fazla indiremiyoruz ve bunlar, geçerli tarihten itibaren son 60 gün olmalıdır. İndirilen dosyayla ilgili herhangi bir sorunla karşılaşırsanız, lütfen belirtilen başlangıç ve bitiş tarihlerini tekrar kontrol edin.
Verileri indirdikten sonra, indirilen satırları kontrol ederek test edebiliriz. Koddaki '-1'i kaldırarak, yaklaşık 3973 satırdan oluşan veri çerçevesinin tamamını görüntüleyebiliriz. Veri çerçevesi tarih, saat, açılış, yüksek, düşük, kapanış ve düzeltilmiş kapanış fiyatları için sütunlar içerir. Bu videoda hacim verilerini kullanmayacağız, ancak gerekirse stratejinize dahil etmekten çekinmeyin.
Bir sonraki adım, alım satım sinyallerinin üretilmesinden sorumlu bir fonksiyon olan sinyal oluşturucumuzu tanımlamaktır. Bu işlev girdi olarak bir veri çerçevesini alır çünkü ticaret botumuz için canlı veri akışı yaparken bir veri çerçevesi alır ve onu bu işleve besleriz. İşlev, daha sonra satın alma sinyali, satış sinyali veya net bir model olmaması gibi mevcut bir sinyal olup olmadığını belirleyecektir. Bu örnekte, yutan mum kalıplarını tespit etmeye odaklanacağız, ancak lütfen bunun tam bir ticaret stratejisi olmadığını unutmayın. Bu videonun amacına hizmet ediyor ve bu işleve kendi sinyal oluşturucu stratejinizi ekleyebilirsiniz.
Sinyal oluşturucu işlevi, sırasıyla -1 ve -2 endeksini kullanarak mevcut mumun ve önceki mumun açılış ve kapanış fiyatlarını okur. Bir yutan düşüş formasyonunun veya yutan bir yükseliş formasyonunun tespit edilmesi gibi fonksiyonda tanımlanan koşullara bağlı olarak, satış için 1, alış için 2 veya sinyal yoksa 0 sinyal değeri döndürür. İşlevin doğru çalıştığını doğrulamak için birkaç satır kod kullanarak test edebiliriz. Veri çerçevesi satırları üzerinde döngü yaparak ve sinyal üreteci işlevini kullanarak her satırı sarmalayan desenler için kontrol ederek, üretilen sinyalleri bir listede saklayabiliriz. Daha sonra bu listeyi test veri çerçevesine ek bir sütun olarak ekleyebiliriz. Veri çerçevesinin yazdırılması, eklenen sütunu gösterir ve bir değer sayımı gerçekleştirerek, veri kümesinde bulunan her bir sinyal türünün sayısını görebiliriz.
Lütfen bunun, bu videonun amacı için basitleştirilmiş bir örnek olduğunu ve özel ihtiyaçlarınıza dayalı kapsamlı bir ticaret stratejisi geliştirmenin çok önemli olduğunu unutmayın.
Artık sinyal oluşturucu işlevimizi yerine getirdiğimize göre, bir sonraki adım ticaret botunu tanımlamaktır. Alım satım botu, üretilen sinyallere dayalı olarak alım satımları yürütmekten sorumludur. Bu örnekte, 2 sinyal değeri aldığında (satın alma sinyalini gösterir) satın alan ve 1 sinyal değeri aldığında (satış sinyalini gösteren) satan basit bir ticaret botu oluşturacağız. Yine, bu sadece basit bir örnek ve ticaret botunu özel ticaret stratejinize göre değiştirebilirsiniz.
Ticaret botu işlevi, veri çerçevesini ve üretilen sinyalleri girdi olarak alır. Portföy bakiyesini başlatır ve şu anda açık bir pozisyonumuz olup olmadığını takip etmek için bir pozisyon bayrağı tutar. Ardından, veri çerçevesinin her satırı üzerinde döngü yapar, sinyal değerini kontrol eder ve karşılık gelen satın alma veya satma eylemini gerçekleştirir.
Bir satın alma sinyali alındığında ve açık pozisyonumuz olmadığında, ticaret botu varlığın belirtilen miktarını satın alır ve maliyeti portföy bakiyesinden düşer. Ayrıca artık açık bir pozisyonumuz olduğunu belirtmek için pozisyon bayrağını ayarlar. Bir satış sinyali alındığında ve açık bir pozisyonumuz olduğunda, ticaret botu tüm pozisyonu satar ve satış tutarını portföy bakiyesine ekler. Ardından, açık pozisyonumuz olmadığını belirtmek için pozisyon bayrağını sıfırlar.
Ticaret botunu test etmek için, test veri çerçevesi ve üretilen sinyallerle işlevi çağırabiliriz. Başlangıç portföy bakiyesini ve alınacak veya satılacak varlığın miktarını da belirleyebiliriz. Alım satım botu işlevini çalıştırdıktan sonra, sonucu görmek için nihai portföy bakiyesini yazdırabiliriz.
Bu örnekte, işlem maliyetlerini, kaymayı veya gerçek ticaret senaryolarını etkileyebilecek diğer faktörleri dikkate almıyoruz. Kendi ticaret botunuzu ve stratejinizi geliştirirken bu faktörleri dikkate almanız önemlidir.
Son olarak, canlı ticaret için bu kodu nasıl uygulayabileceğinizi tartışalım. Şimdiye kadar geliştirdiğimiz kod, stratejinizi geçmiş veriler üzerinde geriye dönük test etmek ve test etmek için uygundur. Canlı ticaret için uygulamak üzere, onu gerçek zamanlı bir veri akışına ve komisyoncunuz veya borsanız tarafından sağlanan bir ticaret API'sine bağlamanız gerekir. Bu, veri akışını yönetmeyi ve ticaret botu tarafından üretilen sinyallere dayalı olarak gerçek zamanlı ticaret emirleri vermeyi içerir.
Alpaca, Binance veya Interactive Brokers API gibi gerçek zamanlı veri akışlarına ve ticaret API'lerine bağlanmanıza yardımcı olabilecek çeşitli Python kitaplıkları ve paketleri mevcuttur. Gereksinimlerinize en uygun olanı araştırmanız ve seçmeniz ve seçtiğiniz borsa veya komisyoncu ile iyi entegre olmanız gerekir.
Unutmayın, canlı ticaret gerçek para gerektirir, bu nedenle canlı ticaret için dağıtmadan önce kodunuzu ve stratejinizi simüle edilmiş bir ortamda kapsamlı bir şekilde test etmeniz çok önemlidir. Küçük pozisyonlarla başlayın ve alım satım botunuzun performansına güven kazandıkça riskinizi kademeli olarak artırın.
Bu video için bu kadar! Umarım Python kullanarak ticaret stratejinizi nasıl otomatikleştireceğinizi anlamanız açısından bunu faydalı bulmuşsunuzdur. Açıklamadaki bağlantıdan kodu indirmeyi ve özel ihtiyaçlarınıza ve stratejinize göre değiştirmeyi unutmayın. Herhangi bir sorunuz varsa, bunları aşağıdaki yorumlarda bırakmaktan çekinmeyin. İzlediğiniz için teşekkürler ve mutlu ticaret!
Python Backtest: VWAP, Bollinger Bantları ve RSI Göstergeleri ile Karlı Scalping Stratejisi
Python Backtest: VWAP, Bollinger Bantları ve RSI Göstergeleri ile Karlı Scalping Stratejisi
Herkese merhaba! Bugün, bir kazananımız olduğunu duyurmaktan heyecan duyuyorum. Bu videoda V-WAP (Hacim Ağırlıklı Ortalama Fiyat) Bollinger Bantları ve doğrulama için RSI (Göreceli Güç Endeksi) kullanarak bir ölçeklendirme stratejisi paylaşacağım. Bu stratejiyi paylaşmadan önce, etkili olduğundan emin olmak için kapsamlı bir şekilde geriye dönük testler yaptım.
Öncelikle, bunun bu kanalda sergilediğimiz ilk ölçeklendirme stratejisi olduğunu belirtmek isterim. Ölçekleme, daha düşük zaman dilimlerindeki gürültülü veriler nedeniyle algoritmalar için zorlayıcı olabilir. Ancak, bu stratejinin bu zorlukların üstesinden geldiğine inanıyorum.
Bu kanalda yeniyseniz açıklamadaki linkten Python kodunu indirebilirsiniz. Abone olarak ve fikirlerinizi yorum olarak paylaşarak bize destek olmayı unutmayın. Görüşleriniz değerlidir.
Üç yıllık geriye dönük testten sonra, bu stratejinin toplam getirisi yaklaşık yüzde 300'dür. Bu strateji hakkında özellikle sevdiğim şey, yaklaşık 51 dakika olan ortalama ticaret süresidir. Bu, onu şimdiye kadar gösterdiğimiz en hızlı ticaret kapanış stratejisi yapıyor. Hızlı işlem kapatmanın avantajı, gerçekleştirilen işlemlerin sonuçlarını hemen görebildiğiniz için gecelik ücretlerin ve stresin azalmasıdır.
Yorumlar kısmında birisi Sharpe oranını sormuş. Onu bu stratejiye dahil ettim ve yaklaşık 1.65. Ancak, bu değerin Python kodundaki parametrelerde yapılan değişikliklerle değişebileceğini lütfen unutmayın. Farklı parametre değerleri ile denemeler yaparak Sharpe oranını maksimize edebilirsiniz.
Gelelim stratejinin detaylarına. 5 dakikalık zaman dilimini ve V-WAP eğrisini kullanıyorum. Eğilimi belirlemek için, mavi çizgiyle temsil edilen V-WAP eğrisinin sürekli olarak üstünde veya altında olacak 15 mum arıyorum. 15 mum V-WAP eğrisinin üzerindeyse, bu bir yükselişi gösterir. V-WAP eğrisinin altındaysak, bunu düşüş trendi olarak değerlendiriyorum.
Giriş pozisyonları için, uzunluğu 14 ve standart sapması 2 olan Bollinger Bantlarını kullanıyorum. V-WAP eğrisinin üzerindeki bir yükseliş trendinde, alt Bollinger Bandının altında bir mum kapandığında alım pozisyonları arıyorum. Bir düşüş trendinde, V-WAP eğrisinin altında, satış sinyali olarak bir mumun üst Bollinger Bandının üzerinde kapanmasını bekliyorum.
Sinyalleri doğrulamak için RSI kullanıyorum. RSI 45'in altındaysa, bir satın alma sinyalini onaylar. RSI 55'in üzerindeyse, bir satış sinyalini onaylar.
Kâr al ve zararı durdur seviyelerini ayarlamak için ATR'yi (Ortalama Gerçek Aralık) kullanıyorum. Geriye dönüp son yedi muma bakıyorum, ATR değerini hesaplıyorum ve stoploss mesafesini belirlemek için bunu bir katsayı ile çarpıyorum. Kâr al, zararı durdur mesafesi ile risk-ödül oranını temsil eden kârı al-zararı durdur oranı ile çarpılarak hesaplanır.
Gördüğünüz gibi, Python kodunda ayarlanabilecek birkaç parametre var. ATR uzunluğunu, katsayısını, kârı durdur-zararı al oranını ve diğer gösterge parametrelerini üç yıllık geriye dönük test döneminde stratejinin performansını nasıl etkilediklerini görmek için değiştirebilirsiniz. Kodu indirmekten ve kendi başınıza denemekten çekinmeyin.
Python kodunda veri yükleme, temizleme, teknik göstergeler (V-WAP, RSI, Bollinger Bands) ekleme, toplam sinyali hesaplama ve sinyalleri fiyat tablosunda görselleştirme için gerekli tüm adımları sağladım. Kod ayrıca, ATR'yi hesapladığım, zararı durdur ve kârı al seviyelerini belirlediğim ve işlemleri yürüttüğüm geriye dönük test bölümünü de içeriyor.
Geriye dönük test sonuçlarında, yüzde 197'lik bir getiri ve 313 $'lık bir özkaynak zirvesi elde ettim. 10.000$'lık bir başlangıç sermayesi ile başlayan strateji, 19.700$'lık bir kâr üreterek 29.700$'lık nihai öz sermayeye ulaştı.
Şimdi, bu stratejinin temel performans ölçütlerini tartışalım. Kârlı işlemlerin yüzdesini temsil eden kazanma oranı yaklaşık %56'dır. Bu, gerçekleştirilen tüm işlemlerin %56'sının karla sonuçlandığı anlamına gelir. İşlem başına ortalama kar yaklaşık 33,10$ iken, işlem başına ortalama kayıp yaklaşık 23,45$'dır.
Bu stratejiyle ilişkili riski değerlendirmek için, geriye dönük test döneminde öz sermayedeki en büyük tepeden dibe düşüşü ölçen maksimum düşüşe bakabiliriz. Bu strateji için maksimum dezavantaj yaklaşık %9'dur ve orta düzeyde bir risk olduğunu gösterir.
Bu performans ölçümlerinin geçmiş verilere dayandığını ve geçmiş performansın gelecekteki sonuçları garanti etmediğini unutmamak önemlidir. Pazar koşulları değişebilir ve stratejiyi sürekli olarak izlemek ve mevcut pazar dinamiklerine uyarlamak çok önemlidir.
Özetle, V-WAP, Bollinger Bantları ve RSI kullanan bu ölçeklendirme stratejisi, geriye dönük test döneminde toplam %300 getiri ve 51 dakikalık ortalama işlem süresi ile umut verici sonuçlar verdi. Ancak, herhangi bir stratejiyi gerçek ticarete uygulamadan önce kapsamlı bir şekilde test etmek ve doğrulamak ve işlem maliyetleri, kayma ve piyasa koşulları gibi faktörleri göz önünde bulundurmak önemlidir.
Unutmayın, ticaret doğal riskler içerir ve canlı ticarete girmeden önce her zaman kendinizi eğitmeniz, risk yönetimi uygulamanız ve profesyonel tavsiye almayı düşünmeniz önerilir. Umarım bu stratejiyi anlayışlı bulursunuz ve daha fazla keşfetmek ve beğeninize göre özelleştirmek için açıklamada verilen Python kodunu indirmekten çekinmeyin.
Herhangi bir sorunuz varsa veya daha fazla açıklamaya ihtiyacınız varsa, lütfen sormaktan çekinmeyin. Mutlu ticaret!
Ticaret Sistemleri İçin Python'da Heiken Ashi Mumları
Ticaret Sistemleri İçin Python'da Heiken Ashi Mumları
Bugün, Python'da Hiken Ashi mumları ekleme sürecini inceleyeceğiz ve bu mumları kullanarak ilgili iki stratejiyi keşfedeceğiz. Hiken Ashi mumları, ticarette tipik olarak kullanılan normal mum çubuklarından elde edilir. Her Hiken Ashi mumu, belirli formüller kullanılarak hesaplanır. Heiken Ashi kapanış fiyatı, mevcut mumun açılış fiyatı, yüksek, düşük ve kapanış fiyatının ortalaması alınarak elde edilir. Heiken Ashi açılış fiyatı, daha önce hesaplanan Heiken Ashi mumunun kapanış değerinden elde edilir. Heiken Ashi yüksek değeri, normal mum çubuğunun yüksek değeri, Heiken Ashi mumunun açılışı veya Heiken Ashi mumunun kapanış değeri arasındaki maksimum değerdir. Benzer şekilde Heiken Ashi düşük değeri, mevcut mumun en düşük fiyatı, mevcut Heiken Ashi mumunun açık fiyatı veya mevcut Heiken Ashi mumunun kapanış fiyatı arasındaki minimumdur.
Özetle, yüksek ve düşük değerlerin dışında, Heiken Ashi mumu ortalama değerlerden oluşur ve Hiken Ashi grafiğine, bazı tüccarların daha az gürültülü bulabileceği normal mumlara kıyasla daha yumuşak bir görünüm verir. Bununla birlikte, Heiken Ashi mumlarının piyasanın gerçek değerleri olmadığına ve gerçek piyasa değerlerine dayanan ticaret veya geriye dönük test stratejileri için kullanılmaması gerektiğine dikkat etmek önemlidir.
Bu öğreticinin amacı, kazanan bir Heiken Ashi sistemi sunmak değil, Python'da bu mumların nasıl oluşturulacağını göstermek ve sonuçları geriye dönük test etmek için algoritmik bir strateji geliştirmektir. Heiken Ashi mumlarını kullanarak iki strateji keşfedeceğiz.
İlk strateji iki hareketli ortalama kullanır: hızlı hareket eden bir ortalama ve yavaş hareket eden bir ortalama. Trend, bu hareketli ortalamaların göreceli konumlarına göre belirlenir. Hızlı hareket eden ortalama, yavaş hareket eden ortalamanın üzerindeyse yükseliş trendini, hızlı hareket eden ortalama yavaş hareket eden ortalamanın altındaysa düşüş trendini gösterir. Strateji, Heiken Ashi mumu trend yönünde hızlı hareket eden ortalamayı geçtiğinde bir ticaret sinyali üretir. Örneğin, hızlı hareket eden ortalama, yavaş hareket eden ortalamanın altındaysa ve bir Heiken Ashi mumu, hızlı hareket eden ortalamanın üstünden altına geçerse, bir satış sinyali tetikler. Tersine, bir yükseliş trendinde, hızlı hareket eden ortalamanın altından yukarısına doğru kesişen yeşil bir Heiken Ashi mumu bir satın alma sinyalini tetikler.
Bu stratejinin ikinci varyasyonu ek bir koşul ekler. Trend yönünde bir doji mumu ve ardından kısa kuyruklu bir mum arar. Örneğin, bir düşüş trendinde, bir doji mumunu hızlı hareket eden ortalamanın üzerinde açılan ve altında kapanan kısa kuyruklu bir mum takip ederse, bir satış sinyali tetiklenir. Bu mumlarda uzun fitillerin veya kuyrukların olmaması, analiz edilen trende bağlı olarak güçlü bir aşağı veya yukarı momentumu gösterir.
Her iki stratejinin de optimal zaman dilimini belirlemek, uygun stop-loss pozisyonlarını tanımlamak ve etkili çıkış stratejileri tasarlamak gibi kendi zorlukları vardır. Bu yönler, stratejilerin karlılığını ve başarısını önemli ölçüde etkileyebilir.
Bu stratejileri Python'da uygulamak için Jupyter Notebook kullanacağız. Gerekli kitaplıkları içe aktararak ve 2012'den 2022'ye kadar Russell 1000 endeksi için stok verilerini indirerek başlıyoruz. Gereksiz sütunları çıkardıktan sonra, Hiken Ashi kapanış ve açılış fiyatlarının yanı sıra Heiken Ashi yüksek ve düşük değerlerini hesaplıyoruz. Daha önce açıklanan formüller. Bu sütunları veri çerçevemize ekliyoruz.
Ardından, pandas teknik analiz paketini kullanarak hareketli ortalamalar ve Göreceli Güç Endeksi (RSI) gibi ek teknik göstergeler ekleyebiliriz. Bu, Heiken Ashi mumlarını ve ilgili göstergeleri bir grafik üzerinde görselleştirmemizi sağlar. Artık alım satım sinyallerimizi ve zarar durdurma seviyelerimizi tanımladığımıza göre, geriye dönük test sürecine devam edebiliriz. Bir sonraki adım, giriş ve çıkış noktalarına dayalı olarak her ticaret için getirileri hesaplamaktır.
Getirileri hesaplamak için öncelikle her ticaret için giriş ve çıkış fiyatlarını belirlememiz gerekir. Bir alım pozisyonu için giriş fiyatı, alım sinyali tetiklendiğinde mumun kapanış fiyatıdır. Çıkış fiyatı, mevcut mum ile önceki iki mum arasındaki, zararı durdur seviyesi tarafından belirlenen en düşük fiyattır.
Benzer şekilde, bir satış pozisyonu için giriş fiyatı, satış sinyali tetiklendiğinde mumun kapanış fiyatıdır ve çıkış fiyatı, mevcut mum ile önceki iki mum arasındaki en yüksek fiyattır.
Giriş ve çıkış fiyatlarına sahip olduğumuzda, aşağıdaki formülü kullanarak getirileri hesaplayabiliriz:
Getiri = (Çıkış Fiyatı - Giriş Fiyatı) / Giriş Fiyatı
Daha fazla analiz için iadeleri "trade_returns" adlı bir listede saklayacağız. Ardından, stratejinin zaman içindeki genel performansını izlemek için kümülatif getirileri hesaplamamız gerekir. Bu, her işlemin getirisini bir önceki kümülatif getiriyle çarparak ve 1 ekleyerek yapılır. Kümülatif getiriyi hesaplamak için formül şöyledir:
Kümülatif Getiri = Kümülatif Getiri * (1 + Getiri)
Kümülatif getirileri "kümülatif_geri dönüşler" adlı bir listede saklayacağız. Son olarak, geriye dönük test dönemi boyunca stratejinin performansını görselleştirmek için kümülatif getirileri çizebiliriz.
Geriye dönük test sürecini gerçekleştirdikten ve ticaret getirileri ile kümülatif getirileri hesapladıktan sonra, ticaret stratejisinin performansını değerlendirmek için sonuçları analiz edebiliriz. Dikkate alınması gereken önemli bir ölçüt, stratejinin genel karlılığıdır. Toplam getiriyi, nihai kümülatif dönüş değerinden 1 çıkararak hesaplayabilirsiniz. Örneğin, kümülatif getiri 1,2 ise, ilk yatırımdan %20 getiri anlamına gelir.
Ek olarak, işlem başına ortalama getiri, kazanan işlemlerin sayısı, kaybedilen işlemlerin sayısı, kazanan işlemlerin yüzdesi ve maksimum düşüş gibi diğer performans ölçümlerini hesaplamak isteyebilirsiniz. İşlem başına ortalama getiri, tüm işlem getirilerinin toplamının toplam işlem sayısına bölünmesiyle elde edilebilir. Bu metrik, her ticaretin ortalama karlılığının bir göstergesidir.
Kazanan ve kaybedilen işlemlerin sayısını hesaplamak için, 0'dan büyük veya ona eşit olan işlem getirilerinin sayısını (kazanan işlemler) ve 0'dan küçük olan işlem getirilerinin sayısını (kaybeden işlemler) sayabilirsiniz. Kazanan işlemlerin yüzdesi, kazanan işlemlerin sayısının toplam işlem sayısına bölünmesi ve 100 ile çarpılmasıyla hesaplanabilir.
Maksimum düşüş, geriye dönük test dönemi boyunca kümülatif getirilerdeki en büyük tepeden dipe düşüşü ölçer. Stratejinin potansiyel riskine ve aşağı yönlü oynaklığına ilişkin içgörü sağlar. Bu performans ölçümlerini analiz ederek, ticaret stratejisinin etkinliği hakkında değerli bilgiler edinebilir ve gelecekteki kullanımı veya olası değişiklikleri hakkında bilinçli kararlar verebilirsiniz.
Geriye dönük testin tarihsel bir simülasyon olduğunu ve gelecekteki sonuçları garanti etmediğini unutmayın. Gerçek dünya senaryolarında bir ticaret stratejisi uygulamadan önce çeşitli faktörleri göz önünde bulundurmak ve kapsamlı analizler yapmak çok önemlidir.
Python'da Otomatik Alım Satım ile Hisse Senedi Alım Satım Stratejinizde Devrim Yapın
Python'da Otomatik Alım Satım ile Hisse Senedi Alım Satım Stratejinizde Devrim Yapın
Bugün, Göreceli Güç Endeksi (RSI) ve Ortalama Yön Endeksi (ADX) kullanarak uzun pozisyonlar için özel olarak tasarlanmış bir ticaret stratejisini keşfedeceğiz. Basitliğine rağmen, bu strateji umut verici sonuçlar verdi. Fikir, yorumlar bölümünde biri tarafından önerildi ve parametreler hem tanıdık hem de ikna edici görünüyordu. Bu yüzden, onu test etmeye ve oldukça tatmin edici olduğu ortaya çıkan sonuçları paylaşmaya karar verdim.
Geriye dönük test tarafından oluşturulan eşitlik eğrisi, test süresi boyunca neredeyse tutarlı bir artış sergiledi ve 360'lık bir tepe getiriye ulaştı. Bu kanalda yeniyseniz, indirebileceğiniz kodu açıklamada bulabilirsiniz. Abone olarak ve yorum bırakarak bize destek olmayı unutmayın. Tıpkı bu videonun hakkında olduğu gibi, yeni fikirler duymaktan memnunuz.
Şimdi stratejinin kendisine geçelim. İki koşul karşılandığında günlük zaman dilimini kullanacağız ve uzun bir pozisyona gireceğiz: Birincisi, iki günlük RSI aşırı satım durumunu gösteren 25'in altında olduğunda ve ikincisi, ADX (14) 20'nin üzerinde olduğunda, trend bir pazar. RSI 75'in üzerine geçtiğinde uzun pozisyondan çıkıyoruz.
Yanlış sinyalleri önlemek ve RSI 75 eşiğinin altında mücadele ederken alım satımların çok uzun süre açık kalmasını önlemek için iki koşul daha ekledim. İlk koşul, mumların bir yükseliş trendini gösteren basit bir hareketli ortalama eğrisinin üzerinde işlem yapıp yapmadığını kontrol etmeyi içerir. Sadece bu durumda uzun pozisyonlar almamıza izin verilir. İkinci koşul, son iki mum arasındaki en düşük fiyat eksi belirli bir yüzde olarak alınan bir stop-loss değeri belirlemeyi içerir. Bu geriye dönük testte, stop-loss yüzdesini yüzde ikiye ayarladım. Bu değeri tercihlerinize göre veya farklı verilerle test ederken ayarlayabilirsiniz.
Bu koşulları Python'da uygulamak için gerekli kodu yazdım ve bir backtest yaptım. Kodda verileri yüklüyoruz, hareketsiz günleri kaldırarak temizliyoruz ve içeriğini doğrulamak için veri çerçevesini yazdırıyoruz. Ardından, trend tespiti için 200 uzunluğunda üstel hareketli ortalamayı (EMA), 2 uzunluğunda RSI'yi ve 14 uzunluğunda ADX'i hesaplıyoruz. kullanacağımız sütunları kontrol edin.
Daha sonra, hareketli ortalama eğrisinin üstünde veya altında işlem gören mum sayısına dayalı olarak eğilimi belirleyen add_ema_signal adlı bir işlev uyguladım. Önceki videolarda iyi çalıştığı için bu sayıyı altıya ayarladım. Sonra, total_signal adında bir uzun pozisyon girmek için sinyali hesapladığımız bir fonksiyon yarattım. Veri çerçevesinin her satırını yineliyoruz ve RSI'nin 25'in altında mı yoksa 25'e eşit mi, ADX'in 20'nin üzerinde mi ve EMA sinyalinin ikiye eşit olup olmadığını kontrol ediyoruz (yükseliş trendini gösteriyor). Bu koşullar karşılandığında, veri çerçevesinde ikilik bir sinyal değeri depolarız.
Veri çerçevesini yazdırarak, sinyalleri çubuk grafikte görselleştirebiliriz. Mor noktalar satın alma sinyallerini temsil ediyor. Koddaki her satırın ayrıntılarına girmesem de, bu kanaldaki önceki videolarda, özellikle Python for Algoritmik Ticaret oynatma listesinde kapsamlı açıklamalar bulabilirsiniz.
Backtesting kısmına geçerken backtesting.py paketini kullandım. Ayrıntılara girmeden, stop-loss yüzdesini %2 olarak belirledim ve belirli sayıda gün boyunca açık olan veya RSI 75'i geçerse işlemleri kapatmak için ek koşullar ekledim. Kodun hala ilgili satırlar içerdiğini belirtmekte fayda var. kısa pozisyonlara, bu strateji yalnızca uzun pozisyonlara odaklansa da. Stratejiyi kısa pozisyonları içerecek şekilde genişletmeye karar verirseniz, bu satırlar değiştirilebilir veya kaldırılabilir.
Sinyal ikiye eşitse ve açık işlem yoksa, zararı durdur değerini kullanarak piyasaya uzun pozisyonla gireriz. İşlem büyüklüğü, mevcut öz sermayenin %99'u olarak ayarlanmıştır. Geriye dönük test, nakit olarak 1.000$ ve 1:5 kaldıraç (1/5 marj) ile başlar. Önceki stratejilerle karşılaştırma amacıyla hiçbir komisyon dikkate alınmadı.
Geriye dönük test sonuçları, 200$'lık bir getiri ve 3.595$'lık bir en yüksek öz sermayeyi gösteriyor. Kazanma oranı %73'tür ve on yıllık test süresi boyunca toplam 102 işlem gerçekleştirildi. Bu, günlük zaman diliminde yılda ortalama 10 işlem anlamına gelir. Özkaynak eğrisinin çizilmesi, belirli dönemlerde küçük düşüşlerle birlikte tutarlı bir değer artışı gösterir.
Yorumlar bölümünde önerilen parametrelerin hiçbirini değiştirmediğimi belirtmek önemlidir. RSI uzunluğu 2'de, ADX uzunluğu 14'te ve EMA uzunluğu 200'de kalır. Ancak yine de bu değerlerde ince ayar yapabilir ve sonuçları potansiyel olarak iyileştirmek ve daha tatmin edici bir yapılandırma bulmak için farklı hisse senetleri veya pazarlarla denemeler yapabilirsiniz.
Bu strateji, uzun pozisyonlar için basit ama etkili bir yaklaşım sunar. Açıklamadaki bağlantıdan kodu indirmenizi ve denemenizi tavsiye ederim. Kod nispeten kısa ve yeni başlayanlar için uygundur. Bu stratejiyi keşfetmenin keyfini çıkarın ve bir sonraki videomuz için bizi izlemeye devam edin. Güvenli ticaret yapın ve bir dahaki sefere görüşürüz!
Yüksek Getiri İçin Optimize Edilmiş Otomatik Rayner Teo Bollinger Bantları Stratejisi
Yüksek Getiri İçin Optimize Edilmiş Otomatik Rayner Teo Bollinger Bantları Stratejisi
Herkese merhaba! Bu videoda, belirli parametrelerin ticaret sistemimiz üzerindeki etkilerini gösteren olağanüstü bir optimizasyon yaklaşımı sunmaktan heyecan duyuyoruz. Bunun şimdiye kadar elde ettiğimiz en iyi optimizasyon olduğuna inanıyoruz. Gördüğünüz gibi, istikrarlı bir şekilde artan özkaynak eğrisi ile yüzde üç bin civarında etkileyici bir getiri elde ettik. İşlemlerin detayları grafikte de gösteriliyor ve bunları bu videoda açıklayacağız. Tüm işlemleri fiyat çizelgelerinde çizdik ve bunların üzerinden de geçeceğiz. Bizi izlemeye devam edin!
Devam etmeden önce, bu stratejiyle yüzde 30.000 getiri elde etme şeklimizin gerçek ticaret için en güvenli yaklaşım olmadığını vurgulamak istiyoruz. Bu parametreleri gerçek bir ticaret senaryosunda kullanmanızı önermiyoruz. Ancak, stratejinin kendisinin sağlam olduğuna ve büyük bir potansiyele sahip olduğuna inanıyoruz. Burada yeniyseniz, strateji, trend olan pazarlar için Rhino Theo Bollinger Band stratejisine dayanır. Bunu daha önce mükemmel sonuçlar ve minimum riskle bir videoda test etmiştik. Görmediyseniz, ilk backtest videosunun bağlantısını, gerekirse Python koduyla birlikte açıklamada bulabilirsiniz.
Bu videoda, nispeten büyük getiriler elde etmek için aşırı parametreler uygulamaya çalışacağız. Bunu esas olarak Python koduyla test etme ve oynama eğlencesi için yapıyoruz. Ek olarak, süreç boyunca değerli içgörüler elde etmeyi ve gerçekçi yüksek getirilere yol açabilecek bir kurulum potansiyel olarak keşfetmeyi umuyoruz.
Şimdi koda geçelim ve her şeyin nasıl geliştiğini görelim. Jupyter not defteri dosyamızın ilk hücresi, verileri yüklemeye ayrılmıştır. Veritabanlarından günlük tarihsel verileri yüklemek için uygun bir yol olan "yfinance" modülünü kullanıyoruz. Sadece tek bir kod satırı ile, örnek olarak 2011 ile 2021 arasındaki Russell 1000 endeksi gibi belirli bir hisse senedinin verilerini yükleyebiliriz. Hafta sonları ve tatiller gibi fiyat hareketi olmayan günleri kaldırarak verileri temizleriz. Ardından, dizini sıfırlarız ve verilerin doğru biçimlendirildiğini doğrulamak için veri çerçevesinin başını yazdırırız.
Ardından, çeşitli teknik göstergeleri hesaplamak için "pandas_ta" (pandaların teknik analizi) modülünü kullanıyoruz. Bu durumda iki hareketli ortalama hesaplıyoruz: 200 günlük üstel hareketli ortalama (EMA) ve 150 günlük basit hareketli ortalama (SMA). Hızlı hareket eden ortalamayı (EMA2) daha yavaş hareket eden ortalamayı (EMA) karşılaştırarak, piyasanın yükseliş trendinde mi yoksa düşüş trendinde mi olduğunu belirleyebiliriz. Aynı modülü kullanarak 12 günlük göreceli güç endeksini (RSI) de hesaplıyoruz. Ek olarak, uzunluğu 14'e (20 yerine) ve standart sapmayı 2,0'a (2,5 yerine) ayarlayarak Bollinger Bantlarının parametrelerini değiştiriyoruz. Bu değişiklikler, sistemi daha az seçici hale getirmeyi amaçlayarak, daha sık alım satım sinyalleri ve geriye dönük test sırasında daha yüksek sayıda alım satım ile sonuçlanıyor.
Önceki videolarda tartışılan RDMI sinyalini veya üstel hareketli ortalama sinyalini kullanmak yerine, iki EMA sinyalini kullanıyoruz. Bu, biri daha hızlı diğeri daha yavaş olmak üzere iki hareketli ortalamayı dikkate aldığımız anlamına gelir. Hızlı hareket eden ortalama, yavaş hareket eden ortalamanın üzerindeyse, bir yükseliş trendi belirleriz. Tersine, hızlı hareket eden ortalama, yavaş hareket eden ortalamanın altındaysa, bir düşüş trendi fark ederiz. EMA sinyali olarak adlandırılan bu sinyali veri çerçevemize yeni bir sütun olarak ekliyoruz.
Alım satım sinyallerini oluşturma işlevi, önceki videolara benzer. Kapanış fiyatının alt Bollinger Bandının altında olup olmadığını ve EMA sinyalinin bir satın alma sinyalini tetikleyen bir yükseliş trendi (2'ye eşit) gösterip göstermediğini kontrol ederiz.
Bu videoda sunum yapan kişi, çeşitli parametrelerin bir ticaret sistemi üzerindeki etkilerini göstermek için aşırı bir optimizasyon yaklaşımı gösteriyor. Amaç, aşırı parametreler uygulayarak yüksek getiri elde etmektir, ancak bu parametrelerin ilişkili riskleri nedeniyle gerçek ticaret için önerilmediğine dikkat etmek önemlidir. Ancak sunum yapan kişi, dikkatli kullanılırsa stratejinin kendisinin büyük bir potansiyele sahip olduğuna inanıyor.
Kullanılan strateji, trend olan pazarlar için Rhino Theo Bollinger Band stratejisine dayanmaktadır. Sunucu, bu stratejiyi mükemmel sonuçlarla ve nispeten düşük riskle test ettikleri önceki bir videodan bahsediyor. Optimizasyon sürecindeki ilk adım, Y Finans modülünü kullanarak gerekli verileri yüklemektir. Sunucu, 2011'den 2021'e kadar olan ve 10 yıllık bir dönemi kapsayan Russell 1000 endeks verilerini yükler.
Veriler yüklendikten sonra sunucu, hafta sonları ve tatiller gibi fiyat hareketi olmayan günleri kaldırarak verileri temizler. Veriler daha sonra pandas_ta (pandalar teknik analizi) modülü kullanılarak teknik göstergeler hesaplanarak hazırlanır. İki hareketli ortalama hesaplanır: 200 günlük üstel hareketli ortalama (EMA) ve 150 günlük basit hareketli ortalama (SMA). Bu hareketli ortalamalar, trendin belirlenmesine yardımcı olur: Daha hızlı EMA, daha yavaş olan SMA'nın üzerindeyse, bu bir yükseliş trendini gösterir ve bunun tersi de geçerlidir.
Sunucu ayrıca pandas_ta modülünü kullanarak 12 günlük Göreceli Güç Endeksini (RSI) hesaplar. Ek olarak, Bollinger Bantlarının uzunluk ve standart sapma parametreleri değiştirilmiştir. Sunucu, önceki videolarda olduğu gibi 20 uzunluk ve 2,5 standart sapma kullanmak yerine, 14 uzunluk ve 2,0 standart sapma kullanır. Bu değişiklik, sistemi daha az seçici hale getirmeyi ve daha sık ticaret sinyalleri ile sonuçlanmayı amaçlamaktadır.
Sunucu, önceki videolardaki gibi RSI veya EMA sinyallerini kullanmak yerine, EMA sinyali adı verilen yeni bir sinyal sunar. İki hareketli ortalama arasındaki ilişkiye dayanır: daha hızlı EMA daha yavaş olan SMA'nın üzerindeyse, EMA sinyali 2'ye ayarlanarak bir yükseliş eğilimi gösterir. Daha hızlı EMA, daha yavaş olan SMA'nın altındaysa, EMA sinyali 1'e ayarlanarak bir düşüş trendi gösterir.
Giriş stratejisi önceki videolara benzer. Sunum yapan kişi, kapanış fiyatının alt Bollinger Bandının altında olup olmadığını ve EMA sinyalinin bir yükseliş trendi gösterip göstermediğini kontrol eder (EMA sinyali = 2). Bu durumda, mevcut mumun kapanış fiyatından bir satın alma sinyali üretilir. Kapanış fiyatı üst Bollinger Bandının üzerindeyse ve EMA sinyali bir düşüş trendi gösteriyorsa (EMA sinyali = 1), mevcut mumun kapanış fiyatında bir satış sinyali üretilir.
İşlemlerden çıkmak için sunum yapan kişi ek kriterler sunar. Daha uzun vadeli işlemler istenmediğinden, 10 günden uzun süredir açık olan bir işlem kapatılır. Ek olarak, uzun bir ticaretse ve RSI 75'in üzerine çıkarsa veya kısa bir ticaretse ve RSI 25'in altına düşerse bir ticaret kapatılır. RSI koşulu tek başına bir çıkışı tetiklemek için yeterli değilse, bir stop-loss mekanizması uygulanmaktadır.
Stop-loss, mumun mevcut dip seviyesi ile bir önceki mumun dip seviyesi arasındaki minimum değerin (1 - belirli bir yüzde) ile çarpılmasıyla hesaplanır. Yüzde, kullanıcı tarafından belirlenir ve stop-loss'u tetiklemeden önce izin verilen kaybı temsil eder. Örneğin, 2 yüzdesi, stop-loss'un son iki mum arasındaki en düşük noktanın %2 altına ayarlandığı anlamına gelir. Ek olarak, zararı durdur mesafesinin iki katı olarak bir kar al seviyesi belirlenir.
Sunum yapan kişi, optimize edilmiş parametreleri kullanarak bir geriye dönük test çalıştırarak stratejiyi değerlendirir. İşlemleri fiyat tablosunda çizerler ve her işlem için ayrıntılı açıklamalar sağlarlar. Geriye dönük test sonuçları, sürekli olarak artan bir öz sermaye eğrisi ile yaklaşık yüzde üç bin gibi etkileyici bir getiri gösteriyor.
Son olarak sunum yapan kişi, bu aşırı optimizasyon yaklaşımının geriye dönük testte yüksek getiri sağlamasına rağmen, ilgili riskler nedeniyle gerçek ticaret için tavsiye edilmediğini vurgular. Bu alıştırmanın amacı, farklı parametrelerin etkilerini keşfetmek ve stratejinin davranışına ilişkin içgörüler elde etmektir.
Daha İyi Sonuçlar için Rayner Teo'nun Bollinger Bantları Stratejisini Optimize Etme
Daha İyi Sonuçlar için Rayner Teo'nun Bollinger Bantları Stratejisini Optimize Etme
Bugün, daha önce bir videoda tekrar test edilen Reiner Theo Bollinger Band stratejisinin optimizasyonuna dalıyoruz. Önceki videoyu izlemediyseniz, bu optimizasyon bölümüne geçmeden önce izlemeniz önerilir. Video, kolay erişim için açıklamada bir bağlantı sağlar. Ek olarak, kodlama yönüyle ilgilenenler için Python kodu, açıklamadaki bir bağlantı aracılığıyla da indirilebilir.
Optimize edilmekte olan strateji, %91'lik bir kazanma oranı ve 10 yıllık bir geriye dönük testte sürekli olarak artan özkaynak eğrisi ile umut verici bir potansiyel göstermiştir. Ancak, bu optimizasyonun arkasındaki motivasyonlardan biri, geriye dönük test sırasında gözlemlenen düşük işlem sayısıdır. 10 yıl boyunca, yılda ortalama iki işlem olmak üzere yalnızca 23 işlem gerçekleştirildi. Bunu ele almak için iki potansiyel çözüm sunulmaktadır. İlki, programı aynı anda birden çok hisse senedi üzerinde çalıştırmayı içerir ve yılda yaklaşık 20 işlem yapmayı hedefler. Ancak bu yaklaşım, ilişkili pazarlar ve diğer ilgili konular hakkında endişeleri artırmaktadır. İkinci çözüm, işlem sayısını artırmak için zaman çerçevesini düşürmeyi içerir.
Strateji, giriş ve çıkış sinyalleri oluşturmak için çeşitli teknik göstergeler içerir. Giriş sinyalleri için hareketli bir ortalama göstergesi (kodda EMA, Üstel Hareketli Ortalama olarak anılır) ve Bollinger Bantları kullanırken, çıkış sinyalleri için Göreceli Güç Endeksi (RSI) kullanılır. Video, yürütme süreci hakkında burada yinelenmeyen daha fazla ayrıntı sağlar.
Programın kendisine dönersek, veriler analiz için dört saatlik zaman çerçevesine odaklanarak ilk hücreye yüklenir. Optimizasyon için iki farklı stok kullanılmaktadır. En yüksek ve en düşük fiyatların eşit olduğu, hareket etmeyen şamdanlar kaldırılarak veriler temizlenir. Hareketli ortalama (üstel veya basit) ve RSI gibi teknik göstergeler eklenir ve uzunlukları değiştirilebilir. Bu özel durumda, hareketli ortalama uzunluğu 900 mum ve RSI uzunluğu 12 olarak ayarlanmıştır. Günlük grafikler için, çıkış sinyalleri için 200 günlük EMA ve 2 günlük RSI kullanılır. Bollinger Bantları parametreleri, 20 uzunluk ve 2,5 standart sapma ile günlük grafiklerle aynı kalır.
Program ayrıca, mumların hareketli ortalamanın üzerinde mi yoksa altında mı işlem gördüğüne dair bir kontrol içerir. Bu durumda, sayı, hareketli ortalama eğrisinin üstünde veya altında altı ardışık mumu temsil eden altı olarak ayarlanır. Dört saatlik bir zaman diliminde çalıştığımız için altı kere dört 24 saat eder. Bu nedenle, fiyat 24 saat boyunca hareketli ortalamanın üzerinde veya altında işlem görüyorsa, bir yükseliş veya düşüş trendi sonucuna varılabilir. Emrin piyasadaki yüzde pozisyonu parametresi, gerçekleştirilen işlemlerin sayısını artırmak için yüzde sıfır olarak ayarlanmıştır.
Programın görselleştirme kısmında Bollinger Bantları, hareketli ortalama eğrisi ve yükseliş trendi olarak belirlenen trend yönü gösterilir. Giriş sinyalleri, grafikte satın alma sinyallerini gösteren mor noktalarla temsil edilir. Video, bu giriş noktalarından bazılarını sergiliyor ve bunların popüler pazarlardaki etkinliğini vurguluyor. Grafik içinde farklı rasgele pozisyonlar seçilerek, çeşitli giriş noktaları incelenebilir ve bunların geçerliliklerinin analizine izin verilir.
Sunum yapan kişi, giriş sinyalleriyle ilgili Bollinger Bandı parametrelerinin iyi çalıştığını, bu nedenle bu noktada değişiklik yapılmasına gerek olmadığını belirtir. Optimizasyonun odak noktası, algoritmanın diğer bölümlerinde yatmaktadır. Video, geriye dönük test sürecinin tüm ayrıntılarına girmese de, bazı parametreleri dikkate almakta fayda var.
Bu optimizasyon sürecinde, çıkış için RSI eşiği 45 olarak ayarlanmıştır. Bu düşük eşik değeri, daha hızlı çıkışlara izin vererek daha kısa ve daha sık işlemleri yakalamayı amaçlar. Sunum yapan kişi, RSI eşiği seçiminin öznel olduğunu ve bireysel tercihlere ve risk toleransına göre ayarlanabileceğini belirtiyor.
Stratejinin performansını değerlendirmek için program, toplam işlem sayısı, kazanma oranı, ortalama işlem süresi ve öz sermaye eğrisi dahil olmak üzere çeşitli ölçümleri hesaplar. Bu metrikler, stratejinin etkinliği ve karlılığı hakkında fikir verir.
Optimizasyon süreci, yüksek bir kazanma oranını korurken işlem sayısını en üst düzeye çıkaran en uygun kombinasyonu bulmak için stratejinin parametrelerinin ayarlanmasını içerir. Optimize edilen parametreler, hareketli ortalama uzunluğu, RSI uzunluğu ve RSI çıkış eşiğini içerir.
Video, farklı parametre kombinasyonlarını yinelemek ve her kombinasyon için stratejinin performansını değerlendirmek için iç içe bir döngünün nasıl kullanılacağını gösterir. Program, en iyi performans gösteren parametre kombinasyonunu takip eder ve karşılık gelen metrikleri ve eşitlik eğrisini görüntüler.
Sunum yapan kişi, optimizasyon sürecini çalıştırarak, 700'lük hareketli ortalama uzunluk, 4'lük bir RSI uzunluğu ve 45'lik bir RSI çıkış eşiği kullanmanın en iyi sonuçları verdiğini bulur. Bu parametre değerleri, yüksek kazanma oranını korurken işlem sayısını artırır. Video, optimize edilmiş strateji tarafından oluşturulan ve orijinal sürüme kıyasla daha sık işlemlerle daha yumuşak bir yukarı yönlü yörünge sergileyen özkaynak eğrisini gösteriyor.
Sunucu, ticaret stratejilerinin performansını iyileştirmede optimizasyonun önemini vurgulayarak bitirir. Sistematik testler ve parametrelerin ayarlanması yoluyla, bir stratejinin karlılığını ve verimliliğini artırmak mümkündür. Ancak, dikkatli olmak ve geçmiş verilere fazla uydurma gibi optimizasyonla ilgili sınırlamaları ve riskleri göz önünde bulundurmak çok önemlidir.
Burada verilen ayrıntıların videonun bir özeti olduğunu unutmamak önemlidir ve daha kapsamlı bir anlayış için, görsel gösteriler ve optimizasyon sürecinin daha fazla açıklamasını içeren orijinal videoyu izlemeniz önerilir.