Chiến lược theo dõi xu hướng dựa trên các băng tần xoay động

Tác giả:ChaoZhang, Ngày: 2023-12-26 11:57:20
Tags:

img

Tổng quan

Chiến lược này tính toán giá cao nhất và thấp nhất gần đây trong một khoảng thời gian nhất định, kết hợp với giá hiện tại, để tạo thành một đường trung tâm năng động. Kênh giảm đỏ và kênh tăng xanh sau đó được tạo ra dựa trên sự biến động gần đây. Ba đường kênh tạo thành một phạm vi có thể giao dịch. Khi giá tiếp cận ranh giới kênh, các hoạt động ngược lại được thực hiện nhằm mục tiêu lợi nhuận trở lại đường trung gian. Trong khi đó, có một tính toán xu hướng bên trong chiến lược để lọc các giao dịch chống lại xu hướng và tránh bị phá hủy bởi xu hướng chính.

Chiến lược logic

  1. Tính toán đường trung tâm năng động với giá cao nhất gần đây, giá thấp nhất và giá đóng cửa hiện tại
  2. Tạo các băng tần năng động dựa trên ATR và nhân, thay đổi chiều rộng với biến động thị trường
  3. Đi dài khi giá bật ra khỏi dải dưới, đi ngắn khi bật ra khỏi dải trên
  4. Có lợi nhuận và dừng lỗ logic nhắm mục tiêu đường giữa
  5. Trong khi đó tính toán chỉ số xu hướng để lọc các giao dịch theo xu hướng

Phân tích lợi thế

  1. Phạm vi động thích nghi với biến động thị trường thời gian thực
  2. Khả năng giao dịch theo xu hướng cao
  3. Kiểm soát mất mát dừng một lần

Phân tích rủi ro

  1. Tối ưu hóa tham số không đúng có thể dẫn đến giao dịch quá mức
  2. Không thể loại bỏ hoàn toàn các giao dịch ngược xu hướng trong các xu hướng chính
  3. Một mặt thoát có thể tiếp tục chạy

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

  1. Điều chỉnh các tham số của dải để phù hợp với các sản phẩm khác nhau
  2. Các thông số chỉ số xu hướng tinh chỉnh để cải thiện xác suất giao dịch xu hướng
  3. giới thiệu các yếu tố học máy cho tối ưu hóa tham số động

Tóm lại

Chỉ số xu hướng cũng cần các khoảng thời gian thích hợp để đóng vai trò của nó. Với xu hướng thuận lợi về mặt lý thuyết và dừng lại, chiến lược này có thể đạt được lợi nhuận tốt thông qua tối ưu hóa.


/*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(title="Strategy - Bobo PAPATR", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000)

// === STRATEGY RELATED INPUTS AND LOGIC ===
len = input(24, minval=1, title="Pivot Length, defines lookback for highs and lows to make pivots")
length = input(title="ATR lookback (Lower = bands more responsive to recent price action)", type=input.integer, defval=22)
myatr = atr(length)
dailyatr = myatr[1]
atrmult = input(title="ATR multiplier (Lower = wider bands)", type=input.float, defval=3)
pivot0 = (high[1] + low[1]  + close[1]) / 3

// PIVOT CALC
h = highest(len)
h1 = dev(h, len) ? na : h
hpivot = fixnan(h1)
l = lowest(len)
l1 = dev(l, len) ? na : l
lpivot = fixnan(l1)
pivot = (lpivot + hpivot + pivot0) / 3
upperband1 = (dailyatr * atrmult) + pivot
lowerband1 = pivot - (dailyatr * atrmult)
middleband = pivot

// == TREND CALC ===
i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually
i2=input(20, "Slow Period", minval=1)
i3=input(5, "Fast Period", minval=1)
i4=input(3, "Smoothing Period", minval=1)
i5=input(4, "Signal Period", minval=1)
i6=input(50, "Extreme Value", minval=1)
hiDif = high - high[1]
loDif = low[1] - low
uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0
dDM =  loDif > hiDif and loDif > 0 ? loDif : 0
ATR = rma(tr(true), i1)
DIu = 100 * rma(uDM, i1) / ATR
DId = 100 * rma(dDM, i1) / ATR
HLM2 =  DIu - DId
DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) /  ema(ema(ema(abs(HLM2), i2), i3), i4)
signal = ema(DTI, i5)


// === RISK MANAGEMENT INPUTS ===
inpTakeProfit   = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0)
inpStopLoss     = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3])
exitLong = (high > middleband)
strategy.entry(id = "Long", long = true, when = enterLong) 
strategy.close(id = "Long", when = exitLong)

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3])
exitShort = (low < middleband)
strategy.entry(id = "Short", long = false, when = enterShort)
strategy.close(id = "Short", when = exitShort)

// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss)

// === CHART OVERLAY ===
plot(upperband1, color=#C10C00, linewidth=3)
plot(lowerband1, color=#23E019, linewidth=3)
plot(middleband, color=#00E2E2, linewidth=3)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Thêm nữa