Algoritmik ticarette Python - sayfa 19

 

Python'da Şamdan Kalıbı Arka Testiyle Ölçeklendirme Stratejisi



Python'da Şamdan Kalıbı Arka Testiyle Ölçeklendirme Stratejisi

Bu videoda, önceki iki videoda sunulan kavramları temel alan basit bir heykel stratejisini tartışacağız ve göstereceğiz. Bu stratejinin belirli ayrıntıları ve Python koduyla ilgileniyorsanız, video açıklamasında bir bağlantı bulabilirsiniz.

Kullandığımız strateji, üç üstel hareketli ortalama (EMA) etrafında dönüyor: hızlı, orta ve yavaş. Bu EMA'ların uyumunu analiz ederek, fiyat eğiliminin yukarı mı yoksa aşağı mı olduğunu tahmin edebiliriz. Bir yükseliş trendinde, hızlı EMA, yavaş EMA'nın üzerinde olan orta EMA'nın üzerindedir. Tersine, düşüş trendinde sıra tersine çevrilir.

Yükseliş trendindeki pozisyonları satın almak için, hızlı EMA'nın altında açılan ve üzerinde kapanan mumlar arıyoruz. Öte yandan, düşüş trendindeki satış pozisyonları için, hızlı EMA'nın üzerinde açılan ve altında kapanan mumlar arıyoruz. Video, yükseliş trendinde pozisyon satın almak için bu kriterleri karşılayan mum örnekleri sunar.

Strateji daha önce 1:100 kaldıraç oranına sahip kaldıraçlı bir hesap kullanılarak test edilmiş ve optimize edilmiştir. Test, üç yıllık bir süre boyunca gerçekleştirildi ve %445'lik bir geri dönüş yüzdesi ve %55'lik bir kazanma oranıyla sonuçlandı. Ancak, stratejinin büyük geri çekilme dönemleri gösterdiğini ve özkaynak eğrisinin üç yıllık dönem boyunca sabit olmadığını not etmek önemlidir.

Stratejiyi geliştirmek için ek bir koşul getirilmiştir. Hızlı EMA'yı geçen mumlara ek olarak, artık mum fitillerinin uzunluğunu da dikkate alıyoruz. Bir yükseliş trendi ise, mumun çok kısa bir alt kuyruğu olmalıdır, bu da güçlü bir yükseliş ivmesini gösterir. Benzer şekilde, düşüş trendinde mumun yüksek kuyruğu olmamalıdır. Bu koşul, zayıf momentumlu sinyalleri filtrelemeyi amaçlar.

Bu ek koşulun etkinliğini değerlendirmek için, strateji Python kullanılarak geriye dönük test edilir. Geriye dönük test için kaynak kodu, video açıklamasındaki bağlantıdan indirilebilen bir Jupyter Notebook dosyasında sağlanmıştır.

Geriye dönük test, 2019'dan 2022'ye kadar üç yıllık verileri kapsayan Euro/USD 15 dakikalık grafik verileri kullanılarak gerçekleştirilir. Veriler, sıfır hacimli mumlar çıkarılarak ve veri çerçevesinin indeksi sıfırlanarak önceden işlenir. Üç hareketli ortalama (50, 100 ve 150) ve ortalama gerçek aralık (ATR) veri çerçevesine eklenir.

Strateji, hareketli ortalamaların hizalanmasına dayalı olarak sinyaller üretir ve toplam sinyal, hızlı EMA'yı trendle aynı yönde geçen şamdanlar belirlenerek elde edilir. Video, bu sinyallerin grafiklerde nasıl görselleştirilebileceğini gösterir.

Zararı durdur ve kârı al değerlerinin ayarlanması için farklı yöntemler test edilir. Bunlar arasında sabit mesafe, ATR ile ilgili mesafeler, izlenen stop kaybı ve fiyattan gözlemlenen stop kaybı yer alır. Her yöntemin sonuçları, üçüncü koşulun eklenmesinden önce ve sonra karşılaştırılır.

Üçüncü koşul eklendiğinde strateji, test edilen tüm yöntemlerde önemli gelişmeler göstermektedir. Sabit mesafeli zararı durdur ve kârı al yöntemi, %59'luk bir kazanma oranıyla %1805'lik bir getiri sağlar. ATR ile ilgili yöntem, %249'luk bir getiri ve %51'lik bir kazanma oranı elde ediyor. Daha önce kaybetmekte olan takip eden zararı durdur yöntemi şimdi %394'lük bir getiri ve %42,5'lik bir kazanma oranı sağlıyor. Son olarak, yine kaybetmekte olan fiyattan gözlemlenen zararı durdur, şimdi %49'luk bir kazanma oranıyla %373'lük bir getiri sağlıyor.

İyileşen getirilere ek olarak, tüm yöntemler için özkaynak eğrileri, önceki sonuçlara kıyasla daha istikrarlı ve pozitif bir performans göstererek genel bir yükseliş eğilimi gösteriyor.

Video, bu stratejinin eksiksiz bir ticaret sistemi olarak sunulmadığını, bunun yerine düşük fitil koşulu eklemenin etkisinin bir örneği olarak sunulduğunu vurguluyor.

Video, bu stratejiyi kullanırken dikkate alınması gereken bazı önemli noktaları vurgulayarak sona eriyor:

  1. Videoda gösterilen strateji basitleştirilmiş bir örnektir ve kapsamlı bir ticaret sistemi olarak değerlendirilmemelidir. Belirli koşulların eklenmesinin bir stratejinin performansını nasıl iyileştirebileceğinin bir örneği olarak hizmet eder.

  2. Geriye dönük test sonuçları gelecekteki performansın göstergesi değildir. Strateji, test süresi boyunca iyileştirilmiş getiriler gösterse de, piyasa koşulları değişebilir ve geçmişteki sonuçlar gelecekte tekrarlanmayabilir.

  3. Herhangi bir stratejiyi gerçek ticarete uygulamadan önce kapsamlı test ve optimizasyon yapmak çok önemlidir. Geriye dönük testler, stratejinin performansını farklı piyasa koşullarında değerlendirmenize ve daha iyi sonuçlar için parametrelerini iyileştirmenize olanak tanır.

  4. Risk yönetimi çok önemlidir. Sermayenizi korumak ve riski yönetmek için zararı durdur ve kârı al seviyelerini doğru bir şekilde ayarlamak çok önemlidir. Video, bu seviyeleri ayarlamak için farklı yöntemler gösterdi, ancak uygun değerleri belirlerken risk toleransınızı ve hesap boyutunuzu göz önünde bulundurmanız önemlidir.

  5. Başarılı ticaret için duygusal disiplin gereklidir. Stratejinize bağlı kalın ve kısa vadeli piyasa dalgalanmalarına dayalı olarak ani kararlar vermekten kaçının.

  6. Bu stratejiyi tamamlayabilecek diğer faktörleri ve göstergeleri göz önünde bulundurun. Tek bir strateji tüm piyasa koşullarında mükemmel şekilde çalışmaz, bu nedenle daha kapsamlı bir analiz için birden çok göstergeyi ve tekniği birleştirmek faydalıdır.

  7. Stratejinizin performansını sürekli olarak izleyin ve değerlendirin. Piyasa koşulları değiştikçe, karlılığınızı sürdürmek için yaklaşımınızı uyarlamanız ve iyileştirmeniz gerekebilir.

Unutmayın, finansal piyasalarda alım satım yapmak riskler taşır ve gerçek para yatırmadan önce kendinizi eğitmeniz, profesyonel tavsiye almanız ve dikkatli bir şekilde uygulama yapmanız önemlidir. Video bir eğitim kaynağı olarak hizmet ediyor ve stratejiyi ticaret tarzınıza ve risk toleransınıza uyacak şekilde daha fazla keşfetmek ve özelleştirmek size kalmış.

Scalping Strategy With CandleStick Pattern Backtest In Python
Scalping Strategy With CandleStick Pattern Backtest In Python
  • 2022.03.10
  • www.youtube.com
This is a scalping Trading Strategy optimization using CandleStick Wick length pattern to confirm price momentum along with 3 moving exponential averages to ...
 

Python'da Basit EMA Scalping Ticaret Stratejisi Arka Testi (Bölüm 1)


Python'da Basit EMA Scalping Ticaret Stratejisi Arka Testi (Bölüm 1)

Bugün, ölçeklendirme stratejilerini test etmek için bir yolculuğa çıkıyoruz. Son zamanlarda birçoğunuzun bunu talep ettiğini biliyorum ve itiraf etmeliyim ki, genellikle düşük zaman dilimlerinden ve ölçeklendirmeden kaçınırım çünkü bunu riskli bir yaklaşım ve çoğu zaman duygusal olarak tüketen buluyorum.

Ancak, algoritmik yöntemler söz konusu olduğunda işler daha kolay olabilir. Algoritmalarla stratejimizi test edebilir ve beklenen sonuçları net bir şekilde anlayabiliriz. Dolayısıyla, modelimiz zaten geriye dönük olarak test edildiğinden, umarız hoş olmayan sürprizler olmaz. Her zaman olduğu gibi, kodlama kısmıyla ilgileniyorsanız, Python kodu video açıklamasındaki bağlantıdan indirilebilir. Değilse, videonun keyfini çıkarabilir ve stratejimizin ne tür sonuçlar verebileceğini görebilirsiniz.

Başlamak için nispeten basit bir şey seçtim: üç üstel hareketli ortalama kullanacağız. Biri hızlı, diğeri orta ve üçüncüsü yavaş. Trendleri tespit etmek için bu hareketli ortalamaları kullanacağız. Bu hareketli ortalamalar belirli bir sırada hizalandığında (ortanın üzerinde hızlı, yavaş hareketli ortalamanın üzerinde), bir yükseliş trendimiz var. Tersine, ters sıra bir düşüş trendini gösterir.

Eğilimlerin doğruluğunu sağlamak için bir koşul daha ekledim. Bu eğrilerin eğimleri aynı yönü göstermelidir. Bir yükseliş trendinde, üç eğrinin pozitif eğimleri olmalı ve düşüş trendinde eğimler negatif olmalıdır.

