Sumber dimuat naik... memuat...

Strategi Dagangan ATR Berbilang Langkah dengan Mengambil Keuntungan Dinamik

Penulis:ChaoZhang, Tarikh: 2024-12-05 16:49:57
Tag:ATRSMATRMFTPSLMAAATR

img

Ringkasan

Ini adalah strategi perdagangan berlapis-lapis yang mengintegrasikan pengiraan Jangkauan Benar Purata (ATR) adaptif dengan pengesanan trend berdasarkan momentum. Ciri yang paling tersendiri strategi ini adalah mekanisme mengambil keuntungan 7-langkahnya yang unik, yang menggabungkan empat tahap keluar berasaskan ATR dan tiga tahap peratusan tetap. Pendekatan hibrid ini membolehkan peniaga menyesuaikan diri secara dinamik dengan turun naik pasaran sambil secara sistematik menangkap keuntungan dalam kedua-dua kedudukan pasaran panjang dan pendek. Strategi ini menyediakan penyelesaian perdagangan yang komprehensif melalui gabungan pengiraan ATR dinamik, pengesanan kekuatan trend, dan pelbagai mekanisme mengambil keuntungan.

Prinsip Strategi

Strategi ini beroperasi melalui beberapa komponen utama:

  1. Pengiraan Julat Benar yang Ditingkatkan: Mengukur turun naik pasaran dengan mempertimbangkan pergerakan harga yang paling penting.
  2. Integrasi Faktor Momentum: Mengatur ATR berdasarkan pergerakan harga baru-baru ini untuk fleksibiliti yang lebih baik.
  3. Pengiraan ATR adaptif: Mengubahsuai ATR tradisional berdasarkan faktor momentum untuk peningkatan kepekaan semasa tempoh tidak menentu.
  4. Kuantifikasi Kekuatan Trend: Menilai kekuatan trend melalui algoritma yang canggih.
  5. Mekanisme Keuntungan Tujuh Langkah: Termasuk empat tahap keluar berasaskan ATR dan tiga tahap peratusan tetap.

Kelebihan Strategi

  1. Kemudahan penyesuaian yang tinggi: Sesuai dengan keadaan pasaran yang berbeza melalui pengiraan ATR dinamik.
  2. Pengurusan Risiko Komprehensif: Mekanisme mengambil keuntungan berlapis-lapis menyediakan kawalan risiko yang sistematik.
  3. Fleksibiliti yang tinggi: Bekerja sama berkesan di kedua-dua pasaran panjang dan pendek.
  4. Parameter yang boleh disesuaikan: Menawarkan pelbagai parameter yang boleh disesuaikan untuk memenuhi gaya perdagangan yang berbeza.
  5. Pelaksanaan Sistematik: Peraturan kemasukan dan keluar yang jelas mengurangkan perdagangan emosi.

Risiko Strategi

  1. Sensitiviti Parameter: Tetapan parameter yang tidak betul boleh membawa kepada overtrading atau peluang yang hilang.
  2. Kebergantungan Keadaan Pasaran: Mungkin kurang berprestasi di pasaran yang sangat tidak menentu atau berkisar.
  3. Risiko Kerumitan: Mekanisme mengambil keuntungan berlapis-lapis boleh meningkatkan kesukaran pelaksanaan.
  4. Kesan slippage: Beberapa mata keuntungan boleh terjejas dengan ketara oleh slippage.
  5. Keperluan Modal: Memerlukan modal yang mencukupi untuk melaksanakan strategi keuntungan berlapis-lapis.

Arahan Pengoptimuman Strategi

  1. Penyesuaian Parameter Dinamik: Sesuaikan parameter secara automatik berdasarkan keadaan pasaran.
  2. Penapisan persekitaran pasaran: Tambah mekanisme pengenalan persekitaran pasaran.
  3. Peningkatan Pengurusan Risiko: Memperkenalkan mekanisme stop-loss dinamik.
  4. Pengoptimuman pelaksanaan: Menyederhanakan mekanisme mengambil keuntungan untuk mengurangkan kesan kelambatan.
  5. Peningkatan Rangka Kerja Ujian Belakang: Sertakan faktor perdagangan yang lebih realistik.

Ringkasan

Strategi ini menyediakan pedagang dengan sistem perdagangan yang komprehensif dengan menggabungkan ATR adaptif dan mekanisme pengambilan keuntungan berlapis-lapis. Kekuatannya terletak pada kemampuannya untuk menyesuaikan diri dengan keadaan pasaran yang berbeza sambil menguruskan risiko melalui pendekatan sistematik. Walaupun terdapat beberapa risiko berpotensi, strategi ini boleh menjadi alat perdagangan yang berkesan melalui pengoptimuman dan pengurusan risiko yang betul. Mekanisme pengambilan keuntungan berlapis-lapis inovatifnya sangat sesuai untuk pedagang yang ingin memaksimumkan keuntungan sambil mengekalkan kawalan risiko.


