
Strategi ini menggunakan pelbagai petunjuk teknikal seperti purata bergerak, MACD, RSI, dan Brinks untuk menggabungkan pelbagai isyarat beli dan jual untuk membentuk strategi perdagangan agregat indikator momentum yang lebih baik.
Logik utama strategi ini adalah untuk mengumpul isyarat beli dan jual dari pelbagai petunjuk teknikal, terutamanya yang merangkumi:
Penunjuk purata bergerak: mengira purata bergerak cepat dan purata bergerak perlahan, menghasilkan isyarat beli apabila melintasi garis perlahan pada garis cepat, menghasilkan isyarat jual apabila melintasi garis perlahan.
Indikator MACD: Mengira garisan MACD dan garisan isyarat, menghasilkan isyarat beli apabila MACD melintasi garisan isyarat, menghasilkan isyarat jual apabila ia melintasi garisan isyarat.
Penunjuk RSI: Mengira nilai RSI untuk menentukan sama ada memasuki kawasan overbought atau oversold, dan menggabungkan garis RSI dengan garis 50 sumbu tengah untuk menghasilkan tanda beli dan jual.
Indikator Brin Belt: menentukan sama ada harga menembusi ke atas atau ke bawah dan menghasilkan isyarat membeli dan menjual yang digabungkan dengan isyarat di tengah-tengah.
Penghakiman Keluar: menetapkan standard stop loss dan keluar dari kedudukan apabila mencapai peratusan tertentu.
Setiap modul isyarat di atas adalah berasingan antara satu sama lain, strategi akan memantau isyarat ini dalam masa nyata, membuka lebih banyak kedudukan apabila mencetuskan isyarat beli, membuka posisi kosong apabila mencetuskan isyarat jual, untuk mencapai pengumpulan dinamik untuk mendapatkan disc keuntungan.
Strategi ini mempunyai beberapa kelebihan:
Sumber isyarat yang kaya: gabungan pelbagai petunjuk teknikal untuk membeli dan menjual isyarat, tidak mudah untuk ketinggalan peluang pasaran.
Mengurangkan isyarat palsu: pengesahan agregat isyarat indikator yang berbeza dapat mengurangkan kesan buruk isyarat palsu pada beberapa indikator.
Mengambil kira trend dan pembalikan: Penggunaan petunjuk trend seperti purata bergerak, serta petunjuk pembalikan seperti RSI, MACD, dapat memberikan kesan yang baik dalam pelbagai keadaan.
Stop Loss Auto: Strategi ini mempunyai mekanisme stop loss auto yang boleh mengawal risiko dengan berkesan dan mengelakkan peningkatan kerugian.
Strategi ini juga mempunyai beberapa risiko, terutamanya dalam aspek berikut:
Risiko kegagalan penunjuk: Dalam keadaan tertentu, setiap penunjuk mungkin mengalami kegagalan tertentu, yang menyebabkan isyarat menjadi menyimpang.
Masalah overagglomeration: isyarat terlalu teragglomerasi, mudah untuk menghasilkan resolusi indikator yang kurang baik, kehilangan sebahagian peluang.
Kesukaran untuk mengoptimumkan parameter: Oleh kerana terdapat banyak indikator, pengoptimuman parameter akan menjadi lebih sukar, dan parameter indikator yang tidak betul juga boleh mempengaruhi prestasi strategi.
Kadar pertukaran tangan yang tinggi: isyarat strategi yang lebih kerap menyebabkan kadar pertukaran tangan yang lebih tinggi dan meningkatkan kos transaksi.
Strategi ini mempunyai ruang untuk pengoptimuman, yang boleh bermula dari beberapa aspek:
Uji dan optimumkan setiap parameter dan parameter untuk mencari kombinasi terbaik.
Menggunakan kaedah pembelajaran mesin untuk mencari parameter yang optimum secara automatik, mengelakkan pengoptimuman parameter manual.
Uji cara penumpuan berat penunjuk yang berbeza untuk mencari penyelesaian terbaik untuk penumpuan isyarat.
Menambah mekanisme penangguhan yang dapat menyesuaikan penangguhan secara automatik mengikut turun naik pasaran.
Menambah algoritma pembukaan kedudukan, mengawal peratusan pembukaan kedudukan tunggal, mengurangkan risiko tunggal.
Strategi ini secara keseluruhannya adalah strategi perdagangan pengumpulan penunjuk dinamik yang lebih tipikal dan umum, menggunakan sinyal jual beli pelbagai petunjuk teknikal yang biasa, untuk meningkatkan prestasi strategi melalui pengumpulan isyarat. Berbanding dengan strategi penunjuk tunggal, ia mempunyai kelebihan seperti sumber isyarat yang lebih kaya, pengenalan trend dan pembalikan yang lebih komprehensif. Pada masa yang sama, kesukaran pengoptimuman parameter yang besar, peningkatan risiko kegagalan penunjuk juga merupakan masalah yang perlu diperhatikan. Dengan ujian dan pengoptimuman lanjut, strategi ini boleh menjadi alat perdagangan kuantitatif yang sangat praktikal.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Kesin Etkili Analiz V1 - Artun Sinan", overlay=true)
//indicator("Kesin Etkili Analiz V1 - Artun Sinan", overlay=true)
//BackTest
yearin = input (2019, title="BackTestBaşlangıç Tarihi")
// Göstergelerin parametrelerini tanımlayın
emaShrtPeriod = input.int(title="EMA Kısa Periyodu", defval=50, minval=1)
emaLngPeriod = input.int(title="EMA Uzun Periyodu", defval=100, minval=1)
maPeriod = input.int(50, "Hareketli Ortalama Periyodu", minval=1)
fast = input.int(12, "MACD Hızlı Periyodu", minval=1)
slow = input.int(26, "MACD Yavaş Periyodu", minval=1)
signal = input.int(9, "MACD Sinyal Periyodu", minval=1)
rsiPeriod = input.int(14, "RSI Periyodu", minval=1)
rsiOverbought = input.int(70, "RSI Aşırı Alım Eşiği", minval=50, maxval=100)
rsiOversold = input.int(30, "RSI Aşırı Satım Eşiği", minval=0, maxval=50)
bbPeriod = input.int(20, "Bollinger Bantları Periyodu", minval=1)
bbStd = input.float(2, "Bollinger Bantları Standart Sapması", minval=0.1)
//EMA göstergesi ayarları
ema1 = ta.ema (close,emaShrtPeriod)
ema2 = ta.ema (close, emaLngPeriod)
emaCrossUp = ema1 >= ema2
emaCrossDown = ema2 < ema1
plot(ema1, title="EMAKısa", color=color.rgb(0, 255, 13))
plot(ema2, title="EMAUzun", color=color.rgb(255, 251, 1))
// Göstergeleri hesaplayın
ma = ta.sma(close, maPeriod) // Hareketli ortalama
[macd, macdsignal, macdhist] = ta.macd(close, fast, slow, signal) // MACD
rsi = ta.rsi(close, rsiPeriod) // RSI
[upper, middle, lower] = ta.bb(close, bbPeriod, bbStd) // Bollinger Bantları
// Alım veya satım sinyalleri üretin
buySignal = false
sellSignal = false
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Fibonacci seviyelerini tanımlayın
fibLevels = array.new_float(7) // Fibonacci seviyelerini tutacak bir dizi oluşturun
array.set(fibLevels, 0, 0.0) // %0 seviyesini ayarlayın
array.set(fibLevels, 1, 0.236) // %23.6 seviyesini ayarlayın
array.set(fibLevels, 2, 0.382) // %38.2 seviyesini ayarlayın
array.set(fibLevels, 3, 0.5) // %50 seviyesini ayarlayın
array.set(fibLevels, 4, 0.618) // %61.8 seviyesini ayarlayın
array.set(fibLevels, 5, 0.786) // %78.6 seviyesini ayarlayın
array.set(fibLevels, 6, 1.0) // %100 seviyesini ayarlayın
// Tepe ve dip noktasını belirleyin
highpoint = ta.highest (high, 20) // Son 30 mum çubuğunun en yüksek değerini alın
lowpoint = ta.lowest (low, 20) // Son 30 mum çubuğunun en düşük değerini alın
diff = highpoint - lowpoint // Tepe ve dip noktası arasındaki farkı hesaplayın
// Fibonacci seviyelerini hesaplayın
fib0 = lowpoint + diff * array.get(fibLevels, 0) // %0 seviyesini hesaplayın
fib1 = lowpoint + diff * array.get(fibLevels, 1) // %23.6 seviyesini hesaplayın
fib2 = lowpoint + diff * array.get(fibLevels, 2) // %38.2 seviyesini hesaplayın
fib3 = lowpoint + diff * array.get(fibLevels, 3) // %50 seviyesini hesaplayın
fib4 = lowpoint + diff * array.get(fibLevels, 4) // %61.8 seviyesini hesaplayın
fib5 = lowpoint + diff * array.get(fibLevels, 5) // %78.6 seviyesini hesaplayın
fib6 = lowpoint + diff * array.get(fibLevels, 6) // %100 seviyesini hesaplayın
// Alım sinyali: Fiyat %61,8 seviyesinden yukarı yönlü kırılırsa ve MACD çizgisi sinyal çizgisinin üzerine çıkarsa, alım pozisyonu açın
alSignal = close > fib4 and ta.crossover(macd, macdsignal)
// Satım sinyali: Fiyat %61,8 seviyesinden aşağı yönlü kırılırsa ve MACD çizgisi sinyal çizgisinin altına inerse, satım pozisyonu açın
satSignal = close < fib4 and ta.crossunder(macd, macdsignal)
// Çıkış sinyali: Fiyat %38,2 Fibonacci seviyesine ulaşırsa veya belirli bir yüzde oranında kar veya zarar elde ederseniz, pozisyonu kapatın
exitSignal = close >= fib2 or close <= strategy.position_avg_price * 0.95 // Kar oranı olarak %5, zarar oranı olarak %5 belirledik
plot(fib0, title="%0", color=color.rgb(25, 0, 255))
plot(fib1, title="%23.6", color=color.rgb(25, 0, 255))
plot(fib2, title="%38.2", color=color.rgb(25, 0, 255))
plot(fib3, title="%50", color=color.rgb(25, 0, 255))
plot(fib4, title="%61.8", color=color.rgb(25, 0, 255))
plot(fib5, title="%78.6", color=color.rgb(25, 0, 255))
plot(fib6, title="%100", color=color.rgb(25, 0, 255))
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Hareketli ortalama kesişimi sinyali
maCrossUp = ta.crossover(ma, close) // Fiyat hareketli ortalamanın üzerine çıkarsa
maCrossDown = ta.crossunder(ma, close) // Fiyat hareketli ortalamanın altına inerse
// MACD çizgisi ve sinyal çizgisi kesişimi sinyali // Histogram yerine çizgiler
macdCrossUp = ta.crossover(macd, macdsignal) // MACD çizgisi sinyal çizgisinin üzerine çıkarsa
macdCrossDown = ta.crossunder(macd, macdsignal) // MACD çizgisi sinyal çizgisinin altına inerse
// RSI aşırı alım veya aşırı satım sinyali ve 50 seviyesi kesişimi sinyali // Sinyalleri birleştir
// Eşik değerleri doğrudan kullanın
rsiOverboughtSignal = rsi > rsiOverbought and ta.crossover(rsi, 50) // RSI değeri aşırı alım eşiğinin üzerindeyse ve 50 seviyesini yukarı keserse
rsiOversoldSignal = rsi < rsiOversold and ta.crossunder(rsi, 50) // RSI değeri aşırı satım eşiğinin altındaysa ve 50 seviyesini aşağı keserse
// Bollinger Bantları kırılımı sinyali ve orta bant geri dönüşü sinyali // Sinyalleri birleştir
bbBreakUp = close > upper and ta.crossover(close, middle) // Fiyat üst banttan çıkarsa ve orta banta geri dönerse
bbBreakDown = close < lower and ta.crossunder(close, middle) // Fiyat alt banttan inerse ve orta banta geri dönerse
// Sinyalleri birleştirin
buySignal := maCrossUp or macdCrossUp or rsiOversoldSignal or bbBreakUp or emaCrossUp and yearin >= year
sellSignal := maCrossDown or macdCrossDown or rsiOverboughtSignal or bbBreakDown or emaCrossDown and yearin >= year
// Sinyalleri grafikte oklar ile gösterin
plotshape(buySignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
plot(macd, title="MACD", color=color.blue) // MACD çizgisini mavi renkte çizin
plot(macdsignal, title="Sinyal", color=color.orange) // Sinyal çizgisini turuncu renkte çizin
if buySignal
strategy.entry("Enter Long", strategy.long)
else if sellSignal
strategy.entry("Enter Short", strategy.short)