Net bir trend sinyali aldığımızda, giriş noktamızı arayacağız. Örneğin, bir satın alma pozisyonu arıyorsak, hızlı hareket eden ortalamanın altında açılan ve üzerinde kapanan bir mum bekleriz. Bu mum yükseliş trendinin devam ettiğini gösterir ve giriş noktamız olarak hizmet eder.

Buradaki ilginç nokta, tüm bunları Python'da kodlayıp stratejiyi geriye dönük olarak test edebilmemizdir. Başlangıçta, bu videoyu özlü tutmak istediğim için optimizasyona fazla odaklanmayacağız. Bununla birlikte, gelecekteki bir videoda, parametreleri optimize etmeye ve işlemlerimizde kazanan bir kombinasyon elde edip edemeyeceğimize bakacağız.

Şimdi Python koduna geçelim ve geriye dönük test sonuçlarını inceleyelim. 2019'dan 2022'ye kadar 15 dakikalık şamdanlı Euro/USD döviz çiftini kullanacağız. Veri çerçevesi 105.000 satırdan oluşuyor ve her satır 15 dakikalık bir mumu temsil ediyor. Piyasa hareketinin olmadığı hafta sonları ve tatil günlerine karşılık gelen sıfır hacimli satırları kaldırarak veri çerçevesini temizliyoruz.

Ardından, pandas_ta (Pandas Teknik Analizi) modülünü içe aktarıyoruz ve üç farklı hareketli ortalamayı hesaplıyoruz: EMA 50, EMA 100 ve EMA 150. Ayrıca bu hareketli ortalamaların eğimlerini, 10 mumluk hareketli bir pencere kullanarak hesaplıyoruz.

Bu aşamada, veri çerçevemiz açılış, yüksek, düşük ve kapanış fiyatlarını, hacmi, üç hareketli ortalamayı ve bunlara karşılık gelen eğimleri içerir. Artık trend tespiti için koşulları kontrol edebiliriz. Hızlı hareket eden ortalama, orta hareketli ortalamanın altındaysa ve orta hareketli ortalama, yavaş hareket eden ortalamanın altındaysa ve üç eğim de negatifse, bu bir düşüş trendini gösterir. Tersine, hızlı hareket eden ortalama orta hareketli ortalamanın üzerindeyse, orta hareketli ortalama yavaş hareket eden ortalamanın üzerindeyse ve üç eğim de pozitifse, bir yükseliş sinyali verir. Bu koşullar veri çerçevemize sütunlar halinde eklenir.

Grafiklerimizdeki sinyalleri görselleştirmek için, toplam sinyale göre mum çubuklarının üstündeki veya altındaki noktaları çizen bir işlev tanımlarız. Toplam sinyal giriş noktalarını temsil eder, 1 bir satış sinyalini ve 2 bir satın alma sinyalini gösterir. Nokta konumları, veri çerçevesinde bir sütun olarak eklenir.

Belirli bir mum aralığı için sinyalleri ve mum çubuklarını çiziyoruz.

Belirli bir mum aralığı için sinyalleri ve şamdanları çizerek, stratejinin performansını görsel olarak analiz etmemizi sağlarız. Yeşil daireler alım sinyallerini, kırmızı daireler ise satış sinyallerini gösteriyor. Bu görsel temsil, stratejinin gerçek zamanlı olarak nasıl performans göstereceğini anlamamıza yardımcı olur.

Sinyalleri görselleştirdikten sonra stratejinin performansını hesaplıyoruz. 10.000 dolarlık bir sermaye ile başlıyoruz ve her mumu yineliyoruz. Bir alım sinyali alırsak, sabit büyüklükte uzun bir pozisyona gireriz. Bir satış sinyali alırsak, uzun pozisyondan çıkar ve girişten bu yana fiyattaki değişimi temel alarak kar/zararı hesaplarız. Kümülatif kar/zararı ve gerçekleştirilen işlem sayısını takip ediyoruz.

Geriye dönük test süresinin sonunda, toplam kar/zararı, kazanan işlemlerin sayısını, kaybeden işlemlerin sayısını, kazanma yüzdesini ve işlem başına ortalama kâr/zararı hesaplarız.

Videoda, verilen strateji için geriye dönük test sonuçlarını sunuyorum. Lütfen sonuçların seçilen zaman çerçevesine ve döviz çiftine özel olduğunu unutmayın. Strateji, diğer piyasa koşullarında veya farklı parametrelerle farklı performans gösterebilir.

Sonuçları özetlemek gerekirse, geriye dönük test, stratejinin nispeten iyi performans gösterdiğini ve geriye dönük test süresi boyunca pozitif bir getiri sağladığını gösteriyor. Ancak, geçmiş performansın gelecekteki sonuçların göstergesi olmadığını ve ek test ve optimizasyon gerekebileceğini unutmamak önemlidir.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
  • 2022.02.24
  • www.youtube.com
Simple scalping Trading strategy using 3 exponential moving averages backtested in python, the scalping strategy is explained and the python code also in Jup...
 

Python'da Basit EMA Scalping Ticaret Stratejisi Arka Testi (Bölüm 2 Optimizasyonu)



Python'da Basit EMA Scalping Ticaret Stratejisi Arka Testi (Bölüm 2 Optimizasyonu)

Merhaba! Bir önceki videomuzun devamı niteliğinde olan bu videomuza tekrar hoş geldiniz. Bu videoda, daha önce tanıtılan heykel stratejisini optimize etmeyi amaçlıyoruz. Kısaca özetlemek gerekirse, hareketli ortalamaların eğimlerini hesaplarken dikkate alınması gereken mum sayısını belirleyen 'geri yuvarlanan n' adlı parametreyi optimize etmeye odaklanacağız. Mum sayısını 20, 10 veya 5 gibi değiştirerek, bu hareketli ortalamalar için ortalama eğimi hesaplayabiliriz. Ek olarak, -10 ila -4 gibi belirli bir eşiğin altındaki eğimleri test etmek gibi hareketli ortalama eğimlere koşullar ekleme olasılığını keşfedeceğiz. Bu parametrelerle deneyler yaparak trendleri belirlemek için daha iyi bir filtre oluşturmayı hedefliyoruz.

Ayrıca, sabit zararı durdur ve kârı al değerleri, takip eden zararı durdur ve ATR (Ortalama Gerçek Aralık) ile ilgili zararı durdur ve kârı al dahil olmak üzere farklı ticaret yönetimi yaklaşımlarını keşfedeceğiz. Bu farklı yaklaşımları inceleyerek, hangi ticaret yönetimi stratejisinin en olumlu sonuçları verdiğini belirlemeyi umuyoruz.

15 dakikalık bir zaman dilimiyle çalıştığımız için, bu biçimlendirme sisteminin hızlı ticaret stilleri için tasarlanmadığını belirtmek önemlidir. Ancak aynı sistem, artan piyasa gürültüsü nedeniyle daha zorlayıcı olsa da daha düşük zaman dilimlerinde test edilebilir.

Koda dalmadan önce, stratejiyi ayrıntılı olarak açıkladığımız önceki videoyu izlemeniz önerilir. Bu, size sunmak üzere olduğumuz optimizasyon sürecini daha iyi anlamanızı sağlayacaktır.

Şimdi Jupyter Notebook dosyamıza geçelim. Bir veri çerçevesi oluşturarak ve verileri temizleyerek başlıyoruz. Ardından, üç farklı hareketli ortalama hesaplıyoruz ve bu hareketli ortalamaların eğimlerini hesaplıyoruz. Stratejimizi test etmeye başladığımız yer burasıdır.

Başlangıçta, 10 mumluk hareketli bir pencere ele alıyoruz; bu, bu 10 mumdan alınan verileri kullanarak hızlı, orta ve yavaş hareket eden ortalamalar için eğimin ortalamasını aldığımız anlamına geliyor. Önceki videoda tanıttığımız sinyaller dahil her şeyin doğru çalıştığından emin olmak için bu kodu çalıştırıyoruz.

Testi kolaylaştırmak için, 15 dakikalık mumlarla çalıştığımıza göre, dört mumun bir saati temsil ettiğini dikkate alarak bir zaman ölçeği oluşturuyoruz. Bu kurulumla, stratejimizi test etmek için veri çerçevemizin belirli bir dilimini seçebiliriz. Örneğin başlangıç indeksini 37.000 olarak belirleyip buna karşılık gelen uzunluğu seçerek üç aylık bir dönem seçebiliriz.

Seçilen döneme ait verileri yükledikten sonra geriye dönük testimizi gerçekleştirebiliriz. İlk lot büyüklüğümüz, öz sermayemizin %30'u olarak belirlendi ve 40 piplik bir zararı durdur ve 45 piplik bir kar almayı düşünüyoruz. Ayrıca başlangıç noktası olarak 100 nakit bakiyesi olan kaldıraçlı bir hesabı yansıtarak 100 üzerinden 1'lik bir marj uyguluyoruz.

Geriye dönük testi çalıştırarak, üç aylık dönem için %107'lik bir getiri gözlemliyoruz. Ancak, modelimizin sağlamlığından emin olmak için stratejiyi farklı zaman dilimlerinde test etmek çok önemlidir. Başlangıç indeksini değiştirerek çeşitli dönemleri seçebilir ve performansı değerlendirebiliriz. Örneğin, farklı bir başlangıç indeksi olan 47'yi deniyoruz ve geriye dönük testi gerçekleştirerek %30'luk bir geri dönüş sağlıyoruz.

Stratejinin performansını birden fazla dönem boyunca analiz etmek için bu süreci farklı başlangıç endeksleriyle tekrarlayabiliriz. Ancak, daha uzun süreler boyunca test etmek için veri çerçevemizin daha küçük bir bölümünü seçmeliyiz. Örneğin, yıllık performansı değerlendirmek için 10 aylık veya 12 aylık bir dilim seçebiliriz.

