Strategi perdagangan breakout tinggi candlestick dengan beberapa moving average, RSI, dan exit deviasi standar


Tanggal Pembuatan: 2024-03-28 16:13:45 Akhirnya memodifikasi: 2024-03-28 16:13:45
menyalin: 0 Jumlah klik: 671
1
fokus pada
1617
Pengikut

Strategi perdagangan breakout tinggi candlestick dengan beberapa moving average, RSI, dan exit deviasi standar

Tinjauan Strategi

Strategi ini menggabungkan beberapa indeks moving average (EMA), relative strength index (RSI) dan kondisi keluar standar deviasi untuk mengidentifikasi peluang jual beli potensial. EMA jangka pendek (6,8,12 hari), menengah (5,5 hari) dan jangka panjang (150-200,250 hari) digunakan untuk menganalisis arah dan intensitas tren pasar. RSI menggunakan parameter buy (30) dan sell (70 hari) yang dapat dikonfigurasi untuk menilai momentum dan mengidentifikasi kondisi overbought atau oversold.

Prinsip Strategi

  1. Menghitung EMA dalam beberapa periode (6, 8, 12, 55, 100, 150, 200) sebagai referensi visual untuk menilai tren pasar.
  2. Berdasarkan jumlah kabel yang dimasukkan oleh pengguna ((3-4 akar), hitung harga tertinggi dan terendah dari N kabel yang paling baru.
  3. Kondisi pembelian: Harga penutupan saat ini lebih tinggi dari harga tertinggi N yang paling baru dan lebih tinggi dari filter EMA (jika diaktifkan).
  4. Kondisi Penjualan: Harga penutupan saat ini lebih rendah dari harga terendah dari garis akar N terbaru, dan lebih rendah dari filter EMA ((jika diaktifkan)).
  5. Kondisi keluar posisi panjang: harga penutupan saat ini di bawah EMA 12 hari + 0,5 kali selisih standar, atau di bawah EMA 12 hari.
  6. Kondisi keluar posisi pendek: harga penutupan saat ini lebih tinggi dari EMA 12 hari - 0,5 kali selisih standar, atau lebih tinggi dari EMA 12 hari.
  7. Menggunakan RSI sebagai indikator tambahan, siklus default adalah 14, overbought adalah 30, overbought adalah 70.

Keunggulan Strategis

  1. Menggabungkan dua dimensi trend tracking (multiple EMA) dan momentum (RSI), memberikan perspektif analisis pasar yang lebih komprehensif.
  2. Mekanisme penarikan yang unik berdasarkan standar deviasi yang dapat menyeimbangkan antara perlindungan keuntungan dan pengendalian risiko.
  3. Kode modularitas tinggi, parameter kunci dapat dikonfigurasi oleh pengguna, dan fleksibilitas yang kuat.
  4. Ini berlaku untuk berbagai jenis dan periode waktu, terutama untuk perdagangan saham dan bitcoin di Sun Line.

Analisis risiko

  1. Pada saat pasar bergoyang atau pada awal pembalikan tren, sering terjadi sinyal palsu yang menyebabkan kerugian beruntun.
  2. Parameter default tidak berlaku untuk semua lingkungan pasar, dan perlu dioptimalkan dengan kombinasi feedback.
  3. Perdagangan dengan strategi ini saja berisiko tinggi, dan disarankan untuk menggabungkannya dengan indikator lain untuk mendukung resistance level dan lain-lain.
  4. Reaksi yang lambat terhadap perubahan tren yang ditimbulkan oleh peristiwa-peristiwa besar mendadak.

Arah optimasi

  1. Optimalkan parameter EMA dan RSI: Periksa kombinasi parameter berdasarkan varietas, siklus, dan karakteristik pasar untuk mencari kisaran parameter optimal.
  2. Menambahkan mekanisme stop loss: merujuk pada indikator volatilitas seperti ATR, mengatur stop loss dan stop loss yang masuk akal, mengendalikan risiko perdagangan tunggal.
  3. Pengelolaan posisi: ukuran posisi dapat diatur berdasarkan kekuatan tren (seperti ADX) atau jarak dari titik resistensi pendukung utama.
  4. Penggunaan kombinasi dengan indikator teknis lainnya, seperti Brinband, MACD, dan Linear Crossover, meningkatkan keandalan sinyal posisi terbuka.
  5. Optimalisasi kondisi pasar: kombinasi parameter yang dioptimalkan untuk kondisi pasar yang berbeda seperti tren, getaran, dan perubahan.

Meringkaskan

Artikel ini menawarkan strategi perdagangan yang sangat terobosan berdasarkan beberapa moving average, RSI, dan standar deviasi. Strategi ini menganalisis pasar dari dua dimensi tren dan momentum, dan menggunakan mekanisme standar deviasi yang unik untuk mengendalikan risiko sambil menangkap peluang tren. Strategi ini memiliki ide yang jelas, logika yang ketat, kode yang sederhana dan efisien.

Kode Sumber Strategi
/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Candle Height Breakout with Configurable Exit and Signal Control", shorttitle="CHB Single Signal", overlay=true)

// Input parameters for EMA filter and its length
useEmaFilter = input.bool(true, "Use EMA Filter", group="Entry Conditions")
emaFilterLength = input.int(55, "EMA Filter Length", minval=1, group="Entry Conditions")
candleCount = input.int(4, "SamG Configurable Candle Count for Entry", minval=3, maxval=4, step=1, group="Entry Conditions")
exitEmaLength = input.int(12, "Exit EMA Length", minval=1, group="Exit Conditions", defval=12)
exitStdDevMultiplier = input.float(0.5, "Exit Std Dev Multiplier", minval=0.1, maxval=2.0, step=0.1, group="Exit Conditions")

// State variables to track if we are in a long or short position
var bool inLong = false
var bool inShort = false

// Calculating EMAs with fixed periods for visual reference
ema6 = ta.ema(close, 6)
ema8 = ta.ema(close, 8)
ema12 = ta.ema(close, 12)
ema55 = ta.ema(close, 55)
ema100 = ta.ema(close, 100)
ema150 = ta.ema(close, 150)
ema200 = ta.ema(close, 200)
emaFilter = ta.ema(close, emaFilterLength)
exitEma = ta.ema(close, exitEmaLength)

// Plotting EMAs
plot(ema6, "EMA 6", color=color.red)
plot(ema8, "EMA 8", color=color.orange)
plot(ema12, "EMA 12", color=color.yellow)
plot(ema55, "EMA 55", color=color.green)
plot(ema100, "EMA 100", color=color.blue)
plot(ema150, "EMA 150", color=color.purple)
plot(ema200, "EMA 200", color=color.fuchsia)
plot(emaFilter, "EMA Filter", color=color.black)
plot(exitEma, "Exit EMA", color=color.gray)

// Calculating the highest and lowest of the last N candles based on user input
highestOfN = ta.highest(high[1], candleCount)
lowestOfN = ta.lowest(low[1], candleCount)

// Entry Conditions with EMA Filter
longEntryCondition = not inLong and not inShort and (close > highestOfN) and (not useEmaFilter or (useEmaFilter and close > emaFilter))
shortEntryCondition = not inLong and not inShort and (close < lowestOfN) and (not useEmaFilter or (useEmaFilter and close < emaFilter))

// Update position state on entry
if (longEntryCondition)
    strategy.entry("Buy", strategy.long, comment="B")
    inLong := true
    inShort := false

if (shortEntryCondition)
    strategy.entry("Sell", strategy.short, comment="S")
    inLong := false
    inShort := true

// Exit Conditions based on configurable EMA and Std Dev Multiplier
smaForExit = ta.sma(close, exitEmaLength)
upperExitBand = smaForExit + exitStdDevMultiplier * ta.stdev(close, exitEmaLength)
lowerExitBand = smaForExit - exitStdDevMultiplier * ta.stdev(close, exitEmaLength)

exitConditionLong = inLong and (close < upperExitBand or close < exitEma)
exitConditionShort = inShort and (close > lowerExitBand or close > exitEma)

// Strategy exits
if (exitConditionLong)
    strategy.close("Buy", comment="Exit")
    inLong := false

if (exitConditionShort)
    strategy.close("Sell", comment="Exit")
    inShort := false

// Visualizing entry and exit points
plotshape(series=longEntryCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal", text="B")
plotshape(series=shortEntryCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal", text="S")