Strategi ayunan jangka pendek berdasarkan CCI dan EMA


Tarikh penciptaan: 2024-01-31 16:01:21 Akhirnya diubah suai: 2024-01-31 16:01:21
Salin: 0 Bilangan klik: 1117
1
fokus pada
1617
Pengikut

Strategi ayunan jangka pendek berdasarkan CCI dan EMA

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan short-line oscillatory yang menggabungkan EMA Mean Line dan CCI untuk mengenal pasti trend short-line dan overbought dan oversold di pasaran untuk menangkap peluang pergerakan harga short-line.

Prinsip Strategi

Strategi ini menggunakan tiga garis rata-rata EMA 10 hari, EMA 21 hari dan EMA 50 hari serta indikator CCI untuk menentukan masa masuk dan keluar.

Logiknya ialah: Apabila garis purata jangka pendek (EMA 10 hari) melintasi garis purata jangka pendek (EMA 21 hari) dan garis purata jangka pendek lebih tinggi daripada garis purata jangka panjang (EMA 50 hari), dan CCI lebih besar daripada 0 dianggap sebagai isyarat multicore, lakukan lebih banyak; apabila garis purata jangka pendek melintasi garis purata jangka pendek di bawah garis purata jangka pendek dan garis purata jangka pendek lebih rendah daripada garis purata jangka panjang, dan CCI kurang dari 0 dianggap sebagai isyarat kosong, kosong.

Logik kedudukan sejajar adalah kedudukan sejajar apabila garis purata jangka pendek melintasi semula garis purata jangka menengah.

Kelebihan Strategik

  1. Gabungan sistem garis rata dan penunjuk CCI, dapat mengenal pasti dengan berkesan arah trend turun naik harga garis pendek dan keadaan overbought dan oversold.

  2. Menggunakan garpu rata-rata dan garpu mati untuk menilai entries dan exists, mudah dan praktikal.

  3. Indeks CCI mempunyai parameter dan tetapan kitaran yang lebih munasabah, yang dapat menghapuskan beberapa isyarat palsu.

  4. Garis purata pelbagai kitaran masa digunakan untuk mendapatkan peluang operasi yang lebih baik di pasaran yang bergolak.

Risiko Strategik

  1. Operasi garis pendek berfluktuasi besar, dan kerugian berturut-turut mungkin lebih banyak.

  2. Pengaturan parameter penunjuk CCI yang tidak betul boleh meningkatkan isyarat palsu.

  3. Strategi ini boleh menyebabkan kerugian kecil beberapa kali dalam tempoh pengumpulan.

  4. Hanya sesuai untuk peniaga yang sering menggunakan garis pendek, tidak sesuai untuk memegang garis panjang.

Langkah-langkah tindak balas risiko yang sesuai termasuk: mengoptimumkan parameter CCI, menyesuaikan kedudukan hentian, menambah syarat FILTER dan sebagainya.

Arah pengoptimuman strategi

  1. Anda boleh menguji kombinasi garis purata EMA dengan panjang yang berbeza, parameter pengoptimuman ≠

  2. Indikator lain atau syarat Filter boleh ditambah untuk menyaring beberapa isyarat palsu. Contohnya MACD, KDJ dan sebagainya.

  3. Kerugian tunggal boleh dikawal dengan tracking stop loss secara dinamik.

  4. Indeks trend boleh digabungkan dengan tempoh masa yang lebih tinggi, mengelakkan operasi berlawanan arah.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi getaran garis pendek yang tipikal, menggunakan forks emas dan forks mati penunjuk rata-rata yang digabungkan dengan keadaan overbought dan oversold dalam penunjuk CCI untuk menangkap peluang pembalikan harga dalam jangka pendek. Strategi ini sesuai untuk perdagangan yang kerap di garis pendek, tetapi memerlukan tekanan berhenti tertentu.

Kod 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")