Stratejiyi tam bir yıl boyunca test ederek, %100'lük bir geri dönüş elde ederek başlangıçtaki miktarı etkili bir şekilde ikiye katladık. Bu olumlu olmakla birlikte, yıl boyunca yalnızca 193 işlemle işlem sıklığı nispeten düşüktür. Kazanma oranı yaklaşık %44'tür ve bu iyileştirme için yer olduğunu gösterir.

Stratejimizi geliştirmek için, "geri dönen n" parametresi için farklı değerler keşfedeceğiz. 20, 10 veya 5 gibi farklı mum sayılarını test ederek, stratejimizin performansı üzerindeki etkilerini değerlendirebiliriz. Örneğin, "geri dönen n" değerini 20 olarak ayarlayıp arka testi tekrar çalıştıracak şekilde kodumuzu değiştirebiliriz.

20'lik bir "geri yuvarlanan n" ile test ettikten sonra, üç aylık dönem için %90'lık bir getiri gözlemliyoruz, bu da ilk ayarımız olan 10'dan biraz daha düşük. Bu, daha küçük bir "geri dönen n"nin kısa vadeli trendleri yakalamak.

Ardından, hareketli ortalamaların eğimlerine dayalı olarak ek koşullar getiriyoruz. Örneğin, üç hareketli ortalamanın eğimlerinin -4'ten az olması gerekliliğini uygulayabiliriz. Bu, yalnızca üç eğimin de negatif ve -4'ün altında olması durumunda bir işleme girdiğimiz anlamına gelir. Kodumuzu buna göre değiştiriyoruz ve backtest'i uyguluyoruz.

Ek koşulları uygulayarak, stratejimizi daha da hassaslaştırabiliriz. Testin ardından, üç aylık dönem için %127'lik bir geri dönüş gözlemledik ve bu, ilk sonuçlarımızla karşılaştırıldığında bir iyileşme olduğunu gösteriyor. Ancak, daha sıkı bir filtre sağladıkları için bu koşulların alım satım sıklığını da azaltabileceğini unutmamak önemlidir.

Şimdi farklı ticaret yönetimi yaklaşımlarını inceleyelim. Her iki parametre için önceden belirlenmiş değerler belirlediğimiz sabit bir zararı durdur ve karı al stratejisi uygulayarak başlıyoruz. Örneğin, 40 piplik sabit bir zararı durdur ve 45 piplik bir kar al belirleyebiliriz. Kodu değiştirdikten ve arka testi çalıştırdıktan sonra sonuçları analiz ediyoruz.

Sabit zararı durdur ve karı al yaklaşımı ile üç aylık dönemde %95'lik bir getiri gözlemliyoruz. Bu, ilk sonuçlarımızdan biraz daha düşük olsa da, kontrollü bir risk yönetimi sistemi sağlar. Ancak, etkinliğini değerlendirmek için performansı daha uzun süreler ve farklı piyasa koşullarında değerlendirmek önemlidir.

Ardından, takip eden bir zararı durdurma stratejisini keşfediyoruz. Sabit değerler kullanmak yerine, zararı durdur, ticaret bizim lehimize ilerledikçe dinamik olarak ayarlanır. Örneğin, 30 piplik takip eden bir stoploss belirleyebiliriz, bu da fiyat bizim lehimize 30 piplik hareket ederse, stoploss'un başabaş konumuna taşınacağı anlamına gelir. Kodumuzu buna göre değiştiriyoruz ve backtest'i tekrar çalıştırıyoruz.

İzleyen zararı durdur yaklaşımı ile üç aylık dönemde %120 getiri elde ediyoruz. Bu, karları korumak ve kazançları en üst düzeye çıkarmak için zarar durdurmayı dinamik olarak ayarlama potansiyelini gösterir. Ancak, sağlamlığından emin olmak için performansını farklı zaman çerçeveleri ve piyasa koşullarında değerlendirmek önemlidir.

Son olarak, Ortalama Gerçek Aralığa (ATR) dayalı bir ticaret yönetimi stratejisi keşfediyoruz. ATR, zararı durdur ve kar seviyelerini ayarlamak için kullanılabilecek bir piyasa oynaklığı ölçüsü sağlar. ATR'yi stratejimize dahil ederek, risk yönetimimizi hakim piyasa koşullarına uyarlayabiliriz. ATR'ye dayalı zararı durdurma ve kâr alma seviyelerini uygulamak ve geriye dönük testi gerçekleştirmek için kodumuzu değiştiriyoruz.

ATR bazında zararı durdur ve kârı al seviyelerini birleştirerek üç aylık dönem için %110 getiri elde ediyoruz. Bu, risk yönetimimizi piyasa oynaklığına uyarlamanın potansiyel etkinliğini gösterir.

Sonuç olarak, optimizasyon süreci boyunca, şekillendirme stratejimizi geliştirmek için farklı parametreleri ve ticaret yönetimi yaklaşımlarını keşfettik. "Geri dönen n" parametresini değiştirerek, hareketli ortalama eğimlere dayalı ek koşullar uygulayarak ve farklı ticaret yönetimi tekniklerini keşfederek, stratejinin performansını artırmayı başardık. Ancak, farklı zaman dilimlerinde ve piyasa koşullarında daha fazla test yapmak ve canlı ticarette uygulamadan önce stratejinin sağlamlığını değerlendirmek önemlidir.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
  • 2022.03.03
  • www.youtube.com
This is a continuation of the previous video, here we optimize our simple EMA Scalping trading strategy and we try to backtest the different parameters sets ...
 

Kaldıraç Etkisi Kullanan Yüksek Getirili Ticaret Stratejisi



Kaldıraç Etkisi Kullanan Yüksek Getirili Ticaret Stratejisi

Herkese merhaba ve kanalıma tekrar hoş geldiniz. Bugün, daha önce ele almadığımız bir konuyu derinlemesine inceleyeceğiz: kaldıraç. İçerdiği doğal riskler nedeniyle bu konuda oldukça şüpheci olduğumu itiraf etmeliyim. Ancak bu videoların öncelikle eğitim amaçlı olduğunu vurgulamak istiyorum. Etkilerini tam olarak anlamadan kaldıraçlı bir ticaret sistemini körü körüne benimsemenizi önermiyorum. Bu nedenle, bu videoda, daha önceki videolarda zaten tartıştığımız, daha önce kullanılan bir ticaret stratejisini ele alacağız ve kaldıracı ticaret sistemimize dahil etmenin etkilerini keşfedeceğiz.

Kaldıracın nasıl çalıştığına kısa bir giriş yaparak başlayalım. Kaldıraç tipik olarak 1:10 ila 1:1000 gibi bir oranla temsil edilir, ancak 1:10 ile 1:50 arasındaki oranları bulmak daha yaygındır. Bu, 1.000$'lık bir hesabınız varsa ve 1:10 kaldıraç oranını seçerseniz 10.000$'a kadar yüksek bir değere sahip pozisyonları alıp satmanıza izin verileceği anlamına gelir. Kaldıraç oranını 1:50'ye yükselterek, hesabınızdaki aynı 1.000 ABD Doları, 50.000 ABD Doları'na kadar satın alma işlemi yapmanızı sağlar. Kullanabileceğiniz belirli kaldıraç seçenekleri, komisyoncunuza, faaliyet gösterdiği ülkeye, düzenlemelere ve hesap türünüzle ilgili diğer faktörlere bağlıdır.

Ancak, kaldıracın maliyetsiz olmadığını not etmek önemlidir. Potansiyel kârınızı artırabilirken, riskleri de büyütür ve hesap bakiyenizi hızla tüketebilir. Yeni başlayanlar genellikle deneyim eksikliklerinden yararlanan daha büyük tüccarlar veya komisyoncular tarafından hedef alınır. Bunu akılda tutmak çok önemlidir.

Kaldıraç kullanırken akılda tutulması gereken iki temel kural vardır. İlk olarak, stratejiniz yüksek bir kazanma oranına sahipse, kaldıraç kullanmak kârınızı artırmanıza yardımcı olabilir. Tersine, stratejinizin kazanma oranı düşükse, kayıplarınızı da büyütür. Yüksek veya düşük kazanma oranının tanımı, strateji türü, zararı durdur ve karı al değerleri ve para yönetimi yaklaşımınız gibi çeşitli faktörlere bağlıdır. Kaldıraç kullanmanın bir bedeli olduğunu her zaman unutmayın. Sahip olduğunuz para miktarının 100 katı ile pozisyon alıp satabiliyorsanız, bu, fonlarınızın öncelikle, önemli ölçüde daha büyük miktarlarda işlem yaparken hızla meydana gelebilecek potansiyel kayıpları karşılamak için orada olduğu anlamına gelir.

Bu videoda, daha önce tartıştığımız stratejiyi geriye dönük test etmek için Python'u kullanacağız. Normal bir ticaret hesabı kullanarak getirileri kontrol ederek başlayacağız ve ardından algoritmik ticaret stratejimize kaldıraçlı bir hesap ekleyeceğiz. Bu varyasyonları geriye dönük olarak test edeceğiz, sonuçları inceleyeceğiz ve kaldıraçlı bir hesap kullanmanın avantajlarını ve risklerini değerlendireceğiz. Python kullanmanın avantajı, herhangi bir parametreyi istediğimiz gibi değiştirebilmemiz ve getiri yüzdemiz üzerindeki etkilerini gözlemleyebilmemizdir. Bu hesaplama gücü, kaldıraçlı bir hesap kullanmanın avantajlarını ve dezavantajlarını test etmemize ve içgörüler edinmemize olanak tanır.

Kullanacağımız Python kodu, ticarette martingale yaklaşımıyla ilgili önceki videoda kullanılan koda benzer. İlk hücre, verileri yüklemeyi ve temizlemeyi, dizini sıfırlamayı ve diğer gerekli adımları gerçekleştirmeyi içerir. Önceki videolarda ele aldığımız için bugün kod üzerinde fazla zaman harcamayacağım. Trend dönüşlerini tespit etmek ve alım satım sinyalleri oluşturmak için destek ve direnç fonksiyonlarını mum çubuğu örüntü tanıma ile birlikte kullanacağız. Bu strateji için, potansiyel trend tersine çevirme sinyalleri olarak destek veya direnç seviyelerinin yakınında meydana gelen ret şamdan modellerine odaklanacağız.

 

