Chỉ số động lực theo xu hướng sau chiến lược giao dịch

Tác giả:ChaoZhang, Ngày: 2023-12-12 14:52:11
Tags:

img

Tổng quan

Chiến lược này xây dựng các tín hiệu giao dịch dựa trên chỉ số động lực RSI và giá s Tỷ lệ trung bình chuyển động (EMA) và Trung bình chuyển động đơn giản (SMA).

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

Chiến lược sử dụng 3 điều kiện để tạo ra tín hiệu giao dịch:

  1. RSI > 45: Giá trị RSI lớn hơn 45 được coi là tín hiệu mua tốt
  2. EMA ((RSI) > SMA ((RSI): Đường EMA lớn hơn đường SMA cho thấy RSI đang tăng tốc lên, đó là một tín hiệu động lực tốt
  3. EMA ((close) > SMA ((close): Đường EMA lớn hơn đường SMA cho thấy xu hướng giá đang tăng tốc

Việc đáp ứng bất kỳ 2 trong số 3 điều kiện trên sẽ tạo ra tín hiệu mua; nếu không đáp ứng, tín hiệu bán sẽ được tạo ra.

Chiến lược cũng cung cấp một chế độ "luôn mua" để kiểm tra hiệu suất của hệ thống so với thị trường rộng lớn.

Phân tích lợi thế

  1. Sử dụng chỉ số động lực RSI để đánh giá điều kiện thị trường có thể giảm các vị trí trong thời gian biến động thị trường
  2. Kết hợp EMA và SMA để xác định hướng xu hướng có thể bắt kịp xu hướng thay đổi giá
  3. Quy tắc có điều kiện đơn giản và rõ ràng, dễ hiểu và tối ưu hóa
  4. Cung cấp chế độ always buy để kiểm tra lợi thế của hệ thống

Phân tích rủi ro

  1. Tùy thuộc vào cài đặt tham số, các tham số không phù hợp sẽ dẫn đến giao dịch thường xuyên hoặc bỏ lỡ các cơ hội giao dịch tốt
  2. Tin tức lớn trong thị trường rộng có thể gây ra sự biến động lớn trong ngắn hạn, điều này sẽ dẫn đến dừng lỗ
  3. Chính chiến lược không thể đánh giá khi nào một xu hướng sắp đảo ngược, các chỉ số khác cần được sử dụng để xác định

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

  1. Tối ưu hóa các thông số của RSI, EMA và SMA để tìm kết hợp thông số tốt nhất
  2. Tăng các chỉ số kỹ thuật khác như khối lượng, MACD vv để làm giàu các điều kiện quy tắc
  3. Tăng các chỉ số đảo ngược xu hướng để giảm khả năng mất mát

Kết luận

Tóm lại, chiến lược này thuộc về một chiến lược giao dịch tần số trung bình nhằm mục đích nắm bắt xu hướng giá trung hạn trong khi tránh biến động thị trường ngắn hạn. Ưu điểm và điểm rủi ro của nó khá rõ ràng. Tăng cường sự ổn định hơn nữa thông qua tối ưu hóa tham số và quy tắc làm giàu làm cho nó trở thành một chiến lược giao dịch định lượng hiệu quả cao có giá trị để nghiên cứu và tối ưu hóa.


/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.")
compoundingMode = input.bool(false)
leverage = input.float(1.0,step=0.1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100
TPFactor = input.float(2, step=0.1)




var disableAdditionalBuysThisDay = false
var lastTrade = time
if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy")
    disableAdditionalBuysThisDay := false

if(strategy.position_size != strategy.position_size[1])
    lastTrade := time
    disableAdditionalBuysThisDay := true

//Trade Logic
SCORE = 0

//rsi momentum
RSIFast = ta.ema(ta.rsi(close,50),24)
RSISlow = ta.sma(ta.rsi(close,50),24)
RSIMomentum = RSIFast / RSISlow
goodRSIMomentum = RSIMomentum > 1
SCORE := goodRSIMomentum ? SCORE + 1 : SCORE

//rsi trend
RSITrend = RSISlow / 45
goodRSI = RSITrend > 1
SCORE := goodRSI ? SCORE + 1 : SCORE

//price trend
normalTrend = ta.ema(close,50) / ta.sma(close,50)
goodTrend = normalTrend > 1
SCORE := goodTrend ? SCORE + 1 : SCORE



isBuy =  SCORE > 1 or tradingMode == "Always Buy"
isSell = false //SCORE == 0

//plot(SCORE, color=isBuy ? color.green : #ffffff88)
//reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow
plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10)
plot(1 - (1 - RSIMomentum) * 6,color=#00F569)
plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B)
plot(1 - (1 - normalTrend) * 20,color=#00F5EE)


strategy.initial_capital = 50000
if(isBuy and not(disableAdditionalBuysThisDay))
    if(compoundingMode)
        strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage)
    else
        strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)


if(strategy.position_size != 0)
    strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))




Thêm nữa