この戦略は,キャンドルスタイクパターン認識に基づく自動取引システムである.これは5つの上昇パターン (ハンマー,ブリーッシュ・エングルフィン,ピアスライン,モーニングスター,および3つのホワイト・ソルジャー) と5つの下落パターン (ハンギングマン,ベアッシュ・エングルフィン,ダーククラウドカバー,イブニングスター,および3つのブラック・クロウ) を含む10つのクラシックなキャンドルスタイクパターンを統合している.これらのパターンのリアルタイム識別と分析を通じて,戦略はトレーダーに潜在的な市場逆転信号と取引機会を提供します.
この戦略の核心は,正確なキャンドルスタイクパターン認識のプログラム化実装にあります.各パターンには独自の数学的な定義と条件基準があります.
これは,よく設計され,論理的に明確なキャンドルスタイクパターン認識取引戦略である.これは,プログラマングを通じて最も一般的に使用されるキャンドルスタイクパターン判断を従来の技術分析に実装し,トレーダーに客観的で体系的な取引ツールを提供します.この戦略にはいくつかの固有の制限がありますが,適切な最適化と他の技術ツールとの組み合わせによって,この戦略は取引決定のための貴重な参照信号を提供することができます.この戦略のモジュール式デザインは,後の機能拡張とパフォーマンス最適化にも良い基盤を提供します.
/*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)