Python'da Martingale Salıncak Ticaret Stratejisi Algoritmik Backtest



Python'da Martingale Salıncak Ticaret Stratejisi Algoritmik Backtest

Bugün, kazanan bir ticaret stratejisiyle birleştirildiğinde martingale yaklaşımının büyüleyici konusunu inceleyeceğiz. Martingale yöntemiyle ilgili önceki videomuzu veya bu kanalda kullanacağımız stratejiyi anlatan diğer videoları henüz izlemediyseniz, önce bunlara göz atmanızı şiddetle tavsiye ederim. Bu videolar, destek ve direnç seviyelerini, mum modellerini kapsar ve bu videodaki yaklaşımımızı anlamak için sağlam bir temel sağlar. Size kolaylık olması için video açıklamasına bazı bağlantılar ekleyeceğim.

Ek olarak, ilgilenenler için, bu stratejiyi geriye dönük test etmek için kullandığım Python kodunu açıklamada verilen bağlantıdan indirebilirsiniz. Bu kod, sonuçları kendiniz takip etmenize ve keşfetmenize olanak tanır.

Şimdi kanalımıza yeni katılanlar veya aramıza yeni katılanlar için kısa bir özet yapalım. Martingale yöntemi, kaybeden bir ticareti her kapattığımızda pozisyon büyüklüğümüzü ikiye katlamayı içerir. Bu yaklaşımın arkasındaki fikir, büyük bir galibiyetle önceki kayıpları telafi etmektir. Önceki bir videoda, alış ve satış pozisyonları arasında rastgele seçim yapan tamamen rastgele bir ticaret stratejisine martingale yöntemini açıklamış ve uygulamıştık.

Bu videoda farklı bir yaklaşım izliyoruz. Martingale yöntemini kazanan bir ticaret stratejisine uygulayacağız. Stratejimiz, destek ve direnç seviyelerinin yanı sıra potansiyel trend dönüşlerini gösteren belirli mum modellerini belirlemeyi içerir. Bir destek veya direnç seviyesinin yakınında bir mum paterni tespit ettiğimizde, işlemlerimizi buna göre gerçekleştiririz. Zararı durdur ve kârı al değerleri, kârı al/zararı durdur oranı adı verilen bir orana göre belirlenir.

Şimdi, bu stratejinin sonuçlarının daha önceki videolarda test edildiğini ve olumlu sonuçlar verdiğini belirtmek önemlidir. Buradaki amaç, bu stratejiye martingale yaklaşımını ekleyerek kârı daha da artırıp artıramayacağımızı görmektir.

Tamam, Python koduna geçelim. İlk olarak, bu video için 2003'ten 2021'e kadar günlük EUR/USD verilerini yükleyip temizliyoruz. Daha sonra veri çerçevesinin kuyruğunu yazdırarak veri çerçevesinin doğru yüklenip yüklenmediğini kontrol ederiz.

Daha sonra, programımızda kullanacağımız destek ve direnç seviyelerini tespit eden fonksiyonlara sahibiz. Bu işlevlerin ayrıntılı bir açıklamasına ihtiyacınız varsa, lütfen önceki videolarımıza bakın.

Ayrıca "is_engulfing", "is_star" ve "rezistansa_yakın" veya "desteğe_yakın" düzeyler olarak adlandırılan başka işlevlerimiz de vardır. Bu işlevler, belirli şamdan modellerini belirlememize ve destek veya direnç seviyelerine yakın olup olmadıklarını belirlememize yardımcı olur. Bu modeller, alım satım sinyallerimizi oluşturmak için kullanılacaktır.

Sinyal üretim hücresinde, sinyallerimizi tespit ettiğimiz mum modellerine göre üretiriz. Bir direnç seviyesinin yakınında yutan bir düşüş paterni veya başka bir satış sinyali bulursak, bunu bir satış sinyali olarak kabul eder ve veri çerçevemizdeki sinyal sütununa 1 değeri atarız. Benzer şekilde, bir destek seviyesinin yakınında yutan bir yükseliş paterni veya başka bir satın alma sinyali bulursak, bunu bir satın alma sinyali olarak kabul eder ve sinyal sütununa 2 değeri atarız. Diğer tüm durumlarda, sinyal değeri 0'dır ve sinyal olmadığını gösterir.

Şimdi, stratejimizi geriye dönük olarak test etmek için backtesting.py paketini dahil edebiliriz. Veri çerçevemizdeki her satır için sinyal değerlerini döndüren "sinyal" adında bir işlev tanımlıyoruz. Bu işlev, backtesting.py modülünün strateji sınıfından türetilen "CandleStrategy" adlı özel sınıfımızda kullanılır.

CandleStrategy sınıfımızda, ticaret pozisyonumuzun boyutunu, sahip olduğumuz öz sermayenin %5'ini temsil eden 0,05 olarak başlatıyoruz. Her sinyal aldığımızda bu pozisyon boyutuyla işlem yapıyoruz.

Sinyal değeri 1 (satış sinyali) ise açık pozisyonumuz olup olmadığını kontrol ederiz. Eğer yaparsak mevcut pozisyonu kapatıyoruz ve pozisyon boyutunu sıfırlıyoruz. Ardından, daha önce tanımladığımız pozisyon büyüklüğü ile yeni bir kısa pozisyon giriyoruz.

Öte yandan sinyal değeri 2 (alış sinyali) ise benzer bir süreç izliyoruz. Açık pozisyonumuz olup olmadığını kontrol eder, gerekirse kapatır ve önceden tanımlanmış pozisyon boyutuyla yeni bir uzun pozisyon gireriz.

Şimdi kar al ve zararı durdur seviyelerimizi tanımlıyoruz. Kâr alma seviyesi, giriş fiyatı ile kâr alma/zararı durdurma oranı çarpılarak hesaplanır. Zararı durdur seviyesi, giriş fiyatının kar al/zararı durdur oranının negatif değeri ile çarpılmasıyla hesaplanır. Bu değerler, kâr alma seviyemizin giriş fiyatından, zararı durdur seviyesinden daha uzak olmasını sağlar.

Son olarak, CandleStrategy sınıfını kullanarak geriye dönük testimizi yürütüyoruz ve sonuçları yazdırıyoruz. Toplam getiri, ortalama günlük getiri, maksimum düşüş ve gerçekleştirilen işlem sayısı gibi çeşitli performans ölçütlerini hesaplıyoruz.

Şimdi arka testi çalıştıralım ve sonuçları analiz edelim.

Arka testi çalıştırdıktan sonra sonuçları gözlemleyebiliriz. Toplam getiri, ortalama günlük getiri ve maksimum düşüş, stratejimizin performansını değerlendirmek için önemli ölçütlerdir.

Bizim durumumuzda toplam getiri %256,17'dir, bu da ilk yatırımımızın iki kattan fazla arttığı anlamına gelir. Ortalama günlük getiri %0,04'tür ve geriye dönük test edilen dönem boyunca tutarlı bir pozitif getiriye işaret eder. Maksimum düşüş %10,98'dir ve bu, özkaynak eğrisinde bir zirveden sonraki bir düşük noktaya en büyük düşüşü temsil eder.

Bu sonuçlar, martingale yaklaşımıyla birlikte kazanan ticaret stratejimizin test edilen süre boyunca kârlı olduğunu gösteriyor. Bununla birlikte, geçmiş performansın gelecekteki sonuçların göstergesi olmadığına dikkat etmek önemlidir ve bu strateji, canlı ticarette kullanılmadan önce kapsamlı bir şekilde değerlendirilmeli ve doğrulanmalıdır.

Sonuç olarak, martingale yaklaşımı, kazanan bir ticaret stratejisiyle birleştirildiğinde, potansiyel olarak stratejinin genel karlılığını artırabilir. Bununla birlikte, büyük düşüş potansiyeli ve pozisyon büyüklüklerinin birden fazla ikiye katlanmasını sürdürmek için yeterli sermaye ihtiyacı gibi ilgili riskleri dikkatlice değerlendirmek önemlidir.

Bu videoda bana katıldığınız için teşekkür ederim ve umarım videoyu bilgilendirici ve yararlı bulmuşsunuzdur. Herhangi bir sorunuz veya öneriniz varsa, lütfen bunları aşağıdaki yorumlarda bırakın. Daha fazla ticaret stratejisi ve eğitim için kanalımızı beğenmeyi ve abone olmayı unutmayın. Mutlu ticaret!

Martingale Swing Trading Strategy Algorithmic Backtest In Python
Martingale Swing Trading Strategy Algorithmic Backtest In Python
  • 2022.02.10
  • www.youtube.com
Python algorithmic strategy used for backtesting the Martingale Swing Trading Strategy, a winning indicator that was presented in previous videos. Martingale...
 

Algoritmik Ticaret İçin Martingale Ticaret Stratejisi Geri Testi



Algoritmik Ticaret İçin Martingale Ticaret Stratejisi Geri Testi

Bugün, kaybedilen işlemleri telafi etmek için herhangi bir ticaret stratejisine dahil edilebilecek Martingale yaklaşımını tartışacağız. Bu yöntemi Python kullanarak geriye dönük olarak test edeceğiz ve Martingale'i uygularken ortaya çıkan avantaj ve riskleri inceleyeceğiz.

Cebimizde yirmi dolarla bir kumarhaneye girdiğinizi ve sadece renkler üzerine bahis oynayarak rulet oynamaya karar verdiğinizi hayal edelim. Kırmızıya ya da siyaha bir dolar bahse gireriz. Kırmızı üzerine ilk bahsimiz kaybederse, 19 dolarımız kalacak. Bir sonraki turda, daha önce kaybettiğimiz bir bahsimiz olduğu için bahsimizi ikiye katlayarak iki dolara çıkaracağız. Bu bahis de kaybederse elimizde 17 dolar kalır. Önceki kayıpları telafi etmeyi amaçlayarak her kaybettiğimizde bahsimizi ikiye katlamaya devam ediyoruz. Sonunda, önceki kayıpları kapsayan ve küçük bir kar ekleyen kazanan bir bahsimiz olacak. Bu örnekte, başlangıçtaki miktarımızdan biraz daha fazla olan toplam 21 dolar elde ediyoruz. Bir kayıptan sonra bahsi ikiye katlayan bu yaklaşım, Martingale yaklaşımı olarak bilinir.