/*backtest
start: 2024-11-04 00:00:00
end: 2024-12-04 00:00:00
period: 1h
basePeriod: 1h
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 SuperATR 7-Step Profit Strategy is a multi-layered trading strategy that combines adaptive ATR and momentum-based trend detection 
// with a sophisticated 7-step take-profit mechanism. This approach utilizes four ATR-based exit levels and three fixed percentage levels, 
// enabling flexible and dynamic profit-taking in both long and short market positions.

//@version=5
strategy("SuperATR 7-Step Profit - Strategy [presentTrading] ", overlay=true, 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)

// ————————
// User Inputs
// ————————
short_period = input.int(3, minval=1, title="Short Period")
long_period = input.int(7, minval=1, title="Long Period")
momentum_period = input.int(7, minval=1, title="Momentum Period")
atr_sma_period = input.int(7, minval=1, title="ATR SMA Period for Confirmation")
trend_strength_threshold = input.float(1.618, minval=0.0, title="Trend Strength Threshold", step=0.1)

// ————————
// Take Profit Inputs
// ————————
useMultiStepTP = input.bool(true, title="Enable Multi-Step Take Profit")

// ATR-based Take Profit Inputs
atrLengthTP = input.int(14, minval=1, title="ATR Length for Take Profit")
atrMultiplierTP1 = input.float(2.618, minval=0.1, title="ATR Multiplier for TP Level 1")
atrMultiplierTP2 = input.float(5.0, minval=0.1, title="ATR Multiplier for TP Level 2")
atrMultiplierTP3 = input.float(10.0, minval=0.1, title="ATR Multiplier for TP Level 3")
atrMultiplierTP4 = input.float(13.82, minval=0.1, title="ATR Multiplier for TP Level 4")

// Fixed Percentage Take Profit Inputs
tp_level_percent1 = input.float(3.0, minval=0.1, title="Fixed TP Level 1 (%)")
tp_level_percent2 = input.float(8.0, minval=0.1, title="Fixed TP Level 2 (%)")
tp_level_percent3 = input.float(17.0, minval=0.1, title="Fixed TP Level 3 (%)")

// Take Profit Percentages for Each Level
tp_percent_atr = input.float(10.0, minval=0.1, maxval=100, title="Percentage to Exit at Each ATR TP Level")
tp_percent_fixed = input.float(10.0, minval=0.1, maxval=100, title="Percentage to Exit at Each Fixed TP Level")


// —————————————
// Helper Functions
// —————————————

// Function to calculate True Range with enhanced volatility detection
calculate_true_range() =>
    prev_close = close[1]
    tr1 = high - low
    tr2 = math.abs(high - prev_close)
    tr3 = math.abs(low - prev_close)
    true_range = math.max(tr1, tr2, tr3)
    true_range

// ———————————————
// Indicator Calculations
// ———————————————

// Calculate True Range
true_range = calculate_true_range()

// Calculate Momentum Factor
momentum = close - close[momentum_period]
stdev_close = ta.stdev(close, momentum_period)
normalized_momentum = stdev_close != 0 ? (momentum / stdev_close) : 0
momentum_factor = math.abs(normalized_momentum)

// Calculate Short and Long ATRs
short_atr = ta.sma(true_range, short_period)
long_atr = ta.sma(true_range, long_period)

// Calculate Adaptive ATR
adaptive_atr = (short_atr * momentum_factor + long_atr) / (1 + momentum_factor)

// Calculate Trend Strength
price_change = close - close[momentum_period]
atr_multiple = adaptive_atr != 0 ? (price_change / adaptive_atr) : 0
trend_strength = ta.sma(atr_multiple, momentum_period)

// Calculate Moving Averages
short_ma = ta.sma(close, short_period)
long_ma = ta.sma(close, long_period)

// Determine Trend Signal
trend_signal = (short_ma > long_ma and trend_strength > trend_strength_threshold) ? 1 :
               (short_ma < long_ma and trend_strength < -trend_strength_threshold) ? -1 : 0

// Calculate Adaptive ATR SMA for Confirmation
adaptive_atr_sma = ta.sma(adaptive_atr, atr_sma_period)

// Determine if Trend is Confirmed with Price Action
trend_confirmed = (trend_signal == 1 and close > short_ma and adaptive_atr > adaptive_atr_sma) or (trend_signal == -1 and close < short_ma and adaptive_atr > adaptive_atr_sma)

// —————————————
// Trading Logic
// —————————————

// Entry Conditions
long_entry = trend_confirmed and trend_signal == 1
short_entry = trend_confirmed and trend_signal == -1

// Exit Conditions
long_exit = strategy.position_size > 0 and short_entry
short_exit = strategy.position_size < 0 and long_entry



// Execute Long Trades
if long_entry
    strategy.entry("Long Entry", strategy.long)
if long_exit
    strategy.close("Long Entry")

// Execute Short Trades
if short_entry
    strategy.entry("Short Entry", strategy.short)
if short_exit
    strategy.close("Short Entry")

// ————————————————
// Multi-Step Take Profit Logic
// ————————————————

if useMultiStepTP
    // Calculate ATR for Take Profit Levels
    atrValueTP = ta.atr(atrLengthTP)

    // Long Position Take Profit Levels
    if strategy.position_size > 0
        // ATR-based Take Profit Prices
        tp_priceATR1_long = strategy.position_avg_price + atrMultiplierTP1 * atrValueTP
        tp_priceATR2_long = strategy.position_avg_price + atrMultiplierTP2 * atrValueTP
        tp_priceATR3_long = strategy.position_avg_price + atrMultiplierTP3 * atrValueTP
        tp_priceATR4_long = strategy.position_avg_price + atrMultiplierTP4 * atrValueTP

        // Fixed Percentage Take Profit Prices
        tp_pricePercent1_long = strategy.position_avg_price * (1 + tp_level_percent1 / 100)
        tp_pricePercent2_long = strategy.position_avg_price * (1 + tp_level_percent2 / 100)
        tp_pricePercent3_long = strategy.position_avg_price * (1 + tp_level_percent3 / 100)

        // Set ATR-based Take Profit Exits
        strategy.exit("TP ATR 1 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR1_long)
        strategy.exit("TP ATR 2 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR2_long)
        strategy.exit("TP ATR 3 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR3_long)
        strategy.exit("TP ATR 4 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR4_long)

        // Set Fixed Percentage Take Profit Exits
        strategy.exit("TP Percent 1 Long", from_entry="Long Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent1_long)
        strategy.exit("TP Percent 2 Long", from_entry="Long Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent2_long)
        strategy.exit("TP Percent 3 Long", from_entry="Long Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent3_long)

    // Short Position Take Profit Levels
    if strategy.position_size < 0
        // ATR-based Take Profit Prices
        tp_priceATR1_short = strategy.position_avg_price - atrMultiplierTP1 * atrValueTP
        tp_priceATR2_short = strategy.position_avg_price - atrMultiplierTP2 * atrValueTP
        tp_priceATR3_short = strategy.position_avg_price - atrMultiplierTP3 * atrValueTP
        tp_priceATR4_short = strategy.position_avg_price - atrMultiplierTP4 * atrValueTP

        // Fixed Percentage Take Profit Prices
        tp_pricePercent1_short = strategy.position_avg_price * (1 - tp_level_percent1 / 100)
        tp_pricePercent2_short = strategy.position_avg_price * (1 - tp_level_percent2 / 100)
        tp_pricePercent3_short = strategy.position_avg_price * (1 - tp_level_percent3 / 100)

        // Set ATR-based Take Profit Exits
        strategy.exit("TP ATR 1 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR1_short)
        strategy.exit("TP ATR 2 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR2_short)
        strategy.exit("TP ATR 3 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR3_short)
        strategy.exit("TP ATR 4 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR4_short)

        // Set Fixed Percentage Take Profit Exits
        strategy.exit("TP Percent 1 Short", from_entry="Short Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent1_short)
        strategy.exit("TP Percent 2 Short", from_entry="Short Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent2_short)
        strategy.exit("TP Percent 3 Short", from_entry="Short Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent3_short)


// ——————————
// Plotting
// ——————————

plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.orange, title="Long MA")

// Plot Buy and Sell Signals
//plotshape(long_entry, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="Buy")
//plotshape(short_entry, title="Short Entry", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="Sell")

// Optional: Plot Trend Strength for analysis
// Uncomment the lines below to display Trend Strength on a separate chart pane
// plot(trend_strength, title="Trend Strength", color=color.gray)
// hline(trend_strength_threshold, title="Trend Strength Threshold", color=color.gray, linestyle=hline.style_dashed)
// hline(-trend_strength_threshold, title="Trend Strength Threshold", color=color.gray, linestyle=hline.style_dashed)



Berkaitan

Lebih lanjut