ATR Fusion Trend Optimization Model Strategy

ATR SMA TP BP TR SL
Tarikh penciptaan: 2024-11-28 17:06:21 Akhirnya diubah suai: 2024-11-28 17:06:21
Salin: 0 Bilangan klik: 403
1
fokus pada
1617
Pengikut

ATR Fusion Trend Optimization Model Strategy

Gambaran keseluruhan

Strategi ini adalah sistem pengesanan trend canggih yang berdasarkan ATR dan Fibonacci. Ia membina model perdagangan yang responsif dan beradaptasi dengan menggabungkan analisis kadar turun naik untuk pelbagai tempoh masa dengan purata Fibonacci.

Prinsip Strategi

Strategi ini menggunakan pendekatan kombinasi indikator teknikal bertingkat: pertama mengira julat turun naik sebenar (TR) dan tekanan beli (BP), kemudian mengira nisbah tekanan untuk setiap kitaran berdasarkan siri masa Fibonacci ((8,13,21,34,55)). Membina purata tertimbang dengan meletakkan berat yang berbeza (5,4,3,2,1) pada kitaran yang berbeza, dan seterusnya menggunakan pemprosesan rata-rata SMA 3 kitaran. Sistem ini mencetuskan isyarat dagangan berdasarkan perpaduan SMA dengan had yang telah ditetapkan (58.0 dan 42.0), dan menggunakan ATR untuk merancang mekanisme keuntungan empat langkah.

Kelebihan Strategik

  1. Analisis pelbagai dimensi: menggabungkan data dari pelbagai tempoh masa untuk memberikan pandangan pasaran yang lebih menyeluruh
  2. Dinamika penyesuaian: penyesuaian kepada turun naik pasaran melalui ATR untuk meningkatkan kestabilan strategi
  3. Keuntungan pintar: mekanisme keuntungan empat langkah yang boleh disesuaikan dengan keadaan pasaran yang berbeza
  4. Risiko boleh dikawal: Syarat kemasukan dan keluar yang jelas, mengurangkan risiko penilaian subjektif
  5. Operasi sistematik: logik strategi jelas, mudah untuk dilaksanakan secara kuantitatif dan disahkan semula

Risiko Strategik

  1. Sensitiviti parameter: Pelbagai parameter nilai rendah dan berat memerlukan penyesuaian yang berhati-hati
  2. Risiko keterbelakangan: Selaputan SMA mungkin menyebabkan kelewatan isyarat
  3. Bergantung kepada keadaan pasaran: mungkin memberi isyarat palsu dalam pasaran yang bergolak
  4. Pencocokan parameter: parameter yang perlu dioptimumkan semula dalam keadaan pasaran yang berbeza Penyelesaian: Mencadangkan pengoptimuman parameter yang mencukupi dan pengujian semula, dan menyesuaikan parameter secara dinamik mengikut peringkat pasaran yang berbeza.

Arah pengoptimuman strategi

  1. Penyesuaian parameter: Membangunkan mekanisme penyesuaian parameter penyesuaian untuk meningkatkan kebolehsesuaian strategi
  2. Penyaringan pasaran: menambah modul pengenalan persekitaran pasaran untuk melakukan perdagangan dalam keadaan pasaran yang sesuai
  3. Pengoptimuman isyarat: pengenalan penunjuk pengesahan tambahan untuk meningkatkan kebolehpercayaan isyarat
  4. Peningkatan kawalan angin: menambah modul pengurusan stop loss dan kedudukan dinamik
  5. Kawalan penarikan balik: Tambah had penarikan balik maksimum untuk meningkatkan kestabilan strategi

ringkaskan

Strategi ini membina sistem pengesanan trend yang komprehensif dengan mengintegrasikan teknik ATR dan purata berat Fibonacci. Kelebihannya terletak pada analisis pelbagai dimensi dan kemampuan penyesuaian dinamik, tetapi juga memerlukan perhatian kepada pengoptimuman parameter dan penyaringan keadaan pasaran. Dengan pengoptimuman berterusan dan penguatan kawalan angin, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza.

