Chiến lược theo dõi siêu xu hướng


Ngày tạo: 2023-12-26 15:58:55 sửa đổi lần cuối: 2023-12-26 15:58:55
sao chép: 1 Số nhấp chuột: 611
1
tập trung vào
1623
Người theo dõi

Chiến lược theo dõi siêu xu hướng

Tổng quan

Chiến lược này là một chiến lược theo dõi siêu xu hướng, ý tưởng chính là kết hợp các chỉ số siêu xu hướng với các thiết lập tham số khác nhau để đạt được hiệu quả theo dõi và sử dụng các chỉ số bộ lọc để kiểm soát rủi ro. Ý tưởng cốt lõi của chiến lược đơn giản, dễ hiểu và phù hợp cho người mới bắt đầu học.

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

Chiến lược này chủ yếu bao gồm ba nhóm các chỉ số siêu xu hướng với các tham số khác nhau. Nhóm đầu tiên của các chỉ số siêu xu hướng chính sử dụng tham số mặc định để đánh giá cơ bản hướng xu hướng thị trường; Nhóm thứ hai của các chỉ số siêu xu hướng phụ, theo dõi sự thay đổi giá một cách nhạy cảm hơn bằng cách giảm chu kỳ ATR và tăng gấp ATR; Nhóm thứ ba của các chỉ số siêu xu hướng bộ lọc tăng chu kỳ ATR và gấp ATR thích hợp, được sử dụng để lọc phá vỡ giả.

Khi xu hướng siêu chủ phát ra tín hiệu mua, chiến lược mua theo dõi nếu xu hướng siêu phụ cũng phát tín hiệu đồng thời và hướng siêu xu hướng bộ lọc là xu hướng tăng; khi xu hướng siêu chủ phát ra tín hiệu bán, nếu xu hướng siêu phụ cũng phát tín hiệu đồng thời và hướng siêu bộ lọc là xu hướng giảm, chiến lược mua theo dõi bán. Như vậy, bạn có thể đảm bảo bắt được xu hướng chính, đồng thời sử dụng chỉ số xu hướng siêu phụ để theo dõi các điều chỉnh nhỏ, do đó, có thể thực hiện vào và dừng lỗ kịp thời.

Lợi thế chiến lược

  1. Các chiến lược đơn giản, rõ ràng, dễ hiểu, phù hợp cho người mới bắt đầu
  2. Thiết lập các tham số chính sách hợp lý để theo dõi hiệu quả và kiểm soát rủi ro
  3. Tín hiệu chiến lược chính xác hơn, có tỷ lệ chiến thắng cao hơn
  4. Kết hợp các tham số khác nhau để thực hiện hiệu quả theo dõi
  5. Thêm cơ chế lọc, có thể lọc hiệu quả các tín hiệu báo cáo sai và kiểm soát rủi ro

Rủi ro chiến lược

  1. Rủi ro hệ thống của cổ phiếu
  2. Chỉ số siêu xu hướng có thể bị tụt hậu trong một số thị trường
  3. Thiết lập tham số không đúng cho chỉ số ATR có thể dẫn đến tín hiệu chiến lược bị lệch
  4. Không đủ giao dịch chiến lược có thể dẫn đến khó khăn trong việc hoàn thành lệnh dừng lỗ

Các biện pháp phòng ngừa rủi ro chính:

  1. Chọn cổ phiếu có tính thanh khoản và biến động cao
  2. Các tham số tối ưu hóa phù hợp để giảm khả năng bị tụt hậu
  3. Tối ưu hóa kiểm tra tham số, tăng độ chính xác tín hiệu
  4. Tăng khối lượng giao dịch phù hợp để đảm bảo không gian dừng lỗ

Hướng tối ưu hóa chiến lược

  1. Kiểm tra các kết hợp tham số khác nhau của chu kỳ ATR để tối ưu hóa hiệu quả theo dõi
  2. Thử các chỉ số khác thay cho ATR
  3. Tăng hoặc giảm số lượng kết hợp siêu xu hướng, hiệu quả thử nghiệm
  4. Cố gắng tối ưu hóa bộ lọc tín hiệu kết hợp với các chỉ số khác
  5. Kiểm tra các phương pháp giảm tổn thất khác nhau để tìm ra giải pháp tốt nhất

Tóm tắt

Kế hoạch tổng thể của chiến lược này rất rõ ràng và đơn giản, thông qua nhiều chỉ số xu hướng siêu khác nhau được đặt theo các tham số khác nhau để phối hợp với nhau, để theo dõi nhập cảnh và kiểm soát rủi ro. Các tín hiệu chiến lược là chính xác hơn, hoạt động tốt hơn, phù hợp với người mới bắt đầu học, cũng có thể được sử dụng làm mẫu để kiểm tra tối ưu hóa các chỉ số và tham số khác nhau, là một chiến lược xu hướng siêu đáng được đề nghị.

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

//@version=4
strategy("Supertrend TEST 2 Strategy", overlay = true, format=format.price, precision=2)

Periods = input(title="ATR Period", type=input.integer, defval=4)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
tp=close
sl=close

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? 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
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green )
plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white )
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red )
plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white )
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white

sPeriods=input(title="ATR Period", type=input.integer, defval=8)
sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5)
satr2 = sma(tr, sPeriods)
satr= changeATR ? atr(sPeriods) : satr2
ssup=ohlc4-(sMultiplier*satr)
ssup1 = nz(ssup[1],ssup)
ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup
sdn=ohlc4+(sMultiplier*satr)
sdn1 = nz(sdn[1], sdn)
sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn
strend = 1
strend := nz(strend[1], strend)
strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend
sbuySignal = strend == 1 and strend[1] == -1
ssellSignal = strend == -1 and strend[1] == 1

fPeriods=input(title="ATR Period", type=input.integer, defval=10)
fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5)
fatr2 = sma(tr, fPeriods)
fatr= changeATR ? atr(fPeriods) : fatr2
fup=ohlc4-(fMultiplier*fatr)
fup1 = nz(fup[1],fup)
fup := close[1] > fup1 ? max(fup,fup1) : fup
fdn=ohlc4+(fMultiplier*fatr)
fdn1 = nz(fdn[1], fdn)
fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn
ftrend = 1
ftrend := nz(ftrend[1], ftrend)
ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend
fbuySignal = ftrend == 1 and ftrend[1] == -1
fsellSignal = ftrend == -1 and ftrend[1] == 1
tcolor=color.new(color.gray,50)
fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor)
fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor)



if (strategy.position_size > 0)
	tp:=tp[1]
	sl:=up
	strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl)
	
if (strategy.position_size < 0)
	tp:=tp[1]
	sl:=dn
	strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl)



if ((buySignal and  ftrend==1) or (sbuySignal and trend==1 and  ftrend==1)) 
	tp:=close+(close-up)*0.382
    strategy.entry("Long", strategy.long,  limit=tp, comment=tostring(round(tp)))
if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and  ftrend==-1)) 
	tp:=close-(dn-close)*0.382
    strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))