Chiến lược điều chỉnh xu hướng thoái lui


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

Tổng quan

Chiến lược này được thiết kế để nắm bắt sự thay đổi nhỏ trong xu hướng, mở nhiều vị trí khi sự thay đổi kết thúc để có lợi nhuận. Nó sử dụng các chỉ số kỹ thuật như đường trung bình EMA, chỉ số MACD, chỉ số RSI để đánh giá xu hướng và thời gian kết thúc sự thay đổi, đồng thời sử dụng chỉ số ATR để thiết lập giá dừng lỗ.

Nguyên tắc

Chiến lược này bắt đầu bằng cách tính toán đường EMA, MACD và RSI để xác định hướng và cường độ của xu hướng hiện tại.

Nó sử dụng 3 đường trung bình EMA ((21 chu kỳ ngắn hạn, 50 chu kỳ trung bình, 200 chu kỳ dài hạn) và được đánh giá là xu hướng tăng khi đường trung bình ngắn hạn đi qua hai đường trung bình dài.

Chỉ số MACD đánh giá sức mạnh của xu hướng, khi đường MACD hoặc cột hist0 đi qua trục 0 , cho rằng xu hướng tăng lên trở nên mạnh mẽ.

Chỉ số RSI đánh giá xem có quá nóng và quá bán hay không, khi RSI vượt 50 thì việc đánh giá có thể kết thúc.

Sau đó, sử dụng chỉ số SuperTrend để xác định điểm mua cụ thể. Khi SuperTrend đảo ngược từ dưới lên, nó tạo ra tín hiệu mua.

Cuối cùng, đặt giá dừng rút lỗ và dừng lợi nhuận theo chỉ số ATR.

Ưu điểm

  • Sử dụng kết hợp nhiều chỉ số để đánh giá tín hiệu giao dịch.
  • Những người chơi có thể bắt được các đường ngắn trong xu hướng và có tỷ lệ thắng cao.
  • Thiết lập các cơ chế ngăn chặn và kiểm soát rủi ro hiệu quả.

Rủi ro

  • Thời gian điều chỉnh quá dài có thể gây ra tổn thất lớn hơn.
  • Kết hợp nhiều chỉ số, thiết lập tham số phức tạp, cần kiểm tra và tối ưu hóa nhiều lần.
  • Cài đặt Stop Loss quá lỏng lẻo, có thể làm cho lỗ hổng tăng lên.

Các biện pháp quản lý rủi ro:

  • Tối ưu hóa các tham số để đảm bảo sử dụng các chỉ số theo thứ tự.
  • Điều chỉnh điểm dừng để tránh thua lỗ quá mức.
  • Tránh các cổ phiếu có thời gian hồi phục quá dài.

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

  • Kiểm tra các kết hợp tham số khác nhau để tìm giá trị trạng thái tốt nhất của chỉ số.
  • Định mức dừng lỗ theo biến động trong ngày của cổ phiếu.
  • Thêm chỉ số giá cả, tránh tình trạng thiếu năng lượng.

Tóm tắt

Chiến lược này sử dụng nhiều chỉ số kỹ thuật để đánh giá xu hướng và điều chỉnh, có độ tin cậy cao. Kiểm soát rủi ro thông qua cơ chế dừng lỗ nghiêm ngặt, xử lý rút lui kịp thời.

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

//@version=5
strategy(title="pullb", overlay = true, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)

//variables

///emas var
ema_src = input.source(close, "EMA Source")
ema_1 = input.int(21, 'EMA 1 len')
ema_2 = input(50, 'EMA 2 len')
ema_3 = input(200, 'EMA 3 len')

///macd var
mac_src = input.source(close, "MACD Source")
mac_1 = input.int(12, 'MACD Fast')
mac_2 = input.int(26, 'MACD Signal')
mac_3 = input.int(9, 'MACD Histogram')

///rsi var
rsi_src = input.source(close, "RSI Source")
rsi_len = input.int(14, 'RSI Len')

///stoch var
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
stoch_src = input(close, title="RSI Source Stoch")

//usage variables
ema_b = input.bool(true, "Use EMA Filter")
rsi_b = input.bool(true, "Use RSI Filter")
macd_b = input.bool(true, "Use MACD Filter")
//stoch_b = input(title="Use STOCH Filter", type=bool, defval=true)

//emaas
ema1 = ta.ema(ema_src, ema_1)
ema2 = ta.ema(ema_src, ema_2)
ema3 = ta.ema(ema_src, ema_3)

//macd
[macdLine, signalLine, histLine] = ta.macd(mac_src, mac_1, mac_2, mac_3)

//rsi
rsi = ta.rsi(rsi_src, rsi_len)

//stoch
rsi1 = ta.rsi(stoch_src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

//supertrend
Periods = input.int(14, "ATR Period")
src_st = input.source(close, "Supertrend Source")
Multiplier = input.float(2.0 , "ATR Multiplier")
changeATR= input.bool(true, "Change ATR Calculation Method ?")
showsignals = input.bool(true, "Show Buy/Sell Signals ?")
highlighting = input.bool(true, "Highlighter On/Off ?")
atr2 = ta.sma(ta.tr, Periods)
atr3= changeATR ? ta.atr(Periods) : atr2
up=src_st-(Multiplier*atr3)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src_st+(Multiplier*atr3)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1

//conditions
///buy
rsi_cond_b = if rsi_b
    rsi >= 50
else 
    true

macd_cond_b = if macd_b
    (histLine >= 0 or histLine < histLine[1])
else
    true
ema_cond_b = if ema_b
    (ema1 > ema2 and ema2 > ema3)
else 
    true

look_for = input.int(5, "Bars from cross to signal")

stoch_signal_sum = 0
for i = 0 to (look_for)
    if k[i] > d[i] and k[i + 1] < d[i + 1] and (k[i + 1] < 20 and d[i + 1] < 20)
        stoch_signal_sum := stoch_signal_sum + 1
        
stoch_cond_b = if stoch_signal_sum > 0
    if k > 80 and d > 80
        false
    else
        true
else
    false


sup_cond_b = buySignal

buy_sig = (rsi_cond_b and macd_cond_b and ema_cond_b and stoch_cond_b and sup_cond_b)

tp_b = close + (ta.atr(14) * 3)
sl_b = close - (ta.atr(14) * 1.5)

if (buy_sig)
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop = sl_b, limit = tp_b)
plot(tp_b)
plot(sl_b)