EMA RSI Xu hướng chênh lệch ẩn theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-02-02 16:54:27
Tags:

img

Tổng quan

Chiến lược này mở các vị trí dài dựa trên tín hiệu chênh lệch tăng ẩn EMA và RSI để xác định sự bắt đầu của xu hướng tăng. Sự kết hợp của các đường EMA, chỉ số RSI và giá đóng K-line cung cấp sự xác nhận kép để đảm bảo đà tăng. Chiến lược này phù hợp để theo dõi xu hướng trung dài hạn và mở các vị trí dài sau khi củng cố giá.

Chiến lược logic

  1. Chiến lược EMA: Sử dụng đường chéo vàng giữa đường EMA 50 giai đoạn và đường EMA 250 giai đoạn để xác định hướng xu hướng.

  2. Chiến lược chênh lệch ẩn của chỉ số RSI: Chỉ số RSI hình thành mức thấp hơn trong khi giá hình thành mức thấp hơn, báo hiệu một sự đảo ngược xu hướng ở đầu.

  3. Chiến lược đóng cửa K-line: Đi dài khi giá đóng cửa trên đường EMA 50.

Sự kết hợp của ba chiến lược trên xác định sự khởi đầu của một xu hướng tăng và mở các vị trí dài phù hợp.

Phân tích lợi thế

  1. Sử dụng đường EMA để xác định hướng xu hướng cùng với các tín hiệu đảo ngược RSI cho phép nhập sớm vào đầu xu hướng.

  2. Sự xác nhận kép từ đường EMA, chỉ số RSI và giá đóng đường K có hiệu quả lọc ra các tín hiệu sai.

  3. Theo dõi các xu hướng trung bình dài hạn làm cho nó phù hợp để xác định các xu hướng tăng mới sau khi củng cố.

Phân tích rủi ro

  1. Đóng các vị trí khi đường EMA có đường thập tự tử.

  2. Xác định sự khác biệt ẩn của RSI cần kinh nghiệm, điều chỉnh tham số không đúng có thể dẫn đến tín hiệu bị thiếu hoặc sai.

  3. Các thông số cần tối ưu hóa cho các công cụ giao dịch khác nhau.

Hướng dẫn tối ưu hóa

  1. Điều chỉnh động các thông số EMA để xác định xu hướng chính xác hơn.

  2. Điều chỉnh chính xác các thông số RSI cho độ chính xác tín hiệu phân kỳ ẩn tốt hơn.

  3. Thêm các cơ chế dừng lỗ như ATR hoặc dừng phần trăm để kiểm soát rủi ro.

  4. Phát triển các chiến lược cho các vị trí ngắn để giao dịch xu hướng giảm.

Kết luận

Chiến lược này kết hợp các đường EMA để xác định xu hướng và các tín hiệu RSI để tăng độ chính xác. Nó xác định xu hướng tăng mới sau khi hợp nhất. Với điều chỉnh tham số và quản lý rủi ro thích hợp, nó có thể đạt được kết quả tốt. So với các chiến lược trung bình động đơn giản, nó có độ chính xác cao hơn trong việc nắm bắt xu hướng với tỷ lệ thắng tốt hơn.


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

//@version=4

strategy(title="EMA RSI ATR Hidden Div Strat", shorttitle="Hidden Div Strat", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=5000, currency=currency.USD)

// 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=2016)
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

// Bar's time happened on/after start date?
afterStartDate = time >= start and time<=finish?true:false

//EMA'S
emasrc = close

len1 = input(50, minval=1, title="EMA1")
ema1 = ema(emasrc, len1)
col1 = color.white

len2 = input(250, minval=1, title="EMA2")
ema2 = ema(emasrc, len2)
col2 = color.yellow

//Plots
plot(ema1, title="EMA1", linewidth=1, color=col1)
plot(ema2, title="EMA2", linewidth=1, color=col2)

//Stoch
periodK = input(4, title="K", minval=1)
periodD = input(4, title="D", minval=1)
smoothK = input(3, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

//Hidden Divergence Indikator

len = input(title="RSI Period", minval=1, defval=14)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=1)
lbL = input(title="Pivot Lookback Left", defval=19)
rangeUpper = input(title="Max of Lookback Range", defval=20)
rangeLower = input(title="Min of Lookback Range", defval=4)
hiddenBullColor = color.new(color.green, 80)
textColor = color.white
noneColor = color.new(color.white, 100)
osc = rsi(src, len)

plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
	bars = barssince(cond == true)
	rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low

oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low

priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)
hiddenBullCond = priceHL and oscLL and plFound

//buy Conditions
buyhiddenbull = hiddenBullCond[1] or hiddenBullCond[2] or hiddenBullCond[3] or hiddenBullCond[4] or hiddenBullCond[5] or hiddenBullCond[6] or hiddenBullCond[7] or hiddenBullCond[8] or hiddenBullCond[9] or hiddenBullCond[10]
emacondition = ema1 > ema2
upcondition = close[1] > ema1[1] and ema2[1] and close[2] > ema1[2] and ema2[2] and close[3] > ema1[3] and ema2[3]
crossup = k[0] >= d[0] and k[1] <= d[1]
longcondition = emacondition and upcondition and crossup and buyhiddenbull

if (afterStartDate)
    strategy.entry("Long", strategy.long, when = longcondition)

//TakeProfit, StopLoss lowest low
profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=1.6)
loLen = input(title="Lowest Low Lookback", type=input.integer,
  defval=38, minval=2)
stop_level = lowest(low, loLen)[1]
bought = strategy.position_size[1] < strategy.position_size
barsbought = barssince(bought)

if strategy.position_size>0
    profit_level = strategy.position_avg_price + ((strategy.position_avg_price - stop_level[barsbought])*profitfactor)
    strategy.exit(id="TP/ SL", stop=stop_level[barsbought], limit=profit_level)

Thêm nữa