Chiến lược này là một hệ thống giao dịch tự động dựa trên nhận dạng mô hình nến. Nó tích hợp mười mô hình nến cổ điển, bao gồm năm mô hình tăng (Hammer, Bullish Engulfing, Piercing Line, Morning Star và Three White Soldiers) và năm mô hình giảm (Hanging Man, Bearish Engulfing, Dark Cloud Cover, Evening Star và Three Black Crows). Thông qua việc xác định và phân tích thời gian thực các mô hình này, chiến lược cung cấp cho các nhà giao dịch các tín hiệu đảo ngược thị trường tiềm năng và cơ hội giao dịch.
Cốt lõi của chiến lược nằm trong việc thực hiện chương trình nhận dạng mẫu nến chính xác.
Đây là một chiến lược giao dịch nhận dạng mô hình nến được thiết kế tốt và rõ ràng về mặt logic. Nó thực hiện các phán đoán mô hình nến được sử dụng phổ biến nhất của phân tích kỹ thuật truyền thống thông qua lập trình, cung cấp cho các nhà giao dịch một công cụ giao dịch khách quan và có hệ thống. Mặc dù nó có một số hạn chế vốn có, thông qua tối ưu hóa thích hợp và kết hợp với các công cụ kỹ thuật khác, chiến lược này có thể cung cấp các tín hiệu tham chiếu có giá trị cho các quyết định giao dịch.
/*backtest start: 2024-11-10 00:00:00 end: 2024-12-09 08:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Author: Raymond Ngobeni strategy('Candlestick Pattern Strategy [Ubaton]', 'Ubaton - Candlestick Pattern Strategy', overlay = true, max_labels_count = 500, max_lines_count = 500, max_boxes_count = 500) // User Inputs: Enable/Disable Patterns // Bullish Patterns enableHammer = input.bool(true, "Show Hammer") enableBullEngulfing = input.bool(true, "Show Bullish Engulfing") enablePiercingLine = input.bool(true, "Show Piercing Line") enableMorningStar = input.bool(true, "Show Morning Star") enableThreeWhiteSoldiers = input.bool(true, "Show Three White Soldiers") // Bearish Patterns enableHangingMan = input.bool(true, "Show Hanging Man") enableBearEngulfing = input.bool(true, "Show Bearish Engulfing") enableDarkCloudCover = input.bool(true, "Show Dark Cloud Cover") enableEveningStar = input.bool(true, "Show Evening Star") enableThreeBlackCrows = input.bool(true, "Show Three Black Crows") // Helper Functions isHammer() => bodySize = math.abs(open - close) shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize isBullishEngulfing() => close[1] < open[1] and close > open and open <= close[1] and close >= open[1] isPiercingLine() => close[1] < open[1] and close > close[1] + (open[1] - close[1]) * 0.5 and close < open[1] isMorningStar() => close[2] < open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close > open isThreeWhiteSoldiers() => close > open and close[1] > open[1] and close[2] > open[2] and open > close[1] and open[1] > close[2] isHangingMan() => bodySize = math.abs(open - close) shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize and close < open isBearishEngulfing() => close[1] > open[1] and close < open and open >= close[1] and close <= open[1] isDarkCloudCover() => close[1] > open[1] and open > close[1] and close < open[1] and close < close[1] + (open[1] - close[1]) * 0.5 isEveningStar() => close[2] > open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close < open isThreeBlackCrows() => close < open and close[1] < open[1] and close[2] < open[2] and open < close[1] and open[1] < close[2] // Detect Patterns // Bullish hammerDetected = enableHammer and isHammer() bullEngulfDetected = enableBullEngulfing and isBullishEngulfing() piercingDetected = enablePiercingLine and isPiercingLine() morningStarDetected = enableMorningStar and isMorningStar() threeWhiteDetected = enableThreeWhiteSoldiers and isThreeWhiteSoldiers() // Bearish hangingManDetected = enableHangingMan and isHangingMan() bearEngulfDetected = enableBearEngulfing and isBearishEngulfing() darkCloudDetected = enableDarkCloudCover and isDarkCloudCover() eveningStarDetected = enableEveningStar and isEveningStar() threeBlackDetected = enableThreeBlackCrows and isThreeBlackCrows() // Plot Bullish Patterns plotshape(enableHammer and hammerDetected, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer") plotshape(enableBullEngulfing and bullEngulfDetected, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.labelup, text="Engulf") plotshape(enablePiercingLine and piercingDetected, title="Piercing Line", location=location.belowbar, color=color.green, style=shape.labelup, text="Piercing") plotshape(enableMorningStar and morningStarDetected, title="Morning Star", location=location.belowbar, color=color.green, style=shape.labelup, text="Morning") plotshape(enableThreeWhiteSoldiers and threeWhiteDetected, title="Three White Soldiers", location=location.belowbar, color=color.green, style=shape.labelup, text="3 Soldiers") // Plot Bearish Patterns plotshape(enableHangingMan and hangingManDetected, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging") plotshape(enableBearEngulfing and bearEngulfDetected, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulf") plotshape(enableDarkCloudCover and darkCloudDetected, title="Dark Cloud Cover", location=location.abovebar, color=color.red, style=shape.labeldown, text="Dark Cloud") plotshape(enableEveningStar and eveningStarDetected, title="Evening Star", location=location.abovebar, color=color.red, style=shape.labeldown, text="Evening") plotshape(enableThreeBlackCrows and threeBlackDetected, title="Three Black Crows", location=location.abovebar, color=color.red, style=shape.labeldown, text="3 Crows") // Strategy Execution if hammerDetected or bullEngulfDetected or piercingDetected or morningStarDetected or threeWhiteDetected strategy.entry("Bullish Entry", strategy.long) if hangingManDetected or bearEngulfDetected or darkCloudDetected or eveningStarDetected or threeBlackDetected strategy.entry("Bearish Entry", strategy.short)