この戦略は,ハンマーとハンギングマンという2つの古典的なキャンドルスタイクパターンをベースとした定量的な取引システムである.この逆転パターンを特定することによって,潜在的な市場のターニングポイントを予測する.このシステムは,キャンドルスタイクボディと影,トレンド方向,その他の要素の関係を含む信号の有効性を確認するために複数の技術指標を組み合わせ,市場の逆転点を正確に把握することを達成する.
戦略の基本的な論理は プログラム的に2つの鍵となるキャンドルスタイクパターンを特定することです 1. ハンマー: 下向きの傾向で現れ,上向きの逆転の可能性を示唆する.小さな体,長い下影 (体長の少なくとも2倍),上影がほとんどない. 2. ハンギングマン: 上向きのトレンドで現れ,下向きの逆転の可能性を示唆する.ハンマーに似た特徴が,反対の意味を持つ異なる場所に現れる.
戦略は,以下を含む厳格なパラメータを通じて,これらのパターンを定量化します. - 最低キャンドル体長倍数 - 下の影とキャンドルの高さの比率 - 保持期間
この戦略は,定量化を通じてクラシックな技術分析理論を体系的に実装し,強力な実用的な価値を示している.パラメータ最適化とリスク制御メカニズム精製を通じて,戦略は異なる市場環境で安定したパフォーマンスを維持することができる.モジュール式設計はまた,後の最適化のための堅牢な基盤を提供します.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("Hammer and Hanging Man Strategy", overlay=true) // Input parameters length = input.int(5, title="Minimum Candle Body Length (Multiplier)", minval=1) shadowRatio = input.float(1, title="Lower Shadow to Candle Height Ratio", minval=1.0) holdPeriods = input.int(26, title="Hold Periods (Bars)", minval=1) // Holding period in bars // Function to calculate the absolute value absValue(x) => x >= 0 ? x : -x // Function to check if it is a Hammer isHammer() => bodyLength = absValue(close - open) candleHeight = high - low lowerShadow = math.min(open, close) - low upperShadow = high - math.max(open, close) smallBody = bodyLength <= candleHeight / length longLowerShadow = lowerShadow >= bodyLength * shadowRatio shortUpperShadow = upperShadow <= bodyLength smallBody and longLowerShadow and shortUpperShadow and close > open // Function to check if it is a Hanging Man isHangingMan() => bodyLength = absValue(close - open) candleHeight = high - low lowerShadow = math.min(open, close) - low upperShadow = high - math.max(open, close) smallBody = bodyLength <= candleHeight / length longLowerShadow = lowerShadow >= bodyLength * shadowRatio shortUpperShadow = upperShadow <= bodyLength smallBody and longLowerShadow and shortUpperShadow and close < open // Detect the candles hammer = isHammer() hangingMan = isHangingMan() // Trading logic: Long on Hammer, Short on Hanging Man if hammer strategy.entry("Long", strategy.long) // Long entry on Hammer if hangingMan strategy.entry("Short", strategy.short) // Short entry on Hanging Man // Exit after X bars if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods strategy.close("Long") if strategy.position_size < 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods strategy.close("Short") // Visualization of signals plotshape(hammer, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer") plotshape(hangingMan, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging Man")