
Strategi ini adalah sistem analisis teknikal yang komprehensif yang menggabungkan pelbagai bentuk K-line dan trendline untuk menghasilkan isyarat perdagangan. Strategi ini menilai titik-titik perubahan trend pasaran dengan mengenal pasti beberapa bentuk K-line klasik (seperti bentuk menelan, garis kelinci, bintang pencahayaan, dan lain-lain) dan bentuk grafik (seperti bentuk dua puncak, dua dasar, segi tiga, bendera, dan lain-lain), dan menghantar isyarat perdagangan pada masa yang sesuai.
Strategi ini berdasarkan komponen teras berikut:
Strategi ini membina sistem perdagangan yang lengkap dengan menggunakan pelbagai kaedah analisis teknikal secara komprehensif. Kelebihan strategi ini adalah analisis pelbagai dimensi dan kawalan risiko yang baik, tetapi juga menghadapi risiko seperti penembusan palsu dan keterbelakangan. Dengan pengoptimuman dan penambahbaikan yang berterusan, strategi ini dijangka dapat mencapai prestasi yang lebih baik dalam perdagangan sebenar.
/*backtest
start: 2025-01-20 00:00:00
end: 2025-02-19 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("Advanced Candlestick and Line Chart Patterns with Head and Shoulders", overlay=true)
// --- Candlestick Patterns ---
isBullishEngulfing = close > open[1] and open < close[1]
isBearishEngulfing = close < open[1] and open > close[1]
isHammer = (high - low) > 2 * (open - close) and (close - low) / (0.001 + high - low) > 0.6 and (open - low) / (0.001 + high - low) > 0.6
isHangingMan = isHammer and close < open
isDoji = math.abs(close - open) <= 0.1 * (high - low)
isMorningStar = close[2] < open[2] and close[1] > open[1] and close > open and close > close[2] and open[1] > close[2]
isEveningStar = close[2] > open[2] and close[1] < open[1] and close < open and close < close[2] and open[1] < close[2]
isPiercingLine = close > open and close[1] < open[1] and close > open[1] and open < close[1]
isDarkCloudCover = close < open and close[1] > open[1] and close < open[1] and open > close[1]
isBullishHarami = close > open[1] and open < close[1] and close > open and close[1] > open
isBearishHarami = close < open[1] and open > close[1] and close < open and close[1] < open
// --- Line Chart Patterns ---
// Double Top and Double Bottom
doubleTop = (high[2] > high[1] and high[1] < high and close < open[1])
doubleBottom = (low[2] < low[1] and low[1] > low and close > open[1])
// Symmetrical Triangles
symmetricalTriangle = (high[2] > high[1] and low[2] < low[1] and high > high[1] and low > low[1])
// Ascending Triangle
ascendingTriangle = (high[2] < high[1] and low[2] > low[1] and high > high[1] and low > low[1])
// Descending Triangle
descendingTriangle = (high[2] > high[1] and low[2] < low[1] and high < high[1] and low < low[1])
// Flags and Pennants
isFlag = (high[1] > high[2] and low[1] > low[2] and high < high[1] and low < low[1])
isPennant = (high[2] < high[1] and low[2] > low[1] and high > high[1] and low < low[1])
// Channel Formation
isChannel = (high[2] > high[1] and low[2] < low[1] and high > high[1] and low < low[1])
// Diamond Pattern
isDiamond = (high[2] < high[1] and low[2] > low[1] and high > high[1] and low < low[1] and high[1] < high and low[1] > low)
// --- Head and Shoulders Patterns ---
// Head and Shoulders
isHeadAndShoulders = high[2] > high[1] and high[1] < high and close < open[1]
// Inverse Head and Shoulders
isInverseHeadAndShoulders = low[2] < low[1] and low[1] > low and close > open[1]
// --- Visual Representation ---
plotshape(series=isBullishEngulfing, location=location.belowbar, color=color.green, style=shape.labelup, title="Bullish Engulfing")
plotshape(series=isBearishEngulfing, location=location.abovebar, color=color.red, style=shape.labeldown, title="Bearish Engulfing")
plotshape(series=isHammer, location=location.belowbar, color=color.green, style=shape.triangledown, title="Hammer")
plotshape(series=isHangingMan, location=location.abovebar, color=color.red, style=shape.triangleup, title="Hanging Man")
plotshape(series=isDoji, location=location.belowbar, color=color.blue, style=shape.labelup, title="Doji")
plotshape(series=isMorningStar, location=location.belowbar, color=color.green, style=shape.triangledown, title="Morning Star")
plotshape(series=isEveningStar, location=location.abovebar, color=color.red, style=shape.triangleup, title="Evening Star")
plotshape(series=isPiercingLine, location=location.belowbar, color=color.green, style=shape.triangleup, title="Piercing Line")
plotshape(series=isDarkCloudCover, location=location.abovebar, color=color.red, style=shape.triangledown, title="Dark Cloud Cover")
plotshape(series=isBullishHarami, location=location.belowbar, color=color.green, style=shape.triangledown, title="Bullish Harami")
plotshape(series=isBearishHarami, location=location.abovebar, color=color.red, style=shape.triangleup, title="Bearish Harami")
// Line Chart Pattern Visualization
plotshape(series=doubleTop, location=location.abovebar, color=color.red, style=shape.triangledown, title="Double Top")
plotshape(series=doubleBottom, location=location.belowbar, color=color.green, style=shape.triangleup, title="Double Bottom")
plotshape(series=symmetricalTriangle, location=location.belowbar, color=color.blue, style=shape.triangledown, title="Symmetrical Triangle")
plotshape(series=ascendingTriangle, location=location.belowbar, color=color.blue, style=shape.triangledown, title="Ascending Triangle")
plotshape(series=descendingTriangle, location=location.abovebar, color=color.blue, style=shape.triangleup, title="Descending Triangle")
plotshape(series=isFlag, location=location.belowbar, color=color.orange, style=shape.triangledown, title="Flag")
plotshape(series=isPennant, location=location.belowbar, color=color.purple, style=shape.triangledown, title="Pennant")
plotshape(series=isChannel, location=location.belowbar, color=color.blue, style=shape.triangledown, title="Channel")
plotshape(series=isDiamond, location=location.abovebar, color=color.blue, style=shape.triangledown, title="Diamond")
// Head and Shoulders Pattern Visualization
plotshape(series=isHeadAndShoulders, location=location.abovebar, color=color.red, style=shape.triangledown, title="Head and Shoulders")
plotshape(series=isInverseHeadAndShoulders, location=location.belowbar, color=color.green, style=shape.triangleup, title="Inverse Head and Shoulders")
// --- Strategy Logic ---
longCondition = isBullishEngulfing or isHammer or isMorningStar or isPiercingLine or isBullishHarami or doubleBottom or isInverseHeadAndShoulders
shortCondition = isBearishEngulfing or isHangingMan or isEveningStar or isDarkCloudCover or isBearishHarami or doubleTop or isHeadAndShoulders
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Stop-Loss and Take-Profit
strategy.exit("Take Profit/Stop Loss", "Long", stop=low - 10, limit=high + 10)
strategy.exit("Take Profit/Stop Loss", "Short", stop=high + 10, limit=low - 10)