Sistem Perdagangan Aksi Harga Dukungan Dinamis

SR PA
Tanggal Pembuatan: 2024-12-04 15:19:00 Akhirnya memodifikasi: 2024-12-04 15:19:00
menyalin: 0 Jumlah klik: 422
1
fokus pada
1617
Pengikut

Sistem Perdagangan Aksi Harga Dukungan Dinamis

Ringkasan

Strategi ini adalah sistem perdagangan yang didasarkan pada perilaku harga dan resistance level dukungan dinamis yang diperdagangkan dengan mengidentifikasi bentuk harga penting di dekat support dan resistance level. Sistem ini menggunakan metode penghitungan resistance support dinamis selama 16 siklus, yang menggabungkan empat bentuk grafik inversion klasik - garis konko, garis bintang, bintang silang dan bentuk jarum untuk menangkap peluang reversal potensial di pasar. Strategi ini menggunakan stop loss stop loss persentase tetap untuk mengelola risiko, dan menggunakan parameter sensitivitas untuk mengontrol keagungan sinyal masuk.

Prinsip Strategi

Inti dari strategi ini adalah membentuk batas atas dan bawah dari aktivitas harga dengan cara menghitung secara dinamis support dan resistance. Ketika harga mendekati level-level penting ini, sistem akan mencari bentuk grafik tertentu sebagai sinyal reversal. Syarat masuk memerlukan harga dalam kisaran 1.8% dari resistance support (sensitivitas default) untuk reversal. Sistem ini menggunakan aturan manajemen dana 35%, dengan stop loss 16% dan stop loss 9.5%, yang secara efektif mengendalikan risiko per transaksi sekitar 5.6% dari total akun.

Keunggulan Strategis

  1. Strategi ini menggabungkan dua elemen yang paling dapat diandalkan dalam analisis teknis: bentuk harga dan resistensi dukungan, meningkatkan keandalan sinyal perdagangan
  2. Dukungan resistensi dengan menggunakan perhitungan dinamis, dapat beradaptasi dengan perubahan kondisi pasar
  3. Pengelolaan dana dan pengendalian risiko yang ketat untuk mencegah penarikan besar-besaran
  4. Logika strategi yang jelas, parameter yang dapat disesuaikan, mudah dioptimalkan sesuai dengan situasi pasar yang berbeda
  5. Sinyal masuk yang jelas, tanpa komponen penilaian subjektif, cocok untuk perdagangan otomatis

Risiko Strategis

  1. Dalam pasar yang sangat bergejolak, efektivitas dukungan terhadap resistance level dapat berkurang
  2. Stop loss posisi relatif jauh (<16%) dan mungkin menanggung kerugian yang lebih besar dalam situasi yang ekstrem
  3. Pengaturan parameter sensitivitas memiliki pengaruh penting pada frekuensi dan akurasi transaksi
  4. Bergantung pada bentuk harga saja bisa melewatkan sinyal pasar penting lainnya
  5. Dampak biaya transaksi terhadap pengembalian strategi perlu dipertimbangkan

Arah optimasi strategi

  1. Masuknya volume lalu lintas sebagai indikator konfirmasi tambahan untuk meningkatkan keandalan sinyal
  2. Mengembangkan parameter sensitivitas yang dapat disesuaikan dengan dinamika volatilitas pasar
  3. Optimalkan pengaturan stop loss, pertimbangkan untuk menggunakan stop loss yang bergerak atau stop loss yang bertahap
  4. Menambahkan filter tren untuk menghindari reversal trading di tengah tren kuat
  5. Mengembangkan sistem manajemen posisi dinamis untuk menyesuaikan skala perdagangan sesuai dengan kondisi pasar

Meringkaskan

Strategi perdagangan berdasarkan perilaku harga ini menyediakan metode perdagangan yang sistematis bagi pedagang dengan menggabungkan resistensi dukungan dinamis dan bentuk pembalikan klasik. Strategi ini memiliki keunggulan dalam kejelasan logika, risiko yang dapat dikendalikan, tetapi masih perlu terus dioptimalkan berdasarkan efek perdagangan aktual.

Kode Sumber Strategi
/*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)