Chỉ báo động lượng thúc đẩy xu hướng theo chiến lược giao dịch


Ngày tạo: 2023-12-12 14:52:11 sửa đổi lần cuối: 2023-12-12 14:52:11
sao chép: 0 Số nhấp chuột: 559
1
tập trung vào
1621
Người theo dõi

Chỉ báo động lượng thúc đẩy xu hướng theo chiến lược giao dịch

Tổng quan

Chiến lược này xây dựng tín hiệu giao dịch dựa trên chỉ số động lực RSI và giá của Exponential Moving Average (EMA) và Simple Moving Average (SMA). Nó thuộc loại chiến lược theo dõi xu hướng.

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

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

  1. RSI > 45: 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 và thuộc tín hiệu động lực tốt
  3. EMA ((giá đóng cửa) > SMA ((giá đóng cửa): đường EMA lớn hơn đường SMA cho thấy xu hướng giá đang tăng tốc lên

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

Chiến lược này đồng thời cung cấp một mô hình mua và mua luôn luôn để kiểm tra hiệu suất của hệ thống đối với các cổ phiếu lớn.

Phân tích lợi thế chiến lược

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

Phân tích rủi ro chiến lược

  1. Tùy thuộc vào cài đặt tham số, tham số không đúng sẽ dẫn đến giao dịch thường xuyên hoặc bỏ lỡ cơ hội giao dịch tốt
  2. Trong trường hợp xảy ra tin tức quan trọng, giá có thể biến động mạnh trong thời gian ngắn, dẫn đến dừng lỗ.
  3. Chiến lược không thể tự mình đánh giá thời gian xu hướng sẽ đảo ngược, nó cần được kết hợp với các chỉ số khác

Hướng tối ưu hóa

  1. Tối ưu hóa các tham số RSI, EMA và SMA để tìm ra sự kết hợp tốt nhất
  2. Thêm quy tắc đánh giá các chỉ số kỹ thuật khác như Volume, MACD
  3. Tăng các chỉ số đánh giá xu hướng, giảm khả năng thua lỗ

Tóm tắt

Chiến lược này nói chung là 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á trong thời gian trung bình, trong khi tránh biến động thị trường ngắn hạn, lợi thế và điểm rủi ro của nó khá rõ ràng. Bằng cách tối ưu hóa tham số và quy tắc phong phú, có thể tăng cường thêm sự ổn định của chiến lược, là chiến lược giao dịch định lượng hiệu quả cao đáng để nghiên cứu sâu và tối ưu hóa.

Mã nguồn chiến lược
/*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))