Strategi perdagangan agregat berdasarkan indikator momentum


Tanggal Pembuatan: 2024-02-21 11:59:22 Akhirnya memodifikasi: 2024-02-21 11:59:22
menyalin: 0 Jumlah klik: 597
1
fokus pada
1617
Pengikut

Strategi perdagangan agregat berdasarkan indikator momentum

Ringkasan

Strategi ini menggunakan berbagai indikator teknis seperti moving averages, MACD, RSI, dan Brinks. Strategi ini menggabungkan berbagai sinyal beli dan jual untuk membentuk strategi perdagangan agregat indikator momentum yang lebih baik.

Prinsip Strategi

Logika inti dari strategi ini adalah agregasi sinyal beli dan jual dari berbagai indikator teknis, yang secara khusus mencakup beberapa aspek berikut:

  1. Indikator Moving Average: Menghitung rata-rata bergerak cepat dan rata-rata bergerak lambat, menghasilkan sinyal beli saat melewati garis lambat di garis cepat, menghasilkan sinyal jual saat melewati garis lambat.

  2. Indikator MACD: Menghitung garis MACD dan garis sinyal, menghasilkan sinyal beli ketika MACD melintasi garis sinyal dan menghasilkan sinyal jual saat melintasi garis sinyal.

  3. Indikator RSI: Menghitung nilai RSI untuk menentukan apakah masuk ke zona overbought atau oversold, dan menggabungkan garis RSI dengan garis 50 sumbu tengah untuk menghasilkan sinyal jual beli.

  4. Indikator Brin Belt: menentukan apakah harga akan menembus tren naik atau turun, dan menggabungkan sinyal dari tren mundur untuk menghasilkan sinyal beli dan jual.

  5. Pengadilan Keluar: Menetapkan standar stop loss dan keluar dari posisi jika mencapai proporsi tertentu.

Setiap modul sinyal yang disebutkan di atas saling independen, strategi akan memantau sinyal ini secara real-time, melakukan posisi terbuka lebih banyak saat memicu sinyal beli, membuka posisi kosong saat memicu sinyal jual, dan mencapai agregasi dinamis untuk mendapatkan profit.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Sumber Sinyal yang Berlimpah: Digabungkan dengan berbagai indikator teknis untuk membeli dan menjual sinyal, tidak mudah untuk melewatkan peluang pasar.

  2. Mengurangi sinyal palsu: verifikasi agregat dari sinyal indikator yang berbeda, dapat mengurangi dampak negatif dari sinyal palsu pada beberapa indikator.

  3. Menggunakan indikator tren seperti moving average, dan indikator reversal seperti RSI, MACD, dapat memberikan hasil yang baik dalam berbagai situasi.

  4. Stop loss otomatis: Strategi ini memiliki mekanisme stop loss otomatis yang dapat mengontrol risiko secara efektif dan mencegah peningkatan kerugian.

Analisis risiko

Strategi ini juga memiliki beberapa risiko, terutama dalam hal berikut:

  1. Risiko kegagalan indikator: Dalam situasi tertentu, setiap indikator mungkin mengalami kegagalan tertentu, yang menyebabkan sinyal menyimpang.

  2. Masalah dengan overagglomeration: sinyal yang terlalu teragglomerasi, mudah menghasilkan resolusi indikator yang kurang, kehilangan beberapa peluang.

  3. Parameter optimasi sulit: Karena lebih banyak indikator, parameter optimasi akan lebih sulit, parameter indikator yang tidak tepat juga dapat mempengaruhi kinerja strategi.

  4. Tingkat pergantian tangan yang tinggi: sinyal strategi yang lebih sering, yang dapat menyebabkan tingkat pergantian tangan yang lebih tinggi dan meningkatkan biaya transaksi.

Arah optimasi

Strategi ini memiliki beberapa ruang untuk pengoptimalan, yang dapat dimulai dari beberapa hal:

  1. Untuk menguji dan mengoptimalkan setiap indikator dan parameter, untuk menemukan kombinasi indikator terbaik.

  2. Optimalisasi parameter yang dilakukan secara manual dapat dihindari dengan mencari parameter optimal secara otomatis melalui metode pembelajaran mesin.

  3. Uji berbagai cara penumpuan berat indikator untuk menemukan solusi optimal untuk penumpuan sinyal.

  4. Menambahkan mekanisme stop loss yang dapat menyesuaikan standar stop loss secara otomatis sesuai dengan fluktuasi pasar.

  5. Meningkatkan algoritma pembukaan posisi, mengontrol rasio pembukaan posisi tunggal, dan mengurangi risiko tunggal.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi perdagangan agregat indikator dinamika yang relatif khas dan umum, menggunakan sinyal jual beli dari berbagai indikator teknis umum secara komprehensif, untuk meningkatkan kinerja strategi melalui agregasi sinyal. Dibandingkan dengan strategi indikator tunggal, memiliki sumber sinyal yang lebih kaya, identifikasi tren, dan pembalikan yang lebih komprehensif.

Kode Sumber Strategi
/*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)