Başlangıçta, Martingale yöntemi umut verici görünüyor ve hızlı ve önemli karlar izlenimi verebilir. Ancak, bu yaklaşımla ilişkili riskleri anlamak önemlidir. Bu yöntemi ve risklerini daha iyi anlamak için, Monte Carlo yaklaşımını kullanarak stratejiyi geriye dönük olarak test edeceğiz. Bu yaklaşım, teknik göstergeleri veya özel tahminleri tamamen göz ardı ederek, alım satım pozisyonları için sinyaller oluşturmak üzere rasgele sayılar kullanır. Sinyaller yalnızca düzgün bir rasgele dağılıma dayalıdır.

Geriye dönük testi uygulamak için Python kodu yazacağız. Veri işleme için pandalar gibi gerekli kitaplıkları içe aktararak başlıyoruz. Verileri yükleyip temizleyerek sıfır işlem hacmine sahip satırları kaldırıyoruz. Verileri hazırladıktan sonra numpy modülünün random fonksiyonunu kullanarak rastgele sinyaller üretiyoruz. Her mum çubuğu için 0 ile 1 arasında rastgele bir sayı üretiyoruz. Sayı 0,5'in altındaysa satış sinyali (1), 0,5'in üzerindeyse satın alma sinyali (2) atarız.

Ardından, geriye dönük test kitaplığının strateji sınıfından miras alan "MyStrategy" adlı bir strateji sınıfı tanımlarız. İlk konum boyutu 10 birim olarak ayarlanmıştır. Konum boyutunu takip etmek için Martingale yaklaşımına göre değişecek olan "my_size" değişkenini de tanımlıyoruz. Olumlu bir sinyal üretilirse ve açık işlem yoksa, Martingale yaklaşımını izleyerek "my_size" çarpı 2'ye eşit bir pozisyon büyüklüğü ile yeni bir işlem açarız. Kapatılan işlemler varsa ve son işlem kârlıysa, pozisyon boyutunu başlangıç boyutuna sıfırlarız. Bu, kazanan bir ticaretten sonra ilk pozisyon boyutuna geri dönmemizi sağlar. Alış veya satış sinyali üretilirse ve açık işlem yoksa, son kapanış fiyatına göre zararı durdur ve kârı al seviyelerini belirler ve ilgili işlemi gerçekleştiririz.

Tanımlanan strateji ile, geriye dönük testi 10.000$'lık bir başlangıç sermayesi kullanarak ve komisyon olmadan çalıştırıyoruz. Geriye dönük test istatistikleri, bir kaybı gösteren -%4,8'lik bir getiri gösteriyor. Hisse grafiği, stratejinin başlangıçta bazı kazanımlar elde ettiğini, ancak belirli bir noktada düşmeye başladığını ortaya koyuyor. Sinyaller rastgele olduğu için beklendiği gibi kazanma oranı %50'ye yakın. Toplam işlem sayısı 100'dür.

Daha fazla araştırmak için, zararı durdur ve kar seviyelerini 400 pip'e çıkar ve arka testi tekrar çalıştır. Ancak bu ayar sorunu çözmez. Azalan öz sermaye, bir dizi kaybedilen işlemden sonra pozisyon büyüklüğünü ikiye katlamaya devam etmek için yeterli paraya sahip olunmamasının bir sonucudur. Bunu ele almak için, başlangıç pozisyon boyutunu 5'e düşürüyoruz ve zararı durdur ve kârı al seviyelerini 300 pip olarak ayarlıyoruz. Bu ayarlamaları yaptıktan sonra backtest'i tekrar çalıştırıyoruz. Güncellenen strateji, -%0,7'lik bir getiri sağlayarak, önceki sürüme kıyasla daha küçük bir kayıp anlamına gelir. Bununla birlikte, özkaynak grafiği, daha yavaş bir hızda olmasına rağmen, hala düşüş eğilimi gösteriyor. Kazanma oranı %50'ye yakın ve toplam işlem sayısı hala 100.

Bu sonuçlardan, pozisyon büyüklüğü, zararı durdur ve karı al seviyelerinde yapılan ayarlamalarla bile, Martingale yaklaşımının bu rastgele sinyal senaryosunda karlı bir sonuç sağlamadığını gözlemleyebiliriz. Azalan öz sermaye, potansiyel önemli düşüş riskini ve ticaret hesabını tüketme olasılığını gösterir.

Bu geriye dönük testin rastgele sinyaller varsayımı altında yürütüldüğünü not etmek önemlidir. Gerçek dünya ticaretinde, ticaret sinyalleri oluşturmak için genellikle teknik analize veya temel analize dayalı stratejiler kullanılır. Bu stratejiler, rasgele sinyallere dayanmak yerine piyasa verilerine dayalı kalıpları, eğilimleri veya fırsatları belirlemeyi amaçlar. Bu gibi durumlarda Martingale yaklaşımı uygun veya etkili olmayabilir.

Ayrıca, Martingale yaklaşımı yüksek düzeyde risk taşır. Kaybetme serilerinin ardından kazanan serilerin geleceğini varsayar ve tacirin kayıplarını telafi etmesine olanak tanır. Ancak gerçekte, kazanan işlemlerin kaybedilen işlemleri takip edeceğine dair bir garanti yoktur ve her zaman ardışık kayıplar olasılığı vardır. Her kayıptan sonra pozisyon boyutunu ikiye katlamak, özellikle piyasa koşulları elverişsiz veya dalgalıysa, hızla önemli kayıplara ve hesabın tükenmesine yol açabilir.

Martingale yaklaşımı, hızlı iyileşme ve kar potansiyeli nedeniyle çekici görünse de, ilgili riskleri göz önünde bulundurmak ve ticaret stratejinize uygunluğunu dikkatlice değerlendirmek çok önemlidir. Kesin kayıp durdurma seviyeleri belirlemek, uygun pozisyon boyutlandırmasını sürdürmek ve ticaret yaklaşımınızı çeşitlendirmek gibi risk yönetimi tekniklerini uygulamak, ilgili riskleri hafifletmeye yardımcı olabilir.

Özetle, Martingale yaklaşımı, özellikle rastgele sinyallerle kullanıldığında riskli bir strateji olabilir. Hem potansiyel kazançları hem de ilgili riskleri göz önünde bulundurarak herhangi bir ticaret stratejisini kapsamlı bir şekilde test etmek ve değerlendirmek önemlidir.

Martingale Trading Strategy Backtesting For Algorithmic Trading
Martingale Trading Strategy Backtesting For Algorithmic Trading
  • 2022.02.03
  • www.youtube.com
Testing the Martingale trading strategy for algorithmic trading in python, I hope you'll enjoy it.Are you interested in algorithmic trading and looking for a...
 

Python'da Hareketli Ortalama Ticaret Stratejisi Geri Testi



Python'da Hareketli Ortalama Ticaret Stratejisi Geri Testi

Daha karmaşık modeller lehine basit stratejilerin gözden kaçırıldığı genellikle bir durumdur. Ancak sadeliğin gücünü de hafife almamalıyız. Bugün size karmaşık ticaret sistemleriyle rekabet edebilecek ve olumlu getiriler sağlayabilecek basit bir yöntem sunacağım. Basit kuralların avantajı, Python kullanılarak algoritmik ticaret için kolayca otomatikleştirilebilmeleridir. Kârlılığını sağlamak için bu stratejiyi farklı para birimlerinde geriye dönük test edebiliriz.

Bu basit stratejinin ayrıntılarına geçelim. İlk olarak, 200 günlük hareketli ortalama eğrisini göstergemiz olarak ele alacağız. Mumlar eğrinin üzerindeyse, bu bir yükseliş trendini gösterir ve bir satın alma pozisyonu önerir. Tersine, şamdanlar hareketli ortalama eğrisinin altındaysa, bu bir düşüş trendi sinyali verir ve bir satış pozisyonu anlamına gelir.

Bir satın alma pozisyonunun giriş noktasını belirlemek için önceki mumları inceleyeceğiz. Mevcut mumun en düşük değerini önceki mumların en düşük değerleri ile karşılaştıracağız. Mevcut mumun düşük değeri, önceki tüm bu değerlerin altındaysa, bir satın alma pozisyonu için giriş noktasını belirledik. Aynı konsept, bir satış pozisyonu için ters yönde de geçerlidir.

Bu strateji basit görünse de, kendi zorluklarıyla birlikte gelir. Dikkate alınması gereken ilk parametre, hareketli ortalamanın uzunluğudur. 200 mü, 100 mü yoksa farklı bir şey mi olmalı? Bu, getirileri en üst düzeye çıkarmak için belirli bir döviz çiftinde geriye dönük test yoluyla ince ayar yapılabilir. Başka bir parametre, dikkate alınması gereken önceki mumların sayısıdır. 7, 8, 10 veya 20 mumu analiz etmeli miyiz? Farklı değerlerle deneyler yaparak, strateji performansı üzerindeki etkiyi değerlendirebiliriz.

Bu gösterge kısmı nispeten basittir, ancak stratejiyi etkili kılmak için onu bir ticaret yönetimi yaklaşımıyla birleştirmeliyiz. Bu, zararı durdur ve kârı al değerlerinin tanımlanmasını içerir. Bu değerleri ayarlamak için iki seçeneğimiz var: bunlar piyasanın ortalama gerçek aralığı (ATR) ile ilişkilendirilebilir veya tüm işlemler için sabit değerler kullanabiliriz. Olumlu getiri sağlamak için uygun ticaret yönetimi yaklaşımını seçmek önemlidir. Ek olarak, ATR'ye dayalı olarak stop-loss değerini ayarlayan bir takip eden stop-loss kullanılabilir.

Kodda, optimum ayarları bulmak ve stratejinin performansını değerlendirmek için bu parametrelerin çeşitli kombinasyonlarını deneyebiliriz. Basit bir strateji olmasına rağmen, dikkate alınması gereken nispeten çok sayıda parametre vardır.

