Tài nguyên đang được tải lên... tải...

T3 xu hướng trung bình động theo chiến lược với dừng lỗ theo dõi

Tác giả:ChaoZhang, Ngày: 2024-11-28 15:17:13
Tags:T3MASMAEMA

img

Tổng quan

Chiến lược này là một hệ thống giao dịch định lượng toàn diện kết hợp T3 Moving Average, các cơ chế dừng lỗ theo xu hướng và theo dõi xu hướng. Chiến lược xác định hướng xu hướng thị trường bằng cách sử dụng T3 Moving Average, xác nhận tín hiệu bằng cách sử dụng Lemon Trend Indicator và chỉ số TDFI, và kết hợp một hệ thống quản lý rủi ro kết hợp trailing stops với fixed stops để nắm bắt xu hướng và kiểm soát rủi ro một cách hiệu quả.

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

Chiến lược này bao gồm ba thành phần chính: xác định xu hướng, xác nhận tín hiệu và quản lý rủi ro. Thứ nhất, nó sử dụng T3 Moving Average như là công cụ xác định xu hướng chính, làm giảm sự chậm trễ trong khi duy trì tính lỏng thông qua tính toán trung bình động theo hàm số nhân sáu lần. Thứ hai, nó tính toán phạm vi biến động giá bằng cách sử dụng Chỉ số xu hướng chanh và lọc tín hiệu bằng chỉ số TDFI, tạo ra tín hiệu giao dịch chỉ khi giá vượt qua phạm vi biến động và TDFI xác nhận. Cuối cùng, chiến lược sử dụng sự kết hợp của trailing và fixed stops để quản lý rủi ro, với trailing stops kích hoạt sau khi giá đạt mức ngưỡng trong khi duy trì fixed stops như là bảo vệ.

Ưu điểm chiến lược

  1. Các cơ chế xác nhận tín hiệu đa dạng cải thiện độ chính xác giao dịch
  2. T3 Moving Average làm giảm tác động của sự phá vỡ sai
  3. Hệ thống quản lý rủi ro linh hoạt bảo vệ lợi nhuận trong khi cho phép xu hướng phát triển
  4. Hỗ trợ việc rời khỏi vị trí một phần để thực hiện lợi nhuận theo giai đoạn
  5. Các thông số điều chỉnh cao cho tối ưu hóa trong các điều kiện thị trường khác nhau

Rủi ro chiến lược

  1. Tính toán trung bình động T3 phức tạp có thể đưa ra sự chậm trễ tính toán
  2. Nhiều xác nhận tín hiệu có thể gây ra cơ hội giao dịch bị bỏ lỡ
  3. Chế độ dừng kéo dài có thể được kích hoạt sớm trong điều kiện thị trường biến động
  4. Cần có sự chuyển động giá đáng kể để tạo ra các tín hiệu hiệu quả
  5. Có thể tạo ra các tín hiệu sai thường xuyên trong các thị trường khác nhau

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

  1. Đưa ra các chỉ số biến động để điều chỉnh các thông số dừng kéo dài
  2. Thêm mô-đun nhận dạng môi trường thị trường cho các bộ tham số khác nhau
  3. Tối ưu hóa thời gian tính toán chỉ số TDFI để cải thiện thời gian tín hiệu
  4. Xem xét kết hợp các yếu tố âm lượng để xác nhận tín hiệu
  5. Nghiên cứu cơ chế tỷ lệ lợi nhuận một phần thích nghi

Kết luận

Đây là một chiến lược theo xu hướng được thiết kế toàn diện đảm bảo tín hiệu giao dịch đáng tin cậy và quản lý rủi ro hiệu quả thông qua nhiều chỉ số kỹ thuật.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lemon Trend Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
 
// Input parameters
lookbackPeriod = input.int(14, "Lookback Period")
t3Length = input.int(200, "T3 MA Length")
t3Factor = input.float(0.7, "T3 Factor", minval=0, maxval=1)

// 移动止损参数
trailingStopPct = input.float(1.5, "移动止损百分比", minval=0.1, step=0.1)
trailingStopActivationPct = input.float(1.0, "移动止损激活百分比", minval=0.1, step=0.1)
 
