Sumber dimuat naik... memuat...

E9 Shark-32 Pattern Strategi Penembusan Harga Kuantitatif

Penulis:ChaoZhang, Tarikh: 2024-11-12 14:51:17
Tag:

img

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan pengenalan corak, memberi tumpuan kepada mengenal pasti dan berdagang corak lilin Shark-32. Strategi ini menganalisis perubahan berterusan dalam paras tertinggi dan terendah, menetapkan tahap harga utama selepas pengesahan corak, dan melaksanakan dagangan pada pecahnya tahap ini. Ia menggabungkan pengenalan corak, mengikuti trend, dan elemen pecah harga untuk mewujudkan sistem perdagangan yang lengkap.

Prinsip Strategi

Prinsip terasnya terletak pada mengenal pasti corak Shark-32, yang memerlukan paras terendah yang berturut-turut dan paras tertinggi yang lebih tinggi dalam dua lilin sebelumnya. Setelah pengesahan corak, strategi mengunci paras tertinggi dan rendah lilin corak awal sebagai tahap harga utama. Sistem memasuki kedudukan apabila harga memecahkan tahap utama ini: entri panjang pada rehat di atas tinggi terkunci, dan entri pendek pada rehat di bawah rendah terkunci. Strategi menggunakan garis sasaran yang diramalkan untuk objektif keuntungan dan parameter berasaskan peratusan untuk penempatan stop-loss yang fleksibel.

Kelebihan Strategi

  1. Pengiktirafan corak yang tepat: Menggunakan definisi matematik yang ketat untuk mengenal pasti corak, mengelakkan penghakiman subjektif
  2. Pengurusan risiko yang komprehensif: Termasuk tetapan sasaran stop-loss dan keuntungan yang jelas
  3. Maklumat maklum balas visual yang jelas: Menggunakan garis dan latar belakang berwarna yang berbeza untuk menandakan corak dan isyarat perdagangan
  4. Isyarat berulang yang ditapis: Hanya membenarkan satu dagangan setiap corak, mengelakkan overtrading
  5. Penentuan sasaran rasional: Menetapkan sasaran keuntungan berdasarkan amplitud corak, menyediakan nisbah risiko-balasan yang baik

Risiko Strategi

  1. Risiko pasaran yang bergelora: Boleh menghasilkan isyarat pecah palsu yang kerap di pasaran yang berbeza
  2. Risiko tergelincir: Mungkin menghadapi tergelincir yang ketara di pasaran yang bergerak pantas
  3. Kebergantungan satu corak: Kebergantungan berlebihan pada satu corak boleh kehilangan peluang perdagangan lain
  4. Sensitiviti parameter: Prestasi strategi sangat bergantung kepada tetapan parameter sasaran stop-loss dan keuntungan

Arahan Pengoptimuman Strategi

  1. Tambah pengesahan jumlah: Masukkan perubahan jumlah untuk mengesahkan kesahihan pecah
  2. Melaksanakan penapis persekitaran pasaran: Tambah penunjuk kekuatan trend untuk menapis keadaan pasaran yang tidak baik
  3. Mengoptimumkan kaedah stop-loss: Pertimbangkan stop-loss dinamik untuk meningkatkan kesesuaian strategi
  4. Tambah penapis masa: Masukkan penapis sesi dagangan untuk mengelakkan tempoh tidak menentu tertentu
  5. Meningkatkan pengurusan wang: Tambah modul saiz kedudukan untuk mengoptimumkan kecekapan modal

Ringkasan

E9 Shark-32 Pattern Quantitative Price Breakout Strategy adalah sistem dagangan yang berstruktur dengan logika yang jelas. Ia membina strategi dagangan yang boleh diukur melalui definisi corak yang ketat dan peraturan dagangan yang jelas. Strategi ini mempunyai sistem pengurusan risiko yang komprehensif dan maklum balas visual yang jelas, menjadikannya mudah difahami dan dilaksanakan oleh peniaga. Melalui arahan pengoptimuman yang dicadangkan, terdapat ruang untuk peningkatan lanjut. Strategi ini sesuai untuk pelabur yang mencari pendekatan perdagangan sistematik, tetapi perhatian mesti diberikan kepada kebolehsesuaian persekitaran pasaran dan pengoptimuman parameter.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
//║                                                                                                             ║
//║ ░▒▓████████▓▒░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░░▒▓████████▓▒░▒▓███████▓▒░   ░▒▓████████▓▒░▒▓██████▓▒░  ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒   ░▒▓█▓▒░     ░▒▓█▓▒░░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░     ░▒▓█▓▒░░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓██████▓▒░ ░▒▓███████▓▒░.  ░▒▓██████▓▒░ ░▒▓███████▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░            ░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░            ░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒.  ░▒▓████████▓▒░▒▓██████▓▒░  ║
//║                                                                                                             ║
//╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝

//@version=5
strategy("E9 Shark-32 Pattern Strategy with Target Lines", shorttitle="E9 Shark-32 Strategy", overlay=true)

// Inputs for background color settings
bgcolorEnabled = input(true, title="Enable Background Color")
bgcolorColor = input.color(color.new(color.blue, 90), title="Background Color")

// Inputs for bar color settings
barcolorEnabled = input(true, title="Enable Bar Color")
barcolorColor = input.color(color.rgb(240, 241, 154), title="Bar Color")