Bu stratejiyi Python'da uygulamak için bir Jupyter Notebook dosyası kullanıyoruz. Verileri yüklüyoruz, pandas-teknik-analiz modülünü kullanarak üstel hareketli ortalama (EMA) ve ATR hesaplamalarını uyguluyoruz. Ardından, EMA sinyalleri ve yüksek-düşük sinyaller üretmek için fonksiyonlar tanımlarız. Her şeyin doğru çalıştığını görsel olarak doğrulamak için verileri EMA eğrisiyle çiziyoruz.

Ardından, EMA sinyalini ve yüksek-düşük sinyal fonksiyonlarını veri çerçevemize uygulayarak alış veya satış pozisyonları için sinyaller veririz. Çizilen sinyalleri inceleyerek, eğilimleri ve giriş noktalarını belirlemede doğruluklarını ve etkinliklerini doğrulayabiliriz.

Stratejiyi test etmek için, alım veya satım pozisyonlarını belirlemek için sinyalleri kullanan ve ATR'ye veya sabit oranlara dayalı olarak zararı durdur ve kârı al değerlerini belirleyen bir işlev tanımlıyoruz. Bu stratejiyi 2003 ile 2021 arasındaki dört saatlik Euro-ABD Doları grafiklerinde geriye dönük olarak test etmek, yaklaşık %29'luk bir pozitif getiri gösteriyor.

Bununla birlikte, hisse senedi eğrisini değerlendirmek ve stratejinin trend piyasalarda iyi performans gösterse de yatay fiyat hareketleri dönemlerinde zorlanabileceğini anlamak çok önemlidir. ATR tabanlı değerler yerine sabit değerler kullanmak gibi farklı stop-stop ve al-profit konfigürasyonlarını deneyerek, stratejinin performansını analiz edebilir ve buna göre uyarlayabiliriz.

Sonuç olarak, en basit stratejiler bile, etkinliklerini sağlamak için parametrelerin ve ticaret yönetimi yaklaşımlarının dikkatli bir şekilde değerlendirilmesini gerektirir. Bu strateji, hareketli ortalama gibi temel bir göstergeye dayansa da, uygun ticaret yönetimi teknikleriyle birleştirildiğinde yine de karlı ticaret sinyalleri üretebilir.

Stratejiyi uyguladıktan ve geriye dönük testler yaptıktan sonra, performans ölçütlerini değerlendirmek çok önemlidir. Dikkate alınması gereken bazı önemli ölçütler, toplam işlem sayısı, kazanma oranı (karlı işlemlerin yüzdesi), işlem başına ortalama kâr, maksimum düşüş (tepeden tabana en büyük düşüş) ve risk-ödül oranıdır.

Bu ölçümleri analiz ederek, stratejinin beklentilerimizi karşılayıp karşılamadığını ve risk toleransımızla uyumlu olup olmadığını belirleyebiliriz. Hiçbir stratejinin kusursuz olmadığını ve ticarette her zaman riskler olacağını hatırlamak önemlidir. Bu nedenle, uzun vadeli başarı için uygun risk yönetimi ve yatırımların çeşitlendirilmesi çok önemlidir.

Ek olarak, strateji üzerinde sağlamlık testi yapılması önerilir. Bu, farklı zaman dilimleri, döviz çiftleri veya varlık sınıfları gibi farklı piyasa koşullarında performansının değerlendirilmesini içerir. Bunu yaparak, stratejinin uyarlanabilirliğini ölçebilir ve karlılığının belirli senaryolarla sınırlı kalmamasını sağlayabiliriz.

Ayrıca, bu basit stratejinin sınırlamalarını dikkate almaya değer. Tüm piyasa nüanslarını yakalayamayabilir veya yüksek volatilite veya ani fiyat dalgalanmaları dönemlerinde optimum performans gösteremeyebilir. Bu gibi durumlarda, performansını artırmak için daha gelişmiş ticaret sistemleri veya ek göstergeler gerekli olabilir.

Son bir not olarak, piyasa koşulları geliştikçe stratejiyi sürekli olarak izlemek ve uyarlamak önemlidir. Performansını düzenli olarak gözden geçirmek, gerekli ayarlamaları yapmak, piyasa trendleri ve haberlerinden haberdar olmak, stratejinin uzun vadeli uygulanabilirliğine katkıda bulunacaktır.

Unutmayın, başarılı ticaret, iyi tanımlanmış bir stratejinin, disiplinli yürütmenin ve sürekli öğrenme ve uyarlamanın bir sonucudur. Ticaret çabalarınızda iyi şanslar!

Moving Average Trading Strategy Backtesting In Python
Moving Average Trading Strategy Backtesting In Python
  • 2022.01.20
  • www.youtube.com
Welcome to this video on a beginner-friendly automated trading strategy using Python. In this video, we will be discussing a simple yet effective trading str...
 

Python'da Algoritmik Ticaret İçin Son Durdurma Arka Testi



Python'da Algoritmik Ticaret İçin Son Durdurma Arka Testi

Herkese merhaba ve bu videoya hoş geldiniz. Bugün, algoritmik ticarette stop-loss uygulamak için çeşitli yöntemler keşfedeceğiz. Spesifik olarak, ticaret botlarına sayısal programlarda kodlanarak kolayca dahil edilebilecek zararı durdurma tekniklerine odaklanacağız.

Kaybı durdur değerlerini belirlemenin farklı yolları olsa da, bazı yöntemlerin bir programa dahil edilmesinin daha karmaşık olduğunu unutmamak önemlidir. Bu videoda, daha önce diğer videolarda tartıştığımız şamdan kalıplarının yanı sıra destek ve direnç seviyelerini kullanarak bir stratejiyi geriye dönük test edeceğiz. Ancak stop-loss değerlerini dört farklı durumu göz önünde bulundurarak çeşitlendireceğiz.

İlk yöntem, tacir tarafından tüm işlemler için önceden belirlenmiş sabit bir zararı durdurma mesafesinin kullanılmasını içerir. Alış pozisyonu ne olursa olsun, zararı durdurma mesafesi aynı kalır.

İkinci yöntem daha dinamiktir ve ortalama gerçek aralığı (ATR) kullanır. Burada stop-loss mesafesi doğrudan ATR ile ilişkilidir, yani piyasanın belirli bir pozisyondaki oynaklığına bağlı olarak değişir.

Üçüncü yöntem, sabit bir mesafe takip kaybı durdurmadır. Bu, tüm pozisyonlar için aynı mesafenin korunduğu ve takip eden bir stop-loss işlevi gören, yaygın olarak kullanılan bir takip eden stop-stop stratejisidir.

Dördüncü ve son yöntem, ticaret pozisyonunun yürütüldüğü andaki ortalama gerçek aralığı dikkate alan bir takip eden zararı durdurma yöntemidir. Bu, kaybı durdurma mesafesinin, piyasanın o andaki oynaklığını yansıtan ATR'ye göre seçildiği anlamına gelir.

Özetle, aynı stratejiyi, stop-stop değerlerini tanımlamanın bu dört farklı yöntemini kullanarak test edeceğiz. Kaybı durdur değerleri seçiminin kâr alma değerlerimizi de etkileyeceğini belirtmekte fayda var. Çoğu zaman, kar alma değerleri, kar alma mesafesi ile zararı durdurma mesafesi arasındaki orana göre belirlenir.

Şimdi bu yöntemlerin nasıl uygulandığını görmek için Jupyter Notebook dosyasını inceleyelim. Dosya, gerekli modüllerin içe aktarılması ve 2003'ten 2021'e kadar olan EUR/USD döviz çifti için fiyat verilerini içeren CSV dosyasının yüklenmesiyle başlar. Verileri temizliyoruz, ortalama gerçek aralık (ATR) sütununu ekliyoruz ve destek için işlevleri tanımlıyoruz ve direnç seviyeleri ve şamdan kalıpları.

Ayrıca, destek ve direnç seviyelerine yakınlığın yanı sıra yutma modellerini kontrol etmek için işlevler sunuyoruz. Bu işlevler, destek veya direnç seviyelerine yakın şamdan kalıplarına dayalı stratejiyi oluşturmamıza yardımcı olur. Veri çerçevemize, sinyalleri düşüş, yükseliş veya sinyal yok olarak sınıflandıran bir sinyal sütunu ekliyoruz.

Stratejimizi geriye dönük olarak test etmek için, geriye dönük test modülünü kullanıyoruz ve tacir tarafından manuel olarak ayarlanan sabit bir zararı durdur ve kârı al mesafesini içeren ilk zararı durdur yöntemini tanımlıyoruz. 10.000$'lık nakit bir miktarla başlıyoruz ve getiriler, kazanma oranı, en iyi ve en kötü işlemler ve maksimum düşüş dahil olmak üzere geriye dönük testin sonuçlarını alıyoruz.

Ardından, zararı durdur ve kârı al mesafelerini tanımlamak için ATR'yi kullanan ikinci yöntemi uyguluyoruz. ATR değerlerine dayalı olarak mesafeleri ayarlamak için faktörler sunuyoruz ve stratejiyi geriye dönük test ediyoruz. Sonuçları önceki yöntemle karşılaştırıyoruz ve getirilerdeki ve diğer performans ölçütlerindeki farklılıkları gözlemliyoruz.

Devam ederek, sabit mesafeli takip eden bir zararı durdurma olan üçüncü yöntemi uyguluyoruz. Burada, sadece ilk stop-stop mesafesini belirtmemiz gerekiyor ve takip eden stop-loss buna göre ayarlanıyor. EUR/USD çifti için 500 piplik sabit bir mesafe kullanarak stratejiyi geriye dönük test ediyoruz.

Son olarak, sonuçları analiz ediyoruz ve sabit mesafeli takip eden zararı durdurma yönteminin yaklaşık %131 ile en yüksek getiriyi sağladığını buluyoruz. Diğer yöntemler de olumlu getiri sağlarken, takip eden zararı durdur yöntemi bu durumda daha iyi performans gösterir.