Kod sumber strategi
/*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"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading

// The Fibonacci ATR Fusion Strategy is an advanced trading methodology that uniquely integrates Fibonacci-based weighted averages with the Average True Range (ATR) to 
// identify and exploit significant market trends. Unlike traditional strategies that rely on single indicators or fixed parameters, this approach leverages multiple timeframes and 
// dynamic volatility measurements to enhance accuracy and adaptability. 

//@version=5
strategy("Fibonacci ATR Fusion - Strategy [presentTrading]", overlay=false, precision=3, commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=10000)

// Calculate True High and True Low
tradingDirection = input.string(title="Trading Direction", defval="Both", options=["Long", "Short", "Both"])

// Trading Condition Thresholds
long_entry_threshold = input.float(58.0, title="Long Entry Threshold")
short_entry_threshold = input.float(42.0, title="Short Entry Threshold")
long_exit_threshold = input.float(42.0, title="Long Exit Threshold")
short_exit_threshold = input.float(58.0, title="Short Exit Threshold")

// Enable or Disable 4-Step Take Profit
useTakeProfit = input.bool(false, title="Enable 4-Step Take Profit")

// Take Profit Levels (as multiples of ATR)
tp1ATR = input.float(3.0, title="Take Profit Level 1 ATR Multiplier")
tp2ATR = input.float(8.0, title="Take Profit Level 2 ATR Multiplier")
tp3ATR = input.float(14.0, title="Take Profit Level 3 ATR Multiplier")

// Take Profit Percentages
tp1_percent = input.float(12.0, title="TP Level 1 Percentage", minval=0.0, maxval=100.0)
tp2_percent = input.float(12.0, title="TP Level 2 Percentage", minval=0.0, maxval=100.0)
tp3_percent = input.float(12.0, title="TP Level 3 Percentage", minval=0.0, maxval=100.0)

true_low = math.min(low, close[1])
true_high = math.max(high, close[1])

// Calculate True Range
true_range = true_high - true_low

// Calculate BP (Buying Pressure)
bp = close - true_low

// Calculate ratios for different periods
calc_ratio(len) =>
    sum_bp = math.sum(bp, len)
    sum_tr = math.sum(true_range, len)
    100 * sum_bp / sum_tr

// Calculate weighted average of different timeframes
weighted_avg = (5 * calc_ratio(8) + 4 * calc_ratio(13) + 3 * calc_ratio(21) + 2 * calc_ratio(34) + calc_ratio(55)) / (5 + 4 + 3 + 2 + 1)
weighted_avg_sma = ta.sma(weighted_avg,3)

// Plot the indicator
plot(weighted_avg, "Fibonacci ATR", color=color.blue, linewidth=2)
plot(weighted_avg_sma, "SMA Fibonacci ATR", color=color.yellow, linewidth=2)

// Define trading conditions
longCondition = ta.crossover(weighted_avg_sma, long_entry_threshold)  // Enter long when weighted average crosses above threshold
shortCondition = ta.crossunder(weighted_avg_sma, short_entry_threshold) // Enter short when weighted average crosses below threshold
longExit = ta.crossunder(weighted_avg_sma, long_exit_threshold)
shortExit = ta.crossover(weighted_avg_sma, short_exit_threshold)


atrPeriod = 14
atrValue = ta.atr(atrPeriod)

if (tradingDirection == "Long" or tradingDirection == "Both")
    if (longCondition)
        strategy.entry("Long", strategy.long)
        // Set Take Profit levels for Long positions
        if useTakeProfit
            tpPrice1 = strategy.position_avg_price + tp1ATR * atrValue
            tpPrice2 = strategy.position_avg_price + tp2ATR * atrValue
            tpPrice3 = strategy.position_avg_price + tp3ATR * atrValue
            // Close partial positions at each Take Profit level
            strategy.exit("TP1 Long", from_entry="Long", qty_percent=tp1_percent, limit=tpPrice1)
            strategy.exit("TP2 Long", from_entry="Long", qty_percent=tp2_percent, limit=tpPrice2)
            strategy.exit("TP3 Long", from_entry="Long", qty_percent=tp3_percent, limit=tpPrice3)
    if (longExit)
        strategy.close("Long")

if (tradingDirection == "Short" or tradingDirection == "Both")
    if (shortCondition)
        strategy.entry("Short", strategy.short)
        // Set Take Profit levels for Short positions
        if useTakeProfit
            tpPrice1 = strategy.position_avg_price - tp1ATR * atrValue
            tpPrice2 = strategy.position_avg_price - tp2ATR * atrValue
            tpPrice3 = strategy.position_avg_price - tp3ATR * atrValue
            // Close partial positions at each Take Profit level
            strategy.exit("TP1 Short", from_entry="Short", qty_percent=tp1_percent, limit=tpPrice1)
            strategy.exit("TP2 Short", from_entry="Short", qty_percent=tp2_percent, limit=tpPrice2)
            strategy.exit("TP3 Short", from_entry="Short", qty_percent=tp3_percent, limit=tpPrice3)
    if (shortExit)
        strategy.close("Short")