Sumber dimuat naik... memuat...

Sistem Perdagangan Aksi Harga Sokongan Dinamik

Penulis:ChaoZhang, Tarikh: 2024-12-04 15:19:00
Tag:SRPA

img

Ringkasan

Strategi ini adalah sistem dagangan berdasarkan tindakan harga dan tahap sokongan / rintangan dinamik, melaksanakan dagangan berhampiran tahap harga utama apabila corak lilin tertentu muncul. Sistem ini menggunakan kaedah pengiraan sokongan / rintangan dinamik 16 tempoh, digabungkan dengan empat corak lilin pembalikan klasik - Hammer, Shooting Star, Doji, dan Pin Bar untuk menangkap pembalikan pasaran yang berpotensi.

Prinsip Strategi

Inti strategi ini terletak pada mengira secara dinamik tahap sokongan dan rintangan untuk menubuhkan sempadan pergerakan harga. Apabila harga mendekati tahap utama ini, sistem mencari corak lilin tertentu sebagai isyarat pembalikan. Syarat kemasukan memerlukan pembentukan corak dalam 1.8% (sensitiviti lalai) tahap sokongan / rintangan. Sistem melaksanakan peraturan pengurusan ekuiti 35% dengan 16% stop-loss dan 9.5% mengambil keuntungan, dengan berkesan mengawal risiko pada kira-kira 5.6% daripada jumlah ekuiti setiap perdagangan. Strategi ini dilaksanakan dalam Script Pine dengan fungsi pengurusan perdagangan lengkap dan visualisasi.

Kelebihan Strategi

  1. Menggabungkan dua elemen analisis teknikal yang paling boleh dipercayai: corak harga dan sokongan / rintangan, meningkatkan kebolehpercayaan isyarat
  2. Menggunakan tahap sokongan/tahan yang dikira secara dinamik, menyesuaikan diri dengan keadaan pasaran yang berubah
  3. Melaksanakan pengurusan wang yang ketat dan langkah kawalan risiko untuk mengelakkan pengeluaran yang besar
  4. Logik strategi yang jelas dengan parameter yang boleh diselaraskan, memudahkan pengoptimuman untuk keadaan pasaran yang berbeza
  5. Isyarat kemasukan yang jelas tanpa pertimbangan subjektif, sesuai untuk perdagangan automatik

Risiko Strategi

  1. Keberkesanan sokongan / rintangan mungkin berkurangan di pasaran yang sangat tidak stabil
  2. Stop loss yang agak luas (16%) boleh membawa kepada kerugian yang ketara dalam keadaan tidak menentu
  3. Tetapan parameter kepekaan memberi kesan yang ketara kepada kekerapan dan ketepatan perdagangan
  4. Bergantung hanya pada corak harga mungkin terlepas isyarat pasaran penting yang lain
  5. Perlu mempertimbangkan kos dagangan kesan pada pulangan strategi

Arahan pengoptimuman

  1. Memperkenalkan jumlah sebagai penunjuk pengesahan untuk meningkatkan kebolehpercayaan isyarat
  2. Membangunkan parameter kepekaan penyesuaian yang menyesuaikan secara dinamik berdasarkan turun naik pasaran
  3. Mengoptimumkan tetapan stop-loss, mempertimbangkan pelaksanaan penangguhan penangguhan atau pelan stop-loss bertahap
  4. Tambah penapis trend untuk mengelakkan perdagangan pembalikan semasa trend yang kuat
  5. Membangunkan sistem saiz kedudukan dinamik yang menyesuaikan saiz perdagangan berdasarkan keadaan pasaran

Ringkasan

Strategi perdagangan berasaskan tindakan harga ini menyediakan peniaga dengan pendekatan perdagangan yang sistematik dengan menggabungkan tahap sokongan / rintangan dinamik dengan corak pembalikan klasik. Kekuatan strategi terletak pada logiknya yang jelas dan risiko yang boleh dikawal, walaupun pengoptimuman berterusan berdasarkan hasil perdagangan sebenar adalah perlu. Pedagang dinasihatkan untuk menjalankan pengujian balik dan pengoptimuman parameter yang menyeluruh sebelum perdagangan langsung, dan menyesuaikan strategi berdasarkan pengalaman pasaran.


/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-03 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/
// © felipemiransan

//@version=5
strategy("Price Action Strategy", overlay=true)

// Settings
length = input.int(16, title="Support and Resistance Length")
sensitivity = input.float(0.018, title="Sensitivity")

// Stop Loss and Take Profit
stop_loss_pct = input.float(16, title="Stop Loss percentage", minval=0.1) / 100
take_profit_pct = input.float(9.5, title="Take Profit percentage", minval=0.1) / 100

// Function to identify a Hammer
isHammer() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    body > 0 and lower_shadow > body * 2 and upper_shadow < body * 0.5 and price_range > 0

// Function to identify a Shooting Star
isShootingStar() =>
    body = open - close
    price_range = high - low
    lower_shadow = close - low
    upper_shadow = high - open
    body > 0 and upper_shadow > body * 2 and lower_shadow < body * 0.5 and price_range > 0

// Function to identify a Doji
isDoji() =>
    body = close - open
    price_range = high - low
    math.abs(body) < (price_range * 0.1)  // Doji has a small body

// Function to identify a Pin Bar
isPinBar() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    (upper_shadow > body * 2 and lower_shadow < body * 0.5) or (lower_shadow > body * 2 and upper_shadow < body * 0.5)

// Support and resistance levels 
support = ta.lowest(low, length)
resistance = ta.highest(high, length)

// Entry criteria
long_condition = (isHammer() or isDoji() or isPinBar()) and close <= support * (1 + sensitivity)
short_condition = (isShootingStar() or isDoji() or isPinBar()) and close >= resistance * (1 - sensitivity)

// Function to calculate stop loss and take profit (long)
calculate_levels(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 - stop_loss_pct)
    take_profit_level = avg_price * (1 + take_profit_pct)
    [stop_loss_level, take_profit_level]

// Function to calculate stop loss and take profit (short)
calculate_levels_short(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 + stop_loss_pct)
    take_profit_level = avg_price * (1 - take_profit_pct)
    [stop_loss_level, take_profit_level]

// Buy entry order with label
if (long_condition and strategy.opentrades == 0)
    strategy.entry("Buy", strategy.long)
    pattern = isHammer() ? "Hammer" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=low, text=pattern, color=color.green, textcolor=color.black, size=size.small)

// Sell entry order with label
if (short_condition and strategy.opentrades == 0)
    strategy.entry("Sell", strategy.short)
    pattern = isShootingStar() ? "Shooting Star" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=high, text=pattern, color=color.red, textcolor=color.black, size=size.small)

// Stop Loss and Take Profit management for open positions
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // Long position
        avg_price_long = strategy.position_avg_price  // Average price of long position
        [long_stop_level, long_take_profit_level] = calculate_levels(strategy.position_size, avg_price_long, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Long", from_entry="Buy", stop=long_stop_level, limit=long_take_profit_level)
    if (strategy.position_size < 0)  // Short position
        avg_price_short = strategy.position_avg_price  // Average price of short position
        [short_stop_level, short_take_profit_level] = calculate_levels_short(strategy.position_size, avg_price_short, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Short", from_entry="Sell", stop=short_stop_level, limit=short_take_profit_level)

// Visualization of Support and Resistance Levels
plot(support, title="Support", color=color.green, linewidth=2)
plot(resistance, title="Resistance", color=color.red, linewidth=2)






Berkaitan

Lebih lanjut