Chiến lược dừng lỗ và chốt lời của đường trung bình động RSI


Ngày tạo: 2023-09-13 14:26:43 sửa đổi lần cuối: 2023-09-13 14:26:43
sao chép: 0 Số nhấp chuột: 671
1
tập trung vào
1617
Người theo dõi

Chiến lược này kết hợp các chỉ số RSI và đường trung bình di chuyển, để phân tích xu hướng và tạo tín hiệu giao dịch, và sử dụng phương pháp dừng lỗ di động để khóa lợi nhuận và kiểm soát rủi ro. Đây là một chiến lược giao dịch theo xu hướng điển hình.

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

  1. Tính toán chỉ số RSI để xác định tình trạng quá mua quá bán. RSI cao hơn 50 là tín hiệu đa đầu.

  2. Tính toán trung bình di chuyển chậm và nhanh, hình dạng golden cross là tín hiệu đa đầu.

  3. RSI tăng liên tục cũng có thể là một tín hiệu giao dịch để theo dõi.

  4. Sau khi vào, thiết lập đường dừng di động và đường dừng.

  5. Đường dừng cố định theo dõi giá dưới, đường dừng cố định theo dõi giá trên.

  6. Nếu giá chạm đến đường dừng lỗ, giá sẽ hòa vốn.

Những lợi thế của chiến lược này:

  1. Chỉ số RSI đánh giá quá mua quá bán, tránh theo đuổi giá cao và giá thấp.

  2. Đường trung bình di chuyển nhận diện xu hướng. Sự kết hợp làm tăng độ chính xác của phán đoán.

  3. Phương thức dừng lỗ di động, có thể điều chỉnh vị trí dừng lỗ theo biến động giá trong thời gian thực.

Rủi ro của chiến lược này:

  1. Các chỉ số RSI và đường trung bình có thể tạo ra tín hiệu sai trong tình huống biến động.

  2. Cần thiết phải cẩn thận thiết lập độ dài của các trạm dừng động, quá lớn hoặc quá nhỏ là vấn đề.

  3. Không có giới hạn về số lượng tổn thất đơn lẻ, có nguy cơ gây ra tổn thất lớn.

Tóm lại, chiến lược này tập hợp các ưu điểm của chỉ số RSI và đường trung bình và quản lý rủi ro bằng cách sử dụng phương pháp dừng lỗ di động. Hiệu quả tốt hơn trong việc tối ưu hóa tham số và kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI and MA Strategy with Trailing Stop Loss and Take Profit",
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=100,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

//==================================Buy Conditions============================================

//RSI
length = input(14)
rsi = ta.rsi(close, length)
buyCondition1 = rsi > 50

//MA
SMA9 = ta.sma(close, 9)
SMA50 = ta.sma(close, 50)
SMA100 = ta.sma(close, 100)
plot(SMA9, color = color.green)
plot(SMA50, color = color.orange)
plot(SMA100, color = color.blue)
buyCondition2 = SMA9 > SMA50//ta.crossover(SMA9, SMA100)

//RSI Increase
increase = 5
buyCondition3 = (rsi > rsi[1] + increase)


if (buyCondition1 and buyCondition2 and buyCondition3 and timePeriod) //and buyCondition
    strategy.entry("Long", strategy.long)

//==================================Sell Conditions============================================

//Trailing Stop Loss and Take Profit
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=2) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

longStopPrice = 0.0
shortStopPrice = 0.0

longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - longTrailPerc)
    math.max(stopValue, longStopPrice[1])
else
    0

shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + shortTrailPerc)
    math.min(stopValue, shortStopPrice[1])
else
    999999


strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)