Sumber daya yang dimuat... Pemuatan...

Sistem Perdagangan Aksi Harga Dukungan Dinamis Resistensi

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

img

Gambaran umum

Strategi ini adalah sistem perdagangan yang didasarkan pada aksi harga dan tingkat dukungan / resistensi dinamis, mengeksekusi perdagangan di dekat tingkat harga kunci ketika pola lilin tertentu muncul. Sistem ini memanfaatkan metode perhitungan dukungan / resistensi dinamis 16 periode, dikombinasikan dengan empat pola lilin pembalikan klasik - Hammer, Shooting Star, Doji, dan Pin Bar untuk menangkap pembalikan pasar potensial. Strategi ini menggunakan tingkat keuntungan dan stop-loss persentase tetap untuk manajemen risiko dan menggunakan parameter sensitivitas untuk mengontrol kekakuan sinyal masuk.

Prinsip Strategi

Inti dari strategi ini terletak pada menghitung secara dinamis tingkat dukungan dan resistensi untuk menetapkan batas pergerakan harga. Ketika harga mendekati tingkat kunci ini, sistem mencari pola lilin tertentu sebagai sinyal pembalikan. Kondisi masuk memerlukan pembentukan pola dalam 1,8% (sensitivitas default) dari level dukungan / resistensi. Sistem menerapkan aturan manajemen ekuitas 35% dengan 16% stop-loss dan 9,5% take-profit, secara efektif mengendalikan risiko sekitar 5,6% dari total ekuitas per perdagangan. Strategi ini diimplementasikan di Pine Script dengan fungsionalitas manajemen perdagangan dan visualisasi lengkap.

Keuntungan Strategi

  1. Menggabungkan dua elemen analisis teknis yang paling dapat diandalkan: pola harga dan support/resistance, meningkatkan keandalan sinyal
  2. Menggunakan tingkat support/resistance yang dihitung secara dinamis, beradaptasi dengan perubahan kondisi pasar
  3. Menerapkan pengelolaan uang yang ketat dan langkah-langkah pengendalian risiko untuk mencegah penarikan yang signifikan
  4. Logika strategi yang jelas dengan parameter yang dapat disesuaikan, memfasilitasi optimasi untuk kondisi pasar yang berbeda
  5. Sinyal masuk yang jelas tanpa penilaian subjektif, cocok untuk perdagangan otomatis

Risiko Strategi

  1. Efektivitas support/resistance dapat menurun di pasar yang sangat volatile
  2. Stop loss yang relatif luas (16%) dapat menyebabkan kerugian yang signifikan dalam kondisi volatilitas
  3. Pengaturan parameter sensitivitas secara signifikan mempengaruhi frekuensi dan akurasi perdagangan
  4. Mengandalkan hanya pada pola harga dapat melewatkan sinyal pasar penting lainnya
  5. Kebutuhan untuk mempertimbangkan biaya perdagangan dampak pada strategi pengembalian

Arahan Optimasi

  1. Memperkenalkan volume sebagai indikator konfirmasi untuk meningkatkan keandalan sinyal
  2. Mengembangkan parameter sensitivitas adaptif yang menyesuaikan secara dinamis berdasarkan volatilitas pasar
  3. Mengoptimalkan pengaturan stop-loss, mempertimbangkan untuk menerapkan trailing stop atau bertahap rencana stop-loss
  4. Tambahkan filter tren untuk menghindari pembalikan perdagangan selama tren yang kuat
  5. Mengembangkan sistem ukuran posisi dinamis yang menyesuaikan ukuran perdagangan berdasarkan kondisi pasar

Ringkasan

Strategi trading berbasis price action ini menyediakan trader dengan pendekatan trading yang sistematis dengan menggabungkan level support/resistance yang dinamis dengan pola pembalikan klasik. kekuatan strategi ini terletak pada logika yang jelas dan risiko yang dapat dikendalikan, meskipun optimasi terus-menerus berdasarkan hasil trading yang sebenarnya diperlukan. trader disarankan untuk melakukan backtesting menyeluruh dan optimasi parameter sebelum trading langsung, dan menyesuaikan strategi berdasarkan pengalaman pasar.


/*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 banyak