// === T3 Moving Average Function ===
t3(src, length, factor) =>
    // First EMA
    e1 = ta.ema(src, length)
    // Second EMA
    e2 = ta.ema(e1, length)
    // Third EMA
    e3 = ta.ema(e2, length)
    // Fourth EMA
    e4 = ta.ema(e3, length)
    // Fifth EMA
    e5 = ta.ema(e4, length)
    // Sixth EMA
    e6 = ta.ema(e5, length)
   
    c1 = -factor * factor * factor
    c2 = 3 * factor * factor + 3 * factor * factor * factor
    c3 = -6 * factor * factor - 3 * factor - 3 * factor * factor * factor
    c4 = 1 + 3 * factor + factor * factor * factor + 3 * factor * factor
   
    t3 = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
 
// Calculate T3 MA
t3ma = t3(close, t3Length, t3Factor)
plot(t3ma, "T3 MA", color=color.blue)
 
// === Lemon Trend Indicator ===
highLowDiff = high - low
normalizedDiff = ta.sma(highLowDiff, lookbackPeriod)
upperBand = ta.highest(high, lookbackPeriod)
lowerBand = ta.lowest(low, lookbackPeriod)
buySignal = ta.crossover(close, upperBand - normalizedDiff)
sellSignal = ta.crossunder(close, lowerBand + normalizedDiff)
 
// === TDFI Indicator ===
tdfiLength = input.int(14, "TDFI Length")
tdfi = ta.ema(close - close[1], tdfiLength)
tdfiSignal = ta.ema(tdfi, 9)
 
// Plot signals
plotshape(buySignal and tdfi > tdfiSignal and close > t3ma, "Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal and tdfi < tdfiSignal and close < t3ma, "Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
 
// === Strategy Logic ===
longCondition = buySignal and tdfi > tdfiSignal and close > t3ma
shortCondition = sellSignal and tdfi < tdfiSignal and close < t3ma
 
// 计算移动止损价格
var float longTrailingStop = na
var float shortTrailingStop = na

// 更新移动止损价格
if (strategy.position_size > 0)
    threshold = strategy.position_avg_price * (1 + trailingStopActivationPct / 100)
    if (high > threshold)
        stopPrice = high * (1 - trailingStopPct / 100)
        if (na(longTrailingStop) or stopPrice > longTrailingStop)
            longTrailingStop := stopPrice
    
if (strategy.position_size < 0)
    threshold = strategy.position_avg_price * (1 - trailingStopActivationPct / 100)
    if (low < threshold)
        stopPrice = low * (1 + trailingStopPct / 100)
        if (na(shortTrailingStop) or stopPrice < shortTrailingStop)
            shortTrailingStop := stopPrice

// Entry orders
if (longCondition)
    strategy.entry("Long", strategy.long)
    longTrailingStop := na
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    shortTrailingStop := na
 
// Calculate stop loss and take profit levels
longStopLoss = ta.lowest(low, lookbackPeriod)
shortStopLoss = ta.highest(high, lookbackPeriod)
 
// Exit conditions with fixed R:R
fixedRR = input.float(1.8, "Fixed Risk:Reward Ratio")
partialExitPct = input.float(50.0, "Partial Exit Percentage", minval=0, maxval=100) / 100
 
// 综合移动止损和固定止损
if (strategy.position_size > 0)
    longTakeProfit = strategy.position_avg_price + (strategy.position_avg_price - longStopLoss) * fixedRR
    stopPrice = na(longTrailingStop) ? longStopLoss : math.max(longStopLoss, longTrailingStop)
    strategy.exit("Long Exit", "Long", qty_percent=partialExitPct, stop=stopPrice, limit=longTakeProfit)
    
if (strategy.position_size < 0)
    shortTakeProfit = strategy.position_avg_price - (shortStopLoss - strategy.position_avg_price) * fixedRR
    stopPrice = na(shortTrailingStop) ? shortStopLoss : math.min(shortStopLoss, shortTrailingStop)
    strategy.exit("Short Exit", "Short", qty_percent=partialExitPct, stop=stopPrice, limit=shortTakeProfit)

// 绘制移动止损线
plot(strategy.position_size > 0 ? longTrailingStop : na, "Long Trailing Stop", color=color.red, style=plot.style_linebr)
plot(strategy.position_size < 0 ? shortTrailingStop : na, "Short Trailing Stop", color=color.red, style=plot.style_linebr)

Có liên quan

Thêm nữa