Strategi perdagangan kuantitatif berdasarkan pola pembalikan dukungan dan resistensi


Tanggal Pembuatan: 2024-06-07 16:45:09 Akhirnya memodifikasi: 2024-06-07 16:45:09
menyalin: 3 Jumlah klik: 611
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan pola pembalikan dukungan dan resistensi

Ringkasan

Strategi ini didasarkan pada reversal formasi dalam analisis teknis ((tajuk, absorption formasi dan bintang silang) serta posisi dukungan dan resistensi, dan melakukan perdagangan pada grafik 1 jam. Strategi ini melakukan perdagangan dengan mengidentifikasi titik reversal pasar potensial dan melakukan perdagangan pada tingkat stop loss dan stop loss yang diprediksi.

Strategi utama dari strategi ini adalah membuka posisi lebih banyak ketika ada bentuk pembalikan bullish di dekat posisi dukungan (seperti garis kepala, bentuk penelan bullish atau bintang silang), dan membuka posisi kosong ketika ada bentuk pembalikan bullish di dekat resistance (seperti garis kepala, bentuk penelan bullish atau bintang silang). Pada saat yang sama, atur level stop dan stop loss untuk mengontrol risiko dan mengunci keuntungan.

Prinsip Strategi

  1. Dengan fungsi ta.lowest() dan ta.highest() masing-masing menghitung harga minimum dan harga maksimum dalam jangka waktu ekspektasi yang ditentukan, menentukan titik dukungan dan titik resistensi.
  2. Periksa apakah peta saat ini membentuk garis kepala, meloncat atau bintang silang.
  3. Jika terjadi pembalikan posisi bullish di dekat level support, buka posisi lebih; jika terjadi pembalikan posisi bearish di dekat level resistance, buka posisi kosong.
  4. Setel harga stop loss 3% dari harga open position, dan stop loss 1% dari harga open position.
  5. Ketika harga mencapai level stop loss atau stop loss, maka posisi kosong.

Keunggulan Strategis

  1. Kombinasi reversal mode dan key support resistance level meningkatkan reliabilitas sinyal trading.
  2. Menetapkan tingkat penghentian dan penghentian yang jelas untuk mengontrol risiko secara efektif.
  3. Ini berlaku untuk pasar yang sedang tren dan bergejolak, dan dapat menangkap peluang terbalik yang potensial.
  4. Kode ini sederhana, mudah dipahami dan diterapkan.

Risiko Strategis

  1. Dalam pasar yang bergejolak, sering terjadi sinyal reversal yang dapat menyebabkan overtrading dan kehilangan biaya.
  2. Penilaian posisi dukungan dan resistensi tergantung pada pilihan jangka waktu, dan jangka waktu yang berbeda dapat menyebabkan hasil yang berbeda.
  3. Reliabilitas dari reversal mode tidak mutlak, sinyal palsu dapat menyebabkan kerugian.

Solusi:

  1. Mengurangi sinyal palsu dengan mengadaptasi parameter dan kondisi konfirmasi dari reversal mode.
  2. Dalam kombinasi dengan indikator teknis lainnya atau indikator sentimen pasar, meningkatkan keandalan sinyal.
  3. Sesuai menyesuaikan stop loss dan stop loss level untuk berbagai kondisi pasar.

Arah optimasi strategi

  1. Memperkenalkan indikator volume transaksi untuk mengkonfirmasi efektivitas reversal mode. Reversal mode dengan volume transaksi yang tinggi mungkin lebih dapat diandalkan.
  2. Memperhitungkan resistensi dukungan dari beberapa frame waktu untuk meningkatkan akurasi resistensi dukungan.
  3. Perdagangan dalam arah tren dengan indikator tren, seperti moving averages, dan hindari perdagangan berlawanan arah.
  4. Optimalkan level stop loss dan stop loss, menyesuaikan dengan dinamika volatilitas pasar, untuk mendapatkan rasio risiko-reward yang lebih baik.

Meringkaskan

Strategi ini menangkap peluang perdagangan potensial dengan mengidentifikasi reversal near support dan resistance. Strategi ini sederhana, mudah digunakan, dan cocok untuk berbagai lingkungan pasar. Namun, keberhasilan strategi bergantung pada penilaian yang akurat dari reversal near support dan resistance. Strategi ini dapat ditingkatkan lebih lanjut dengan mengoptimalkan kondisi konfirmasi sinyal perdagangan, dikombinasikan dengan indikator teknis lainnya, dan secara dinamis menyesuaikan level stop loss.

Kode Sumber Strategi
/*backtest
start: 2024-05-07 00:00:00
end: 2024-06-06 00:00:00
period: 2h
basePeriod: 15m
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/
// © Kingcoinmilioner

//@version=5
strategy("Reversal Patterns at Support and Resistance", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Parameters
support_resistance_lookback = input.int(50, title="Support/Resistance Lookback Period")
reversal_tolerance = input.float(0.01, title="Reversal Tolerance (percent)", step=0.01) / 100
take_profit_percent = input.float(3, title="Take Profit (%)") / 100
stop_loss_percent = input.float(1, title="Stop Loss (%)") / 100

// Functions to identify key support and resistance levels
findSupport() =>
    ta.lowest(low, support_resistance_lookback)

findResistance() =>
    ta.highest(high, support_resistance_lookback)

// Identify reversal patterns
isHammer() =>
    body = math.abs(close - open)
    lowerWick = open > close ? (low < close ? close - low : open - low) : (low < open ? open - low : close - low)
    upperWick = high - math.max(open, close)
    lowerWick > body * 2 and upperWick < body

isEngulfing() =>
    (close[1] < open[1] and close > open and close > open[1] and open < close[1]) 
    (close[1] > open[1] and close < open and close < open[1] and open > close[1])

isDoji() =>
    math.abs(open - close) <= (high - low) * 0.1

// Identify support and resistance levels
support = findSupport()
resistance = findResistance()

// Check for reversal patterns at support and resistance
hammerAtSupport = isHammer() and (low <= support * (1 + reversal_tolerance))
engulfingAtSupport = isEngulfing() and (low <= support * (1 + reversal_tolerance))
dojiAtSupport = isDoji() and (low <= support * (1 + reversal_tolerance))

hammerAtResistance = isHammer() and (high >= resistance * (1 - reversal_tolerance))
engulfingAtResistance = isEngulfing() and (high >= resistance * (1 - reversal_tolerance))
dojiAtResistance = isDoji() and (high >= resistance * (1 - reversal_tolerance))

// Trading logic
if (hammerAtSupport or engulfingAtSupport or dojiAtSupport)
    strategy.entry("Long", strategy.long)
    stop_level = low * (1 - stop_loss_percent)
    take_profit_level = close * (1 + take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", stop=stop_level, limit=take_profit_level)

if (hammerAtResistance or engulfingAtResistance or dojiAtResistance)
    strategy.entry("Short", strategy.short)
    stop_level = high * (1 + stop_loss_percent)
    take_profit_level = close * (1 - take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", stop=stop_level, limit=take_profit_level)

// Plot support and resistance levels for visualization
plot(support, color=color.green, linewidth=1, title="Support Level")
plot(resistance, color=color.red, linewidth=1, title="Resistance Level")

// Plot reversal patterns on the chart for visualization
plotshape(series=hammerAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer at Support")
plotshape(series=engulfingAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Engulfing at Support")
plotshape(series=dojiAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Doji at Support")

plotshape(series=hammerAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Hammer at Resistance")
plotshape(series=engulfingAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulfing at Resistance")
plotshape(series=dojiAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Doji at Resistance")