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 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.
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.
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.
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.
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.
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ố.
Đóng các vị trí khi đường EMA có đường thập tự tử.
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.
Các thông số cần tối ưu hóa cho các công cụ giao dịch khác nhau.
Điều chỉnh động các thông số EMA để xác định xu hướng chính xác hơn.
Đ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.
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.
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.
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)