// Inputs for target lines settings
targetLinesEnabled = input(true, title="Enable Target Lines")
targetLineColor = input.color(color.white, title="Target Line Color")
targetLineThickness = input.int(1, title="Target Line Thickness", minval=1, maxval=5)

// Define Shark-32 Pattern
shark32 = low[2] < low[1] and low[1] < low and high[2] > high[1] and high[1] > high

// Initialize color variables for bars
var color barColorCurrent = na
var color barColor1 = na
var color barColor2 = na

// Update color variables based on Shark-32 pattern
barColorCurrent := barcolorEnabled and (shark32 or shark32[1] or shark32[2]) ? barcolorColor : na
barColor1 := barcolorEnabled and (shark32[1] or shark32[2]) ? barcolorColor : na
barColor2 := barcolorEnabled and shark32[2] ? barcolorColor : na

// Apply the bar colors to the chart
barcolor(barColorCurrent, offset=-2, title="Shark-32 Confirmed Current")
barcolor(barColor1, offset=-3, title="Shark-32 Confirmed Previous Bar 1")
barcolor(barColor2, offset=-4, title="Shark-32 Confirmed Previous Bar 2")

// Variables for locking the high and low of confirmed Shark-32
var float patternHigh = na
var float patternLow = na
var float upperTarget = na
var float lowerTarget = na

// Once Shark-32 pattern is confirmed, lock the patternHigh, patternLow, and target lines
if shark32
    patternHigh := high[2]  // The high of the first bar in Shark-32 pattern
    patternLow := low[2]    // The low of the first bar in Shark-32 pattern

    // Calculate the upper and lower white target lines
    upperTarget := patternHigh + (patternHigh - patternLow)  // Dotted white line above
    lowerTarget := patternLow - (patternHigh - patternLow)   // Dotted white line below

// Initialize variables for the lines
var line greenLine = na
var line redLine = na
var line upperTargetLine = na
var line lowerTargetLine = na

// Draw the lines based on the locked patternHigh, patternLow, and target lines
// if shark32
//     future_bar_index_lines = bar_index + 10

//     // Draw lines based on locked patternHigh and patternLow
//     greenLine := line.new(x1=bar_index[2], y1=patternHigh, x2=future_bar_index_lines, y2=patternHigh, color=color.green, width=2, extend=extend.none)
//     redLine := line.new(x1=bar_index[2], y1=patternLow, x2=future_bar_index_lines, y2=patternLow, color=color.red, width=2, extend=extend.none)

//     // Draw dotted white lines if targetLinesEnabled is true
//     if targetLinesEnabled
//         upperTargetLine := line.new(x1=bar_index[2], y1=upperTarget, x2=future_bar_index_lines, y2=upperTarget, color=targetLineColor, width=targetLineThickness, style=line.style_dotted, extend=extend.none)
//         lowerTargetLine := line.new(x1=bar_index[2], y1=lowerTarget, x2=future_bar_index_lines, y2=lowerTarget, color=targetLineColor, width=targetLineThickness, style=line.style_dotted, extend=extend.none)

//     // Create a box to fill the background between the red and green lines
//     if bgcolorEnabled
//         box.new(left=bar_index[2], top=patternHigh, right=future_bar_index_lines, bottom=patternLow, bgcolor=bgcolorColor)

// -------------------------------------------------------------------------
// Strategy Entry and Exit Parameters
// -------------------------------------------------------------------------

// Input parameters for stop loss
longStopLoss = input.float(1.0, title="Long Stop Loss (%)", minval=0.1)  // Percentage-based stop loss for long
shortStopLoss = input.float(1.0, title="Short Stop Loss (%)", minval=0.1)  // Percentage-based stop loss for short

// Variable to track if a trade has been taken
var bool tradeTaken = false

// Reset the flag when a new Shark-32 pattern is confirmed
if shark32
    tradeTaken := false

// Entry conditions only trigger after the Shark-32 is confirmed
longCondition = ta.crossover(close, patternHigh) and not tradeTaken  // Long entry when close crosses above locked patternHigh
shortCondition = ta.crossunder(close, patternLow) and not tradeTaken  // Short entry when close crosses below locked patternLow

// Trigger long and short trades based on the crossover conditions
if (longCondition)
    label.new(bar_index, high, "Long Trigger", style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)
    strategy.entry("Shark-32 Long", strategy.long)
    tradeTaken := true  // Set the flag to true after a trade is taken

if (shortCondition)
    label.new(bar_index, low, "Short Trigger", style=label.style_label_up, color=color.red, textcolor=color.white, size=size.small)
    strategy.entry("Shark-32 Short", strategy.short)
    tradeTaken := true  // Set the flag to true after a trade is taken

// Exit long trade based on the upper target line (upper white dotted line) as take profit
if strategy.position_size > 0
    strategy.exit("Take Profit Long", "Shark-32 Long", limit=upperTarget, stop=close * (1 - longStopLoss / 100))

// Exit short trade based on the lower target line (lower white dotted line) as take profit
if strategy.position_size < 0
    strategy.exit("Take Profit Short", "Shark-32 Short", limit=lowerTarget, stop=close * (1 + shortStopLoss / 100))


Lebih lanjut