Sonuç olarak, aynı stratejiyi, her biri farklı avantajlar ve düşünceler sunan dört farklı stop-stop yöntemi kullanarak test ettik. Kaybı durdurma yönteminin seçimi, nihai olarak tacirin tercihlerine ve belirli piyasa koşullarına bağlıdır.

Sabit zararı durdurma yöntemi, basitlik ve uygulama kolaylığı sağlar. Piyasa koşullarından bağımsız olarak tüm işlemlerde tutarlı risk yönetimi sağlar. Bununla birlikte, değişen volatilite seviyelerine etkili bir şekilde uyum sağlayamayabilir ve potansiyel olarak yüksek oynaklık dönemlerinde daha geniş stop-loss mesafelerine veya düşük volatilite dönemlerinde daha sıkı stop-loss mesafelerine yol açabilir.

ATR tabanlı stop-loss yöntemi, piyasa oynaklığına uyum sağlama konusunu ele alır. ATR'yi volatilite ölçüsü olarak kullanarak, stop-stop mesafesi dinamik olarak mevcut piyasa koşullarına göre ayarlanır. Bu, yüksek oynaklık sırasında daha büyük kayıplara karşı korunmaya yardımcı olabilir ve düşük oynaklık sırasında daha fazla nefes alma alanı sağlayabilir. Bununla birlikte, yüksek volatilite dönemlerinde daha geniş stop-stop mesafeleri ile sonuçlanabilir ve potansiyel olarak daha sık stop-out'lara yol açabilir.

Sabit mesafe takipli kayıp durdurma yöntemi, takipli kayıp durdurmanın avantajlarını sabit bir mesafenin basitliği ile birleştirir. Ticaret lehine hareket ederken zararı durdur fiyatını takip ederek potansiyel kar maksimizasyonuna izin verir. Bu yöntem, özellikle daha büyük kazançlar yakalayabildiği trend pazarlarda kullanışlıdır. Ancak, sabit mesafe oldukça değişken durumlarda yeterli tampon sağlamayabileceğinden, hızlı fiyat tersine dönüşlerine karşı etkili bir şekilde koruma sağlayamayabilir.

ATR tabanlı takip eden zararı durdurma yöntemi, ATR'ye dayalı yöntemin ve takip eden zararı durdurmanın faydalarını birleştirir. Ticarete giriş anındaki ATR'yi dikkate alarak, takip eden zararı durdurma mesafesini piyasanın o andaki oynaklığına göre ayarlar. Bu, risk yönetimine daha uyumlu ve duyarlı bir yaklaşım sağlar. Ani tersine dönüşlere karşı koruma sağlamaya devam ederken daha büyük eğilimlerin yakalanmasına yardımcı olabilir. Bununla birlikte, yüksek volatilite sırasında daha geniş stop-loss mesafeleriyle sonuçlanabilir ve potansiyel olarak daha sık stop-out'lara yol açabilir.

Tüccarlar için bir stop-loss yöntemi seçerken risk toleranslarını, ticaret tarzlarını ve piyasa koşullarını dikkatlice değerlendirmeleri önemlidir. Farklı yöntemlerin performansını geriye dönük olarak test etmek ve analiz etmek, bilinçli bir karar vermeye yardımcı olabilir. Ek olarak, risk yönetimi yalnızca zarar durdurma emirlerine dayanmamalı, aynı zamanda pozisyon boyutlandırma, çeşitlendirme ve genel portföy yönetimini de dikkate almalıdır.

Hiçbir stop-loss yönteminin kusursuz olmadığını ve yine de kayıpların meydana gelebileceğini unutmayın. Başarılı ticaret için uygun risk yönetimi ve piyasa koşullarının sürekli izlenmesi şarttır.

Trailing Stop Backtest For Algorithmic Trading in Python
Trailing Stop Backtest For Algorithmic Trading in Python
  • 2021.11.27
  • www.youtube.com
This video tests the Stop Loss VS Trailing Stop methods for Algorithmic Trading using python. Backtests are applied to one trading strategy showing the diffe...
 

Python'da Otomatikleştirilmiş RSI Sapması | Algoritmik Ticaret



Python'da Otomatikleştirilmiş RSI Sapması | Algoritmik Ticaret

Herkese merhaba ve bu videoya hoş geldiniz. Bugün, RSI ayrışmasını tartışacağız ve ticarette bu göstergeyi kullanarak farklı stratejiler keşfedeceğiz. Dalışa geçmeden önce, bu videoda kullanılan Jupyter Notebook dosyasına erişebileceğiniz bir indirme bağlantısı sağladım.

Başlamak için, hem fiyatın hem de RSI'nın yerel minimum ve maksimumlarını tespit edebilen bir kod yazmamız gerekiyor. Bu noktalar grafikte mor noktalar olarak işaretlenmiştir. Burada kullanılan algoritma, her iki taraftaki beş komşu mumdan daha yüksekse, bir mumun yüksekliğini maksimum olarak tanımlar. Benzer şekilde, bir mumun düşük değeri, sol ve sağ taraftaki beş mumdan daha düşükse minimum olarak kabul edilir. Uç noktaları tespit etme tercihinize göre bu sayıları ayarlayabilirsiniz.

Ardından, fiyatın ve RSI'nın tespit edilen minimum ve maksimum değerlerini doğrusal eğimlere sığdırıyoruz. Bu, bu noktalardan geçen en uygun düz çizgileri bulmayı içerir. Sonunda iki farklı eğim elde ediyoruz: biri fiyat için (yeşil) ve diğeri RSI için (mor). Bu eğimler, ilgili göstergelerin trend yönünü temsil eder.

Daha sonra, bir sapma olup olmadığını belirlemek için fiyatın eğimlerini ve RSI'yı karşılaştırabiliriz. Bir yükseliş trendinde, her iki eğim de pozitif olmalı, bu da fiyatta daha yüksek dipler ve RSI'da daha yüksek tepeler gösteriyor. Tersine, bir düşüş trendinde, her iki eğim de negatif olmalıdır. Eğimler, fiyat için pozitif bir eğim ve RSI için negatif bir eğim veya tam tersi gibi farklı işaretlere sahipse, bu bir ayrışmayı gösterir.

Sapmayı analiz etmek için çeşitli yaklaşımlar olsa da, bu videoda iki yöntemi inceleyeceğiz. İlk yöntem, aynı anda ikiden fazla noktayı dikkate almamızı sağlayan polinom regresyon kullanarak birden çok uç noktayı uydurmayı içerir. İkinci yöntem, fiyatın ve RSI'nın son iki minimumunu ve maksimumunu karşılaştırmaya odaklanır. Bu noktalar arasındaki farkları karşılaştırarak, sapmaları belirleyebiliriz.

RSI sapmasını kullanan stratejiler genellikle manuel ticarette tartışılsa da, genellikle iki ardışık nokta arasındaki eğilime odaklanırlar. Bu videoda, birden çok noktanın aynı anda analizini sağlamak için eğim uyumu ve polinom regresyon kullanarak sayısal bir yaklaşım sunuyoruz.

Video boyunca bu diverjans yöntemlerini Jupyter Notebook kullanarak Python'da kodlayacağız. Sağlanan Not Defteri dosyası, gerekli kitaplıkları içe aktarır, bir CSV dosyasından mum verilerini okur, RSI'yi hesaplar ve hem fiyat hem de RSI için pivot noktalarını tespit edecek işlevleri tanımlar. Bu işlevler, her mumu pivot yüksek, pivot düşük, her ikisi veya hiçbiri olarak sınıflandırır.

Videonun sonunda, RSI farklılığını ve bu stratejileri alım satımınızda nasıl uygulayacağınızı net bir şekilde anlayacaksınız. Bu içeriği faydalı bulduysanız videoyu beğenerek kanala destek olmanızı tavsiye ederim. Görüşleriniz bizim için değerli, bu yüzden lütfen yorum yapmaktan çekinmeyin.

Şimdi Jupyter Notebook dosyasına girelim ve bu kavramları Python'da nasıl kodlayabileceğimize bakalım.

Kaldığımız yerden devam ederek veri çerçevemize, her mumu pivot yüksek, pivot düşük, her ikisi veya hiçbiri olarak kategorize eden "pivot" sütununu ekledik. Şimdi kodumuzun bir sonraki adımına geçelim.

Daha sonra, x ve y koordinatları verilen iki nokta arasındaki eğimi hesaplayan "get_slope" adında bir fonksiyon tanımlıyoruz. Bu fonksiyon, fiyat ve RSI verileri için eğimleri hesaplamak için kullanılacaktır.

Bundan sonra, bir veri çerçevesini ve bir pivot kategorisini (pivot high veya pivot low) parametre olarak alan "fit_slope" adlı başka bir işlevi tanımlarız. Bu işlev, verilen kategoriye göre pivot noktalarını tanımlar ve "get_slope" işlevini kullanarak bu noktalara doğrusal bir eğim uydurur. Sığdırılan doğru için eğim değerini döndürür.

Artık fiyat ve RSI verileri için eğimleri hesaplamak üzere bu işlevleri kullanmaya devam edebiliriz. Veri çerçevemizde iki yeni sütun oluşturuyoruz: "price_slope" ve "rsi_slope." "price_slope" sütunu için, parametre olarak veri çerçevesi ve pivot kategorisi ile "fit_slope" işlevini çağırıyoruz. Aynı işlemi RSI verileri için tekrarlıyor, RSI pivot noktaları için eğimi hesaplıyor ve sonucu "rsi_slope" sütununda saklıyoruz.

Bu noktada hem fiyat hem de RSI verileri için eğimleri elde etmiş oluyoruz. Şimdi trend yönünü belirlemek için bu eğimleri karşılaştırabiliriz. Veri çerçevemize "trend" adında başka bir sütun ekliyoruz, bu sütun trendin yukarı mı aşağı mı yoksa tanımsız mı olduğunu gösteriyor.

