Sumber dimuat naik... memuat...

Strategi Dagangan Pivot Beradaptasi Sokongan dan Rintangan Dinamik

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

 Dynamic Support and Resistance Adaptive Pivot Trading Strategy

Ringkasan

Strategi ini adalah sistem dagangan adaptif berdasarkan pengenalan dinamik tahap sokongan dan rintangan menggunakan titik pusingan harga. Ia menentukan tahap harga utama dengan mengira paras tertinggi dan terendah tempatan dalam masa nyata dan melaksanakan dagangan dengan sewajarnya. Kekuatan terasnya terletak pada sifat dinamiknya, yang membolehkannya menyesuaikan parameter dagangan berdasarkan keadaan pasaran yang berubah, menjadikannya sesuai untuk kedua-dua pasaran trend dan julat.

Prinsip Strategi

Logik teras adalah berdasarkan beberapa elemen utama: 1. Pengiraan pivot dinamik: Menggunakan parameter panjang pivot yang boleh diselaraskan (default 2) untuk mengenal pasti paras tertinggi dan terendah tempatan 2. Zon sokongan / rintangan: Menetapkan julat berasaskan peratusan (default 0.4%) di sekitar titik pivot untuk menentukan kawasan perdagangan yang sah 3. Generasi isyarat: Isyarat panjang apabila harga memecahkan di atas sokongan, isyarat pendek apabila harga memecahkan di bawah rintangan 4. Pengurusan risiko: Melaksanakan tahap stop-loss (10%) dan mengambil keuntungan (27%) yang dinamik, dengan saiz kedudukan berdasarkan ekuiti akaun

Kelebihan Strategi

  1. Kemudahan penyesuaian yang tinggi: Dinamis menyesuaikan tahap sokongan / rintangan berdasarkan keadaan pasaran, mengelakkan kelewatan dari tahap statik
  2. Risiko terkawal: Mengekalkan risiko yang munasabah setiap perdagangan melalui hentian berasaskan peratusan yang ketat dan saiz kedudukan dinamik
  3. Skalability: Menyokong pelbagai bingkai masa dan kombinasi parameter untuk pengoptimuman di seluruh persekitaran pasaran yang berbeza
  4. Ketelusan: Logik perdagangan yang jelas dengan semua isyarat dan tahap harga yang dipaparkan secara visual pada carta

Risiko Strategi

  1. Risiko pecah palsu: Boleh menghasilkan isyarat palsu yang kerap di pasaran yang berbeza, yang memerlukan pelarasan parameter zon sokongan / rintangan
  2. Kesan slippage: Harga pelaksanaan sebenar mungkin berbeza dengan harga isyarat dalam keadaan pasaran yang kurang cair
  3. Kebergantungan trend: Strategi berprestasi lebih baik di pasaran trend tetapi boleh menghasilkan isyarat berlebihan semasa fasa penyatuan
  4. Sensitiviti parameter: Prestasi sangat bergantung kepada tetapan parameter, memerlukan pengujian balik yang menyeluruh untuk pengoptimuman

Arahan pengoptimuman

  1. Tambah modul pengiktirafan persekitaran pasaran untuk pelarasan parameter automatik berdasarkan turun naik
  2. Menggabungkan jumlah dan penunjuk teknikal tambahan sebagai isyarat pengesahan
  3. Mengoptimumkan algoritma saiz kedudukan dengan pelarasan dinamik berdasarkan turun naik pasaran
  4. Melaksanakan penapis masa untuk mengelakkan perdagangan semasa tempoh yang tidak baik
  5. Membangunkan algoritma stop-loss adaptif dengan penyesuaian dinamik berdasarkan turun naik pasaran

Ringkasan

Strategi ini menyediakan rangka kerja yang boleh dipercayai untuk perdagangan trend-mengikuti dan pembalikan melalui pengenalan dinamik tahap harga utama digabungkan dengan kawalan risiko yang ketat. Walaupun ia mempamerkan beberapa kepekaan parameter dan pergantungan persekitaran pasaran, pengoptimuman dan penyempurnaan berterusan membolehkan prestasi yang konsisten dalam keadaan pasaran yang berbeza. Pelaksanaan yang berjaya memerlukan peniaga memahami prinsip-prinsipnya dengan mendalam dan menyesuaikan parameter mengikut keadaan pasaran 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 lanjut