Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch RSI Trend Momentum với hai MA và xác nhận khối lượng

Tác giả:ChaoZhang, Ngày: 2024-11-28 17:02:32
Tags:RSISMA

img

Tổng quan

Chiến lược này là một hệ thống theo xu hướng kết hợp các tín hiệu bán quá mức RSI, trung bình động dài hạn và xác nhận khối lượng. Nó nhằm mục đích nắm giữ các vị trí dài trong điều kiện bán quá mức trong các xu hướng tăng đã được xác nhận, được xác nhận bằng việc mở rộng khối lượng. Chiến lược sử dụng chỉ số RSI 10 giai đoạn, SMA kép 250 và 500 giai đoạn và trung bình động khối lượng 20 giai đoạn làm chỉ số cốt lõi.

Nguyên tắc chiến lược

Lý thuyết cốt lõi dựa trên ba điều kiện chính hoạt động hài hòa:

  1. RSI tín hiệu bán quá mức (RSI<=30): Khám phá cơ hội phục hồi thị trường
  2. Định hướng tăng giá hai MA (SMA250>SMA500): Xác nhận xu hướng tăng giá dài hạn
  3. Xác nhận khối lượng (Tượng hiện tại> khối lượng MA*2,5 trong 20 kỳ): Xác nhận sự biến động giá

Một vị trí dài được bắt đầu khi tất cả ba điều kiện được đáp ứng đồng thời. Tín hiệu thoát được kích hoạt bởi một đường chéo chết (MA ngắn hơn vượt qua dưới MA dài hơn). Ngoài ra, một stop-loss 5% được thực hiện để quản lý rủi ro.

Ưu điểm chiến lược

  1. Xác nhận nhiều lần làm giảm tín hiệu sai: Tích hợp RSI, MAs và khối lượng cung cấp lọc tín hiệu mạnh mẽ
  2. Các đặc điểm theo xu hướng: Các MA dài hạn ngăn chặn giao dịch ngược xu hướng
  3. Kiểm soát rủi ro toàn diện: Định giá dừng lỗ hiệu quả quản lý rủi ro theo giao dịch
  4. Khả năng thích nghi cao: Các thông số có thể được điều chỉnh cho các điều kiện thị trường khác nhau
  5. Lựa chọn thương mại nghiêm ngặt: Nhiều điều kiện đảm bảo thời gian nhập cảnh tối ưu

Rủi ro chiến lược

  1. Rủi ro chậm trễ: MAP dài hạn gây ra sự chậm trễ đáng kể trong việc xác định xu hướng
  2. Rủi ro lọc quá mức: Nhiều điều kiện nghiêm ngặt có thể bỏ lỡ các cơ hội giao dịch hợp lệ
  3. Rủi ro thị trường dao động: tín hiệu sai có thể xảy ra thường xuyên trong thị trường bên cạnh
  4. Rủi ro cấu hình dừng lỗ: Các mức dừng cố định có thể không phù hợp với tất cả các điều kiện thị trường
  5. Rủi ro tối ưu hóa tham số: Tối ưu hóa quá mức có thể dẫn đến hiệu suất giao dịch trực tiếp kém

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

  1. Đặt lệnh dừng lỗ động: Xem xét việc thực hiện ATR hoặc lệnh dừng động dựa trên biến động
  2. Định lượng sức mạnh xu hướng: Bao gồm ADX hoặc các chỉ số tương tự để đánh giá xu hướng tốt hơn
  3. Tối ưu hóa kích thước vị trí: Điều chỉnh kích thước vị trí dựa trên sức mạnh tín hiệu và biến động thị trường
  4. Cải thiện cơ chế thoát: Thêm mục tiêu lợi nhuận và dừng lại để thoát linh hoạt
  5. lọc thời gian: Thực hiện các bộ lọc thời gian giao dịch để tránh các giai đoạn không hiệu quả

Tóm lại

Đây là một chiến lược theo xu hướng được thiết kế tốt với logic nghiêm ngặt, cân bằng hiệu quả lợi nhuận và rủi ro thông qua nhiều chỉ số kỹ thuật.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy(title=' Rsi Long-Term Strategy [15min]', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
rsi_lenght = input.int(10, title='RSI lenght', minval=0)
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght)
rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)
rsi_overs = rsi_value <= 30
rsi_overb = rsi_value >= 70

// Volume
vol_sma_length = input.int(20, title='Volume lenght  ', minval=1)
Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5

//SMA1
lengthSMA1 = input(250, title="Lenght SMA 1")
SMA1 = ta.sma(close, lengthSMA1)
//plot(SMA1, color=color.rgb(245, 108, 3), linewidth=1, title="SMA250")

//SMA2
lengthSMA2 = input(500, title="Lenght SMA 2")
SMA2 = ta.sma(close, lengthSMA2)
//plot(SMA2, color=#9803f5, linewidth=1, title="SMA500")


//Entry Logic
Long_cond = (rsi_overs and SMA1 > SMA2 and Volume_condt )  

if Long_cond
    strategy.entry('Long', strategy.long)

//Close Logic
Long_close = ta.crossunder(SMA1,SMA2)

if Long_close
    strategy.close("Long")

//Bar colors
Bar_color = Volume_condt ? #fc9802 : SMA1 > SMA2 ? color.rgb(84, 252, 0) : SMA1 < SMA2 ? color.maroon : color.gray
barcolor(color=Bar_color)

// Rsi value Plotshapes
plotshape(rsi_value < 30 and SMA1 > SMA2 and Volume_condt, title='Buy', color=color.new(color.green, 0), style=shape.circle, location=location.belowbar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(rsi_value > 70 and SMA1 < SMA2 and Volume_condt, title='Sell', color=color.new(color.red, 0), style=shape.circle, location=location.abovebar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(ta.crossunder(SMA1,SMA2) , title='DEATH CROSS', color=#000000, style=shape.xcross, location=location.abovebar, size=size.small, textcolor=color.new(color.black, 0))

//Stop-Loss// this code is from author RafaelZioni, modified by wielkieef
pera(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss = input.float(title=' stop loss', defval=5.0, minval=0.5)
los = pera(stoploss)
strategy.exit('SL', loss=los)




// by wielkieef

Có liên quan

Thêm nữa