Sumber daya yang dimuat... Pemuatan...

Dukungan dan Resistensi Dinamis Adaptive Pivot Trading Strategy

Penulis:ChaoZhang, Tanggal: 2025-01-10 15:08:24
Tag:ATRPivot

 Dynamic Support and Resistance Adaptive Pivot Trading Strategy

Gambaran umum

Strategi ini adalah sistem perdagangan adaptif berdasarkan identifikasi dinamis tingkat dukungan dan resistensi menggunakan titik pivot harga. Ini menentukan tingkat harga utama dengan menghitung tertinggi dan terendah lokal dalam waktu nyata dan mengeksekusi perdagangan sesuai. Kekuatan inti terletak pada sifat dinamisnya, yang memungkinkannya untuk menyesuaikan parameter perdagangan berdasarkan perubahan kondisi pasar, membuatnya cocok untuk pasar tren dan rentang.

Prinsip Strategi

Logika inti didasarkan pada beberapa elemen kunci: 1. Perhitungan pivot dinamis: Menggunakan parameter panjang pivot yang dapat disesuaikan (default 2) untuk mengidentifikasi puncak dan terendah lokal 2. zona support/resistance: Menetapkan rentang berdasarkan persentase (default 0.4%) di sekitar titik pivot untuk mendefinisikan zona trading yang valid 3. Generasi sinyal: Sinyal panjang ketika harga pecah di atas dukungan, sinyal pendek ketika harga pecah di bawah resistance Manajemen risiko: Mengimplementasikan tingkat stop-loss (10%) dan take-profit (27%) yang dinamis, dengan ukuran posisi berdasarkan ekuitas akun

Keuntungan Strategi

  1. Kemampuan beradaptasi yang tinggi: Mengatur secara dinamis level support/resistance berdasarkan kondisi pasar, menghindari lag dari level statis
  2. Risiko terkontrol: Menjaga risiko yang wajar per perdagangan melalui stop berbasis persentase yang ketat dan ukuran posisi dinamis
  3. Skalabilitas: Mendukung beberapa kerangka waktu dan kombinasi parameter untuk optimasi di lingkungan pasar yang berbeda
  4. Transparansi: Logika perdagangan yang jelas dengan semua sinyal dan tingkat harga yang ditampilkan secara visual pada grafik

Risiko Strategi

  1. Risiko pecah palsu: Dapat menghasilkan sinyal palsu yang sering terjadi di pasar yang berbeda, yang membutuhkan penyesuaian parameter zona support/resistance
  2. Dampak slippage: Harga eksekusi aktual dapat berbeda secara signifikan dari harga sinyal dalam kondisi pasar yang kurang likuid
  3. Trend Dependency: Strategi berkinerja lebih baik di pasar trend tetapi dapat menghasilkan sinyal yang berlebihan selama fase konsolidasi
  4. Sensitivitas parameter: Kinerja sangat tergantung pada pengaturan parameter, membutuhkan pengujian backtesting menyeluruh untuk optimasi

Arahan Optimasi

  1. Tambahkan modul pengenalan lingkungan pasar untuk penyesuaian parameter otomatis berdasarkan volatilitas
  2. Masukkan volume dan indikator teknis tambahan sebagai sinyal konfirmasi
  3. Mengoptimalkan algoritma ukuran posisi dengan penyesuaian dinamis berdasarkan volatilitas pasar
  4. Mengimplementasikan filter waktu untuk menghindari perdagangan selama periode yang tidak menguntungkan
  5. Mengembangkan algoritma stop-loss adaptif dengan penyesuaian dinamis berdasarkan volatilitas pasar

Ringkasan

Strategi ini menyediakan kerangka kerja yang dapat diandalkan untuk mengikuti tren dan perdagangan pembalikan melalui identifikasi dinamis dari tingkat harga utama dikombinasikan dengan kontrol risiko yang ketat. Meskipun menunjukkan beberapa sensitivitas parameter dan ketergantungan lingkungan pasar, optimasi dan penyempurnaan terus-menerus memungkinkan kinerja yang konsisten di berbagai kondisi pasar. Implementasi yang sukses membutuhkan pedagang untuk memahami prinsip-prinsipnya secara mendalam dan menyesuaikan parameter sesuai dengan situasi pasar tertentu.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08: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/
// © felipemiransan

//@version=6
strategy("Dynamic Support and Resistance Pivot Strategy ", overlay=true)

// Strategy parameters
pivot_length = input.int(2, title="Pivot Length", tooltip="Pivot size to identify peaks and troughs")
support_resistance_distance = input.float(0.4, title="Support/Resistance Distance %", tooltip="Distance to consider a support or resistance level in %")

// Stop Loss and Take Profit parameters
stop_loss_pct = input.float(10.0, title="Stop Loss %", tooltip="Stop loss percentage", minval=0.1) / 100
take_profit_pct = input.float(26.0, title="Take Profit %", tooltip="Take profit percentage", minval=0.1) / 100

// Functions to identify high and low pivots
pivot_high = ta.pivothigh(high, pivot_length, pivot_length)
pivot_low = ta.pivotlow(low, pivot_length, pivot_length)

// Storing support and resistance levels
var float resistance_level = na
var float support_level = na
var float last_pivot_high = na
var float last_pivot_low = na

// Updating support and resistance based on pivots
if (not na(pivot_high))
    resistance_level := high[pivot_length]
    last_pivot_high := high[pivot_length]

if (not na(pivot_low))
    support_level := low[pivot_length]
    last_pivot_low := low[pivot_length]

// Function to check if the current price is near a support or resistance level
is_near_resistance = (not na(resistance_level)) and (close >= resistance_level * (1 - support_resistance_distance / 100)) and (close <= resistance_level * (1 + support_resistance_distance / 100))
is_near_support = (not na(support_level)) and (close >= support_level * (1 - support_resistance_distance / 100)) and (close <= support_level * (1 + support_resistance_distance / 100))

// Cross conditions variables
long_cross = ta.crossover(close, support_level) and not na(support_level)
short_cross = ta.crossunder(close, resistance_level) and not na(resistance_level)

// Entry conditions
long_condition = is_near_support and long_cross  // Buy when crossing support from below
short_condition = is_near_resistance and short_cross  // Sell when crossing resistance from above

// Order execution
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

// Stop Loss and Take Profit
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // For long position
        avg_price_long = strategy.position_avg_price
        long_stop_level = avg_price_long * (1 - stop_loss_pct)
        long_take_profit_level = avg_price_long * (1 + take_profit_pct)
        strategy.exit("Exit Long", from_entry="Long", stop=long_stop_level, limit=long_take_profit_level)

    if (strategy.position_size < 0)  // For short position
        avg_price_short = strategy.position_avg_price
        short_stop_level = avg_price_short * (1 + stop_loss_pct)
        short_take_profit_level = avg_price_short * (1 - take_profit_pct)
        strategy.exit("Exit Short", from_entry="Short", stop=short_stop_level, limit=short_take_profit_level)

// Plotting support and resistance levels on the chart
plot(support_level, title="Support", color=color.green, linewidth=2, style=plot.style_line)
plot(resistance_level, title="Resistance", color=color.red, linewidth=2, style=plot.style_line)

// Adding labels to show pivot values
if (long_condition and not na(support_level))
    label.new(bar_index, low[pivot_length], str.tostring(low[pivot_length]), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

if (short_condition and not na(resistance_level))
    label.new(bar_index, high[pivot_length], str.tostring(high[pivot_length]), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)


Berkaitan

Lebih banyak