Eğilimi belirlemek için, price_slope ve rsi_slope sütunlarının işaretlerini kontrol ederiz. Her iki eğim de pozitifse, bu bir yükselişi gösterir, bu nedenle trend sütununa "Yukarı" değerini atarız. Her iki eğim de negatifse, bu bir düşüş trendini gösterir, bu nedenle trend sütununa "Aşağı" değerini atarız. Eğimlerin işaretlerinin farklı olduğu veya eğimlerden birinin sıfır olduğu diğer tüm durumlarda, trend sütununa "Tanımsız" değerini atarız.

Mevcut trend bilgileriyle artık fiyat ve RSI verileri arasındaki farklılıkları kontrol edebiliriz. Veri çerçevemize "divergence" adında bir diverjans olup olmadığını gösterecek başka bir sütun ekliyoruz.

Farklılıkları kontrol etmek için, price_slope ve rsi_slope sütunlarının işaretlerini karşılaştırırız. İşaretler zıtsa, bir sapma gösterir. Bu gibi durumlarda, sapma sütununa "Divergence" değerini atarız. İşaretler aynıysa veya eğimlerden biri sıfırsa, sapma yoktur ve sapma sütununa "Diverjans Yok" değerini atarız.

Son olarak, her mum için hesaplanan eğimleri, trend yönlerini ve sapmaları görmek için ortaya çıkan veri çerçevesini yazdırabiliriz.

Genel olarak, kod aşağıdaki adımları gerçekleştirir:

  1. Gerekli kitaplıkları içe aktarır ve yardımcı işlevleri tanımlar.
  2. Mum verilerini okur ve RSI'yi hesaplar.
  3. Her mumu pivot yüksek, pivot düşük, her ikisi veya hiçbiri olarak kategorize etmek için bir pivot sütunu ekler.
  4. Pivot noktalarına dayalı olarak fiyat ve RSI verileri için eğimleri hesaplar.
  5. Eğimlerin işaretlerine göre trend yönünü belirler.
  6. Eğimlerin işaretlerine göre fiyat ve RSI verileri arasındaki farklılıkları kontrol eder.
  7. Ortaya çıkan veri çerçevesini hesaplanan eğimler, eğilim yönleri ve sapmalarla birlikte yazdırır.

Bu kod, RSI farklılıklarını ve bunların fiyat eğilimleriyle ilişkisini analiz etmenin bir yolunu sunarak tacirlerin potansiyel olarak ticaret fırsatlarını belirlemesine olanak tanır.

RSI Divergence Automated In Python | Algorithmic Trading
RSI Divergence Automated In Python | Algorithmic Trading
  • 2021.11.12
  • www.youtube.com
The RSI Divergence Detection is programmed in python as an automated indicator for algorithmic trading, the Jupyter notebook file is available from the link:...
 

Python'da Otomatikleştirilmiş Fiyat Trendi Kanalları



Python'da Otomatikleştirilmiş Fiyat Trendi Kanalları

Herkese merhaba, bugün bu video için bize katıldığınız için teşekkür ederiz. Python'da fiyat hareketi kanallarını tespit eden bir algoritma sunmaktan heyecan duyuyoruz. Aşağıdaki açıklamada bulunan linkten kodu Jupyter Notebook dosyası olarak indirebilirsiniz.

Her şeyden önce, bu fikri önerdikleri için yorum bölümünden Bay veya Bayan M'ye teşekkür ederiz. Bir aydan uzun süredir beklediğiniz için sabrınız için teşekkür ederiz. Umarız bu video sizi hayal kırıklığına uğratmaz.

Başlamadan önce bu kanalın amacını netleştirelim. Amacımız eğitici içerik sağlamaktır, bu nedenle indirmeniz ve bir kara kutu olarak kullanmanız için programlar sağlamayacağız. Bunun yerine, düşünme sürecini ve programın nasıl oluşturulduğunu açıklamayı amaçlıyoruz. Bu videonun sonunda, burada sunulan algoritmadan ilham alarak kendi algoritmanızı oluşturabilecek ve hatta kendi uzantılarınızı ekleyebileceksiniz.

Ancak, pazar gibi dinamik ve doğrusal olmayan ortamlara uygulandığında sayısal modellerin sınırlamalarını kabul etmek önemlidir. Fiyat eğilimleri ve tahminleri, en iyi yaklaşımları bulmaya çalışan devam eden araştırmalarla birlikte hâlâ açık bir çalışma alanıdır. Pazar son derece dinamiktir ve trendler ile bunların değişim hızları zaman içinde değişebilir. Bu nedenle, lütfen fiyat hareketlerini tahmin etmenin doğasında bulunan sınırlamaları ve karmaşıklıkları kabul edin.

Şimdi algoritmaya geçelim. Sunduğumuz algoritma, bu kanal aracılığıyla toplanan basit bilgilere ve hayal gücümüze dayanmaktadır. Yaklaşım, kendimizi belirli bir mum veya tarihte konumlandırmayı ve belirli sayıda mum için zamanda geriye bakmayı içerir.

Bu zamanı eşit parçalara veya zaman pencerelerine böleriz. Her pencerede, maksimum ve minimum olarak bilinen en yüksek ve en düşük fiyat noktalarını belirleriz. Bu işlemi tüm zaman pencereleri için tekrarlıyoruz ve minimum ve maksimum noktalarını düz çizgiler olan ayrı birinci derece polinom uyumuna sığdırıyoruz.

Bununla birlikte, bu eğimler, noktalardan geçtiği için mutlaka fiyatı sarmaz. Bunu ele almak için, bu eğimlerin kesişme değerlerini iyileştirmemiz gerekiyor. Bunu yapmanın farklı yolları var. Yaklaşımlardan biri, eğrilerin zaman penceresinin ortasına en yakın minimum nokta veya pencere içinde bulunan en yüksek ve en alçak noktalar gibi belirli noktalardan geçmesi için kesişme noktalarını ayarlamaktır.

Dikkate alınması gereken bir diğer husus, zaman penceresinin uzunluğudur. Tercihinize bağlı olarak arka mum sayısı için farklı değerler seçebilirsiniz. Örneğin, mevcut mumun 30 bar artı veya eksi 20 barını alarak programın bu aralıkta dolaşmasına izin verebilirsiniz. Program daha sonra farklı eğimleri değerlendirecek ve iki eğim arasındaki en paralel durumu sağlayan mum sayısını döndürerek bir kanalın tespit edildiğini gösterecektir.

Video açıklamasındaki linkten indirebileceğiniz bir Jupyter Notebook dosyası sağladık. Dosya, algoritmayı uygulamak için Python kodunu içerir. Başlamak için pandas kitaplığını içe aktarıyoruz ve 2003'ten 2021'e kadar Euro ve Dolar şamdan verilerini içeren bir CSV dosyasından verileri yüklüyoruz.

Ardından, arka mumların sayısıyla tanımlanan zaman penceresi içinde maksimum ve minimumları ararız. Pencereyi daha küçük pencerelere bölüyoruz ve her pencerede maksimum ve minimum noktaları buluyoruz. Bu noktalar, numpy dizilerinde saklanır.

Minimum ve maksimumları elde ettikten sonra, noktaları birinci derece polinom doğrularına sığdırmak için numpy polyfit fonksiyonunu kullanırız. Eğimleri ve kesişmeleri içeren sonuçlar değişkenlerde saklanır.

Eğimleri görselleştirmek için mum grafiğini çizeriz ve eğimlere karşılık gelen çizgileri ekleriz. Bu aşamada, eğimler fiyatı tam olarak sarmayabilir, ancak makul bir uyum sağlar.

Uyumu iyileştirmek için eğimlerin kesişme noktalarını değiştirebiliriz. Yaklaşımlardan biri, kesişmeleri her zaman penceresi içindeki en yüksek ve en alçak noktalardan geçecek şekilde ayarlamaktır. Zaman penceresi içindeki en yüksek ve en alçak noktaları hesaplıyor ve eğimlerin kesişme noktalarını buna göre güncelliyoruz.

Optimal kanalı belirlemek için, arka mum sayısının farklı değerlerini yineliyoruz ve iki eğim arasındaki paralelliği değerlendiriyoruz. İki eğim arasındaki açıyı hesaplıyoruz ve önceden tanımlanmış bir eşik dahilinde olup olmadığını kontrol ediyoruz. Varsa, bunu geçerli bir kanal olarak kabul eder ve daha fazla analiz için arka mumların sayısını ve açıyı saklarız.

Son olarak, mum grafiğini çizerek ve kanallara karşılık gelen çizgileri üst üste bindirerek tespit edilen kanalları görselleştirebiliriz. Bu, belirlenen fiyat hareketi kanallarının görsel bir sunumunu sağlar.

Bu algoritmanın basitleştirilmiş bir yaklaşım olduğunu ve tüm fiyat hareketi kanallarını yakalayamayacağını belirtmek önemlidir. Pazar karmaşıktır ve bu algoritmanın kapsamını aşan çeşitli modeller ve dinamikler olabilir. Ancak bu algoritma, kanalları tespit etmek için bir başlangıç noktası görevi görür ve bireysel gereksinimlere ve tercihlere göre genişletilebilir veya özelleştirilebilir.

Jupyter Notebook dosyasını indirmenizi ve kodu ayrıntılı olarak keşfetmenizi öneririz. Farklı parametrelerle denemeler yapın, farklı veri kümelerinde test edin ve nasıl performans gösterdiğini görün. Algoritmayı ihtiyaçlarınıza ve fikirlerinize uyacak şekilde değiştirmekten ve geliştirmekten çekinmeyin.

Bu videonun ve beraberindeki kodun, kendi kanal algılama algoritmanızı geliştirmeniz için size fikir ve ilham vermesini umuyoruz. Anahtarın, temeldeki kavramları anlamak ve bunları özel ihtiyaçlarınıza ve pazar koşullarına uyarlamak olduğunu unutmayın.

İzlediğiniz için teşekkür ederiz, geri bildirimlerinizi ve sorularınızı bekliyoruz. Mutlu kodlama!

Price Trend Channels Automated In Python
Price Trend Channels Automated In Python
  • 2021.10.30
  • www.youtube.com
This video is about detecting price trend and price channels and how to automate this process in Python. The algorithm is presented and explained then the co...