Penulis:ChaoZhang, Tarikh: 2024-01-26 16:07:34
Tag:

img

Ringkasan

Logika Strategi

  1. Tiga EMA untuk menentukan trend: EMA 8 hari di bahagian atas, EMA 14 hari di tengah dan EMA 50 hari di bahagian bawah membentuk trend menaik; sebaliknya membentuk trend menurun.

  2. Hanya pergi panjang; pendek tidak dipertimbangkan untuk sekarang.

Apabila Tiga EMA menunjukkan trend menaik dan Stochastic RSI menghasilkan salib emas, pergi panjang. Tetapkan stop loss dan ambil keuntungan berdasarkan ini untuk mengunci keuntungan.

Analisis Kelebihan

Kelebihan utama strategi ini dengan penentuan penunjuk berganda adalah:

  1. Tiga EMA menapis kebisingan jangka pendek dan kunci dalam trend jangka sederhana dan panjang.

  2. RSI Stochastic golden cross mengesahkan trend menaik yang kuat.

  3. Logik strategi yang mudah dan jelas, mudah difahami dan dilaksanakan.

Analisis Risiko

Risiko utama strategi ini ialah:

Arahan pengoptimuman

Arah pengoptimuman utama termasuk:

  1. Mengoptimumkan parameter EMA untuk meningkatkan penentuan trend.

  2. Tambah MACD dan lain-lain untuk menentukan trend menurun dan meningkatkan peluang pendek.

  3. Masukkan bunyi untuk mengelakkan gangguan palsu.

  4. Menggunakan pembelajaran mesin dan lain-lain untuk pengoptimuman parameter.

Kesimpulan

Ringkasnya, strategi Three EMA Stochastic RSI Crossover berkesan menapis penyatuan dan kunci dalam trend dengan menggabungkan penentuan penunjuk dua, menjadikannya strategi trend yang mudah dan praktikal.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Stoch RSI Crossover Strat + EMA", shorttitle="Stoch RSI Cross + EMA Strat", overlay = true)

// Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2017)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true

// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false

//STOCH RSI
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

//ATR
lengthATR = input(title="ATR Length", defval=14, minval=1)
atr = atr(lengthATR)

//MULTI EMA
emasrc = close, 
len1 = input(8, minval=1, title="EMA 1")
len2 = input(14, minval=1, title="EMA 2")
len3 = input(50, minval=1, title="EMA 3")

ema1 = ema(emasrc, len1)
ema2 = ema(emasrc, len2)
ema3 = ema(emasrc, len3)

col1 = color.lime
col2 = color.blue
col3 = color.orange

//EMA Plots
//plot(ema1, title="EMA 1", linewidth=1, color=col1)
//plot(ema2, title="EMA 2", linewidth=1, color=col2)
//plot(ema3, title="EMA 3", linewidth=1, color=col3)

crossup = k[0] > d[0] and k[1] <= d[1]
emapos = ema1 > ema2 and ema2 > ema3 and close > ema1
barbuy = crossup and emapos

//plotshape(crossup, style=shape.triangleup, location=location.belowbar, color=color.white)
plotshape(barbuy, style=shape.triangleup, location=location.belowbar, color=color.green)

longloss = sma(open, 1)
//plot(longloss, color=color.red)

//Buy and Sell Factors
profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=2)
stopfactor = input(title="Stopfactor", type=input.float, step=0.1, defval=3)
bought = strategy.position_size[1] < strategy.position_size
longcondition = barbuy

if (longcondition) and (afterStartDate) and strategy.opentrades < 1
    strategy.entry("Long", strategy.long)

if (afterStartDate) and strategy.opentrades > 0
    barsbought = barssince(bought)
    profit_level = strategy.position_avg_price + (atr*profitfactor)
    stop_level = strategy.position_avg_price - (atr*stopfactor)
    strategy.exit("Take Profit/ Stop Loss", "Long", stop=stop_level[barsbought], limit=profit_level[barsbought])









Lebih lanjut