Strategi ini adalah sistem perdagangan automatik berdasarkan pengenalan corak candlestick. Ia mengintegrasikan sepuluh corak candlestick klasik, termasuk lima corak bullish (Pukul, Bullish Engulfing, Piercing Line, Morning Star, dan Three White Soldiers) dan lima corak bearish (Hanging Man, Bearish Engulfing, Dark Cloud Cover, Evening Star, dan Three Black Crows). Melalui pengenalan dan analisis dalam masa nyata corak ini, strategi ini menyediakan peniaga dengan isyarat pembalikan pasaran dan peluang perdagangan yang berpotensi.
Inti strategi ini terletak pada pelaksanaannya secara programatik pengenalan corak lilin yang tepat.
Ini adalah strategi perdagangan pengiktirafan corak lilin yang direka dengan baik dan logiknya jelas. Ia melaksanakan penilaian corak lilin analisis teknikal tradisional yang paling biasa digunakan melalui pengaturcaraan, menyediakan peniaga dengan alat perdagangan yang objektif dan sistematik. Walaupun ia mempunyai beberapa batasan yang melekat, melalui pengoptimuman yang sesuai dan kombinasi dengan alat teknikal lain, strategi ini dapat memberikan isyarat rujukan yang berharga untuk keputusan perdagangan. Reka bentuk modular strategi ini juga menyediakan asas yang baik untuk pengembangan fungsi dan pengoptimuman prestasi berikutnya.
/*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)