Sistem Perdagangan Tindakan Harga Sokongan Dinamik

SR PA
Tarikh penciptaan: 2024-12-04 15:19:00 Akhirnya diubah suai: 2024-12-04 15:19:00
Salin: 0 Bilangan klik: 422
1
fokus pada
1617
Pengikut

Sistem Perdagangan Tindakan Harga Sokongan Dinamik

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan yang berdasarkan pada tingkah laku harga dan kedudukan rintangan sokongan dinamik, yang berdagang dengan mengenal pasti bentuk harga penting di sekitar kedudukan sokongan dan rintangan. Sistem ini menggunakan pengiraan rintangan sokongan dinamik 16 kitaran, yang menggabungkan empat bentuk grafik pembalikan klasik - garis kelinci, garis bintang, bintang salib dan jarum untuk menangkap peluang pembalikan pasaran yang berpotensi.

Prinsip Strategi

Inti strategi ini adalah untuk membentuk sempadan atas dan bawah pergerakan harga melalui pengiraan secara dinamik tahap sokongan dan tahap rintangan. Apabila harga mendekati tahap-tahap penting ini, sistem akan mencari bentuk grafik tertentu sebagai isyarat pembalikan. Keadaan masuk memerlukan harga dalam lingkungan 1.8% daripada tahap sokongan dan rintangan (sensitiviti lalai) untuk muncul dalam bentuk pembalikan.

Kelebihan Strategik

  1. Strategi ini menggabungkan dua elemen yang paling dipercayai dalam analisis teknikal: bentuk harga dan rintangan sokongan, meningkatkan kebolehpercayaan isyarat perdagangan
  2. Tahap rintangan sokongan yang menggunakan pengiraan dinamik, dapat menyesuaikan diri dengan perubahan keadaan pasaran
  3. Pengurusan dana yang ketat dan langkah-langkah kawalan risiko yang berkesan untuk mencegah penarikan balik yang besar
  4. Logik strategi yang jelas, parameter yang boleh disesuaikan, mudah dioptimumkan mengikut keadaan pasaran yang berbeza
  5. Isyarat masuk jelas, tanpa unsur penilaian subjektif, sesuai untuk perdagangan automatik

Risiko Strategik

  1. Kelemahan sokongan terhadap rintangan mungkin berkurang dalam pasaran yang bergolak
  2. Kedudukan hentian kerugian yang agak jauh (~16%), mungkin menanggung kerugian yang lebih besar dalam keadaan yang teruk
  3. Tetapan parameter sensitiviti mempunyai kesan penting terhadap kekerapan dan ketepatan perdagangan
  4. Bergantung kepada bentuk harga sahaja mungkin terlepas isyarat pasaran penting yang lain
  5. Kesan kos urus niaga ke atas pulangan strategi perlu dipertimbangkan

Arah pengoptimuman strategi

  1. Pengenalan jumlah lalu lintas sebagai penunjuk pengesahan tambahan untuk meningkatkan kebolehpercayaan isyarat
  2. Membangunkan parameter sensitiviti adaptif yang disesuaikan dengan dinamik turun naik pasaran
  3. Mengoptimumkan tetapan henti rugi, pertimbangkan untuk menggunakan henti rugi bergerak atau henti rugi berpecah
  4. Menambah penapis trend untuk mengelakkan perdagangan berbalik semasa trend kuat
  5. Membangunkan sistem pengurusan kedudukan dinamik untuk menyesuaikan skala dagangan mengikut keadaan pasaran

ringkaskan

Strategi perdagangan berdasarkan tingkah laku harga ini menyediakan pedagang dengan kaedah perdagangan yang sistematik dengan menggabungkan tahap rintangan sokongan dinamik dan bentuk pembalikan klasik. Kelebihan strategi adalah kejernihan logik, risiko boleh dikawal, tetapi masih memerlukan pengoptimuman berterusan berdasarkan kesan perdagangan sebenar.

Kod 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)