Strategi osilasi jangka pendek berdasarkan CCI dan EMA


Tanggal Pembuatan: 2024-01-31 16:01:21 Akhirnya memodifikasi: 2024-01-31 16:01:21
menyalin: 0 Jumlah klik: 1117
1
fokus pada
1617
Pengikut

Strategi osilasi jangka pendek berdasarkan CCI dan EMA

Ringkasan

Strategi ini adalah strategi perdagangan short-line oscillator yang menggabungkan indikator EMA dan CCI untuk mengidentifikasi tren short-line dan overbought oversold di pasar untuk menangkap peluang pergerakan harga short-line.

Prinsip Strategi

Strategi ini terutama menggunakan 10 hari EMA, 21 hari EMA dan 50 hari EMA tiga garis rata-rata dan indikator CCI untuk menilai masuk dan keluar waktu.

Logika yang tepat adalah: Bila rata-rata jangka pendek (EMA 10 hari) di atas melewati rata-rata jangka menengah (EMA 21 hari) dan rata-rata jangka pendek lebih tinggi dari rata-rata jangka panjang (EMA 50 hari), dan indikator CCI lebih besar dari 0 dianggap sebagai sinyal multihead, lakukan lebih banyak; Bila rata-rata jangka pendek di bawah melewati rata-rata jangka menengah dan rata-rata jangka pendek lebih rendah dari rata-rata jangka panjang, dan indikator CCI kurang dari 0 dianggap sebagai sinyal kosong, kosongkan.

Logika posisi terdepan adalah posisi terdepan ketika garis rata-rata jangka pendek kembali melintasi garis rata-rata jangka menengah.

Keunggulan Strategis

  1. Kombinasi sistem linear dan indikator CCI, dapat secara efektif mengidentifikasi arah tren dari pergerakan harga garis pendek dan kondisi overbought dan oversold.

  2. Menggunakan garpu rata-rata dan garpu mati untuk menilai entries dan exists, sederhana dan praktis.

  3. Indikator CCI memiliki parameter dan pengaturan periodik yang cukup masuk akal, yang dapat menghapus beberapa sinyal palsu.

  4. Garis rata dengan periode waktu yang berbeda dapat memberikan peluang operasional yang lebih baik di pasar yang bergejolak.

Risiko Strategis

  1. Operasi garis pendek berfluktuasi besar, dan kemungkinan lebih banyak stop loss beruntun.

  2. Pengaturan parameter indikator CCI yang tidak tepat dapat meningkatkan sinyal palsu.

  3. Strategi ini dapat menyebabkan kerugian kecil beberapa kali selama penghitungan resesi.

  4. Hanya cocok untuk pedagang yang sering melakukan operasi garis pendek, tidak cocok untuk memegang garis panjang.

Respons risiko yang sesuai meliputi: mengoptimalkan parameter CCI, menyesuaikan posisi stop loss, meningkatkan kondisi FILTER, dan lain-lain.

Arah optimasi strategi

  1. Anda dapat menguji kombinasi garis rata-rata EMA dengan panjang yang berbeda, dan mengoptimalkan parameter.

  2. Indikator lain atau kondisi Filter dapat ditambahkan untuk memfilter beberapa sinyal palsu. Misalnya MACD, KDJ dan sebagainya.

  3. Anda dapat mengontrol kerugian tunggal dengan melakukan stop loss secara dinamis.

  4. Indikator tren dapat dikombinasikan dengan periode waktu yang lebih tinggi untuk menghindari operasi berlawanan arah.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi getaran garis pendek yang khas, memanfaatkan posisi overbought dan oversold indikator CCI untuk menangkap peluang reversal harga dalam jangka pendek. Strategi ini cocok untuk perdagangan yang sering terjadi di garis pendek, tetapi perlu menanggung tekanan stop loss tertentu. Dengan mengoptimalkan parameter dan menambahkan kondisi filter, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)
strategy("Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)

exponential = input(true, title="Exponential MA")

// the risk management inputs
inpTakeProfit   = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

src = close

ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma21 = exponential ? ema(src, 21) : sma(src, 21)
ma50 = exponential ? ema(src, 50) : sma(src, 50)

xCCI = cci(close, 200)

//buy_cond = cross(ma21, ma50) and ma10 > ma21 and (xCCI > 0)
//sell_cond = cross(ma21, ma50) and ma10 < ma21  and (xCCI < 0)

buy_cond = ma10 > ma21 and ma10 > ma50 and xCCI > 0
sell_cond = ma10 < ma21 and ma10 < ma50 and xCCI < 0



// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => buy_cond
exitLong() => ma10 < ma21
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => sell_cond
exitShort() => ma10 > ma21
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)




//longCondition = buy_cond
//if(longCondition)
//    strategy.entry("Long", strategy.long)
//    strategy.exit("Close Long", "Long", when = exitLong())
    
//shortCondition = sell_cond
//if(shortCondition)
//    strategy.entry("Short", strategy.short)
//    strategy.exit("Close Short", "Short",  when = exitShort())

//plotshape(buy_cond, style=shape.flag, color=green, size=size.normal)
//plotshape(sell_cond, style=shape.flag, color=red, size=size.normal)

c1 = buy_cond==1 ? lime : sell_cond==1 ? red : #a3a3a3 // color

plot( ma10, color=red, style=line, title="10", linewidth=1)
plot( ma21, color=orange, style=line, title="21", linewidth=1)
plot( ma50, color=c1, style=line, title="50", linewidth=3)

//alertcondition(buy_cond, title = "Buy Condition", message = "Buy Condition Alert")
//alertcondition(sell_cond, title = "Sell Condition", message = "Sell Condition Alert")