
Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada pengenalan bentuk harga, yang intinya adalah untuk mengidentifikasi dan memanfaatkan bentuk K-line khusus seperti “Shark 32” untuk melakukan perdagangan. Strategi ini menganalisis perubahan kontinuitas pada titik tinggi dan rendah, menetapkan tingkat harga kritis setelah konfirmasi bentuk, dan melakukan perdagangan ketika tingkat tersebut terobosan. Strategi ini menggabungkan beberapa elemen analisis teknis, seperti pengenalan bentuk, pelacakan tren, dan terobosan harga, untuk membangun sistem perdagangan yang lengkap.
Inti dari strategi ini adalah untuk mengidentifikasi bentuk “32 penyu”, yang membutuhkan kondisi berikut: posisi rendah dari dua garis K sebelumnya terus menurun, sementara posisi tinggi terus meningkat. Ketika bentuknya dikonfirmasi, strategi mengunci posisi tinggi dan rendah dari garis K awal bentuk sebagai tingkat harga kunci. Sistem membuka posisi ketika harga menembus tingkat kunci ini: ketika harga inventaris menembus posisi tinggi yang terkunci, dan posisi kosong ketika terkunci.
Strategi penembusan harga kuantitatif bentuk E9 ikan hiu 32 adalah sistem perdagangan yang terstruktur, logis dan jelas. Ini membangun strategi perdagangan yang dapat dieksekusi secara kuantitatif melalui definisi bentuk yang ketat dan aturan perdagangan yang jelas. Sistem manajemen risiko strategi ini telah disempurnakan, umpan balik visual jelas, mudah dipahami dan dieksekusi oleh pedagang.
/*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))