Strategi perdagangan kuantitatif berdasarkan corak pembalikan sokongan dan rintangan


Tarikh penciptaan: 2024-06-07 16:45:09 Akhirnya diubah suai: 2024-06-07 16:45:09
Salin: 3 Bilangan klik: 611
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan corak pembalikan sokongan dan rintangan

Gambaran keseluruhan

Strategi ini didasarkan pada bentuk pembalikan dalam analisis teknikal ((tajuk, bentuk penelan, dan bintang salib) serta kedudukan sokongan dan rintangan, dan berdagang pada carta 1 jam. Strategi ini melakukan perdagangan dengan mengenal pasti titik pembalikan pasaran yang berpotensi dan melakukan perdagangan pada tahap hentian dan hentian yang dirancang.

Strategi utama strategi ini adalah untuk membuka lebih banyak kedudukan apabila terdapat bentuk pembalikan bullish berhampiran kedudukan sokongan (seperti garis kepala, bentuk penelan bullish atau bintang salib), dan membuka posisi kosong apabila terdapat bentuk pembalikan bullish berhampiran kedudukan rintangan (seperti garis kepala, bentuk penelan bullish atau bintang salib). Pada masa yang sama, menetapkan tahap berhenti dan berhenti untuk mengawal risiko dan mengunci keuntungan.

Prinsip Strategi

  1. Menggunakan fungsi ta.lowest ((() dan ta.highest ((() untuk mengira harga minimum dan harga tertinggi dalam tempoh jangka masa yang ditetapkan, untuk menentukan tahap sokongan dan tahap rintangan.
  2. Menentukan sama ada peta semasa membentuk garis kepala, bentuk menelan atau bintang salib.
  3. Jika terdapat bentuk pembalikan bullish berhampiran tahap sokongan, buka lebih banyak kedudukan; jika terdapat bentuk pembalikan bullish berhampiran tahap rintangan, buka posisi kosong.
  4. Tetapkan harga stop-loss 3% daripada harga bukaan dan harga stop-loss 1% daripada harga bukaan.
  5. Apabila harga mencapai tahap stop atau stop loss, maka ia akan ditutup.

Kelebihan Strategik

  1. Gabungan bentuk terbalik dan tahap rintangan sokongan utama meningkatkan kebolehpercayaan isyarat perdagangan.
  2. Tetapkan tahap berhenti dan henti yang jelas untuk mengawal risiko dengan berkesan.
  3. Ia boleh digunakan untuk pasaran yang sedang tren dan bergolak untuk menangkap peluang untuk berbalik.
  4. Kodnya ringkas, mudah difahami dan dilaksanakan.

Risiko Strategik

  1. Dalam pasaran yang bergolak, isyarat pembalikan sering berlaku, yang boleh menyebabkan perdagangan berlebihan dan kehilangan yuran.
  2. Penilaian kedudukan sokongan dan rintangan bergantung pada pilihan jangka masa, dan jangka masa yang berbeza mungkin membawa kepada hasil yang berbeza.
  3. Kebolehpercayaan bentuk pembalikan tidak mutlak, isyarat palsu boleh menyebabkan kerugian.

Penyelesaian:

  1. Mengurangkan isyarat palsu dengan menyesuaikan parameter dan syarat pengesahan bentuk terbalik.
  2. Gabungan dengan petunjuk teknikal lain atau sentimen pasaran, meningkatkan kebolehpercayaan isyarat.
  3. Menyesuaikan tahap hentian dan hentian kerugian dengan sewajarnya untuk menghadapi keadaan pasaran yang berbeza.

Arah pengoptimuman strategi

  1. Pengenalan penunjuk jumlah urus niaga untuk mengesahkan keberkesanan bentuk pembalikan. Modul pembalikan dengan jumlah transaksi yang tinggi mungkin lebih dipercayai.
  2. Mengambil kira tahap rintangan sokongan untuk pelbagai bingkai masa untuk meningkatkan ketepatan tahap rintangan sokongan.
  3. Perdagangan dalam arah trend dengan menggunakan penunjuk trend seperti purata bergerak, dan mengelakkan perdagangan berlawanan arah.
  4. Mengoptimumkan tahap hentian dan hentian kerugian, menyesuaikan dengan dinamik turun naik pasaran, untuk mendapatkan nisbah risiko-balas yang lebih baik.

ringkaskan

Strategi ini menangkap peluang perdagangan yang berpotensi dengan mengenal pasti bentuk pembalikan berhampiran tahap sokongan dan rintangan. Ia mudah digunakan dan sesuai untuk keadaan pasaran yang berbeza. Walau bagaimanapun, kejayaan strategi bergantung pada penilaian yang tepat mengenai bentuk pembalikan dan tahap rintangan sokongan.

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