資源の読み込みに... 荷物...

T3 移動平均トレンド トレイリングストップロスの戦略をフォローする

作者: リン・ハーンチャオチャン,日付: 2024-11-28 15:17:13
タグ:T3MASMAエイマ

img

概要

この戦略は,T3移動平均値,トレンドフォロー,ストップロスの追跡メカニズムを組み合わせた包括的な定量取引システムである.この戦略は,T3移動平均値を使用して市場のトレンド方向性を特定し,レモントレンドインジケーターとTDFIインジケーターを使用してシグナルを確認し,トレンドを把握し,リスクを効果的に制御するために,トレーリングストップと固定ストップを組み合わせるリスク管理システムを組み込む.

戦略の原則

この戦略は,トレンド識別,シグナル確認,リスク管理の3つの主要構成要素で構成されている.まず,T3移動平均を主なトレンド識別ツールとして使用し,六倍指数的な移動平均計算を通じてスムーズさを維持しながら遅延を軽減する.次に,レモントレンドインジケーターを使用して価格変動範囲を計算し,TDFIインジケーターでシグナルをフィルターし,価格が変動範囲を突破し,TDFIが確認するときにのみ取引信号を生成する.最後に,戦略はリスク管理のためにトライリングと固定ストップの組み合わせを使用し,価格が値に達した後,固定ストップを保護として維持する.

戦略 の 利点

  1. 複数の信号確認メカニズムは取引の精度を向上させる
  2. T3 移動平均は,誤ったブレイクの影響を減らす
  3. 柔軟なリスクマネジメントシステムで 利益を保護し 傾向の発展を可能にします
  4. 段階的な利益実現のための部分的なポジション終了をサポートする
  5. 異なる市場条件での最適化のために高度に調整可能なパラメータ

戦略リスク

  1. 複雑なT3移動平均計算は計算の遅延をもたらす可能性があります.
  2. 複数のシグナル確認は,見逃した取引機会を引き起こす可能性があります.
  3. トレーリングストップは,不安定な市場状況下で早速起動する可能性があります.
  4. 有効な信号を生成するには,重要な価格変動が必要です.
  5. 異なる市場で頻繁に誤った信号を生む可能性があります

オプティマイゼーションの方向性

  1. トレイリングストップパラメータを調整するための変動指標を導入する
  2. 異なるパラメータセットのための市場環境認識モジュールを追加する
  3. TDFI指標の計算期間を最適化し,信号のタイミングを改善する
  4. 信号確認のために音量因子を組み込むことを検討する
  5. 研究 適応性のある部分利益率メカニズム

結論

この戦略は,複数の技術指標を通じて信頼性の高い取引信号と効果的なリスク管理を保証する包括的に設計されたトレンドフォロー戦略である.この戦略のモジュール式デザインは,拡張性や最適化の可能性が良好であり,中長期トレンドフォローシステムのための基盤として適している.実用的な応用では,特定の取引ツールと市場状況に基づいてパラメータを最適化することを推奨する.


/*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)

関連性

もっと