
この戦略は,クラシックK線反転形状認識と価格突破確認を組み合わせた自動取引システムである.戦略の核心は,市場情緒の転換点を捉え,四つの高確率の反転形状 (?? 子線,看板沈没,射撃星,下落沈没) を識別し,価格が重要な位置を突破したときに介入し,トレンドを追跡する.システムは,固定パーセントのリスク制御と動的ポジション計算を採用した完善したリスク管理機構を内蔵し,各取引のリスクを制御できるようにします.戦略は1時間枠で動作し,中短期のトレーダーに適しています.
戦略運用ロジックは,信号認識,突破確認,リスク管理の3つのコアモジュールに分かれています.
信号認識段階では,K線実体サイズと上下影線長さを計算して,特定の形状が形成されているかどうかを判断する.多頭信号の場合,線の判定基準は下影線長さが実体2倍以上で上影線が実体1分の1未満である.看板吸収形状は,現在のK線が陽線であり,前陰線を完全に包み込むことを要求する.空頭信号の場合,射星は,上影線が実体2倍以上で下影線が小さいことを要求する.看板吸収は,現在の陰線が前陰線を完全に覆うことを要求する.
突破確認機構は,戦略の重要な革新点である.システムは形状が現れたときにすぐに入場せず,次のK線突破信号K線の高点 (多頭) または低点 (空頭) で取引をトリガーするのを待つ.この遅延確認機構は,偽の信号を効果的にフィルターし,取引の成功率を向上させる.
リスク管理モジュールは,固定リスク比率モデルを採用し,各取引のリスクは,口座の利益の2%に固定されている.システムは,入場価格とストップ・損失価格の距離に基づいて,ポジションの大きさを動的に計算し,市場の変動に関係なく,単一の損失は,制御可能な範囲内にあることを保証する.多頭取引は1:5のリスク・リターン比率を採用し,空頭取引は1:4のリスク・リターン比率を採用し,トレンド取引の特徴を反映する.
まず,形状認識の精度が高い.戦略的に選択された4種類のK線形状は,市場が長期にわたって検証した古典的な反転信号であり,高い信頼性がある.厳格な数学的な定義によって主観的な判断が回避され,信号の一致性と重複性が確保される.
2つ目は,突破確認メカニズムは,勝利率を大幅に高めます。従来型の形状取引戦略は,形状が現れたときにすぐに入場し,偽の突破の罠に容易く陥ります。この戦略は,価格突破確認を待つことによって,ほとんどのノイズ信号を効果的にフィルターし,市場が本当に方向を選択した後にのみ入場します。
3つ目は,リスク管理システムの完善である. 固定パーセントリスクモデルは,口座の長期の生存能力を確保し,連續的な損失に遭遇しても,破局を引き起こさない. ダイナミックなポジション位置計算は,各取引のリスク露出を一致させ,感情的な取引と過剰なレバレッジを回避する.
第四に,リスク・報酬比率設定は合理的である.多頭5:1と空頭4:1の利益・損失比率は,市場の不対称性を十分に考慮し,勝率が30%程度であっても,正の期待された収益を達成することができる.この設定は,トレンドの動きを捕捉するのに特に適した特徴である.
最後に,戦略の実行は完全に自動化され,人間の干渉による感情的な影響は排除されます. すべてのパラメータは最適化され固定され,トレーダーは戦略を設定するだけで”,設定して忘れろ”の取引モデルを実現できます.
戦略の設計は完璧ですが,懸念すべき潜在的リスクがあります.
市場環境のリスクは第一の考慮要因である.戦略は,傾向が明確な市場で優れているが,横軸の振動的な市場では,頻繁に偽の突破シグナルを生じ,連続した小額の損失を引き起こす可能性がある.トレンドの強さを判断するADXのような市場環境フィルターを追加することで,低波動期に取引頻度を減らすことを提案している.
スリップポイントリスクは,実盤取引において無視できない.突破取引の特徴は,入場を決定する時には,多くの場合,大きな市場の変動が伴い,実際の取引価格は,予想価格と偏差がある可能性がある.市場価格の代わりに,制限価格のリストを使用することを考慮するか,または,合理的なスリップポイントの仮定を反測に含めることができます.
タイムフレーム依存性も潜在的な問題である.戦略は1時間図に特化して最適化され,他のタイムフレームではうまく機能しない可能性がある.異なるタイムフレームで取引する必要がある場合は,パラメータを再最適化するか,自律的な仕組みを開発することをお勧めする.
連続損失の心理的ストレスは無視することはできません. リスク管理機構は資金の安全性を保護していますが,連続損失はトレーダーの信頼に影響を与えます. 最大連続損失の制限を設定し,取引停止後に戦略的評価を行うことをお勧めします.
過剰最適化のリスクには注意が必要です. 現在のパラメータは,過去のデータに過度に適合し,将来の市場でのパフォーマンスを低下させる可能性があります. 戦略の長期的な有効性を確保するために,定期的にサンプル外テストとパラメータの安定性分析を行うことをお勧めします.
戦略の性能をさらに向上させるため,将来の最適化は複数の次元から展開できます.
多時間枠確認は,重要な改善方向である.高レベルの時間枠 (例えば4時間または日線) でトレンドの方向を確認し,トレンドの方向が一致するときにのみ取引することができる.この方法は,勝利率を大幅に高め,逆転取引のリスクを減らすことができる.
ダイナミックストップの仕組みは探索に値する。現在の戦略は固定ストップを使用し,トラッキングストップまたはATRベースのダイナミックストップを導入することを検討し,利益を保護しながら取引により多くの発展スペースを与えることができる。特に強いトレンド市場では,ダイナミックストップはより大きな利益を捕獲することができる。
市場状態識別モジュールの追加は,戦略の適応性を大幅に向上させる.変動率,取引量,市場構造などの指標によって,現在の市場状態を判断し,異なる状態で異なるパラメータ設定または取引ルールを採用する.例えば,高変動の市場でストップロスの距離を拡大し,低変動の市場で入場条件を厳しくする.
形状認識アルゴリズムは,さらに最適化できる. 機械学習アルゴリズムを組み込むことを検討し,歴史データによる訓練により,より複雑な形状の組み合わせを識別する. または,形状認識に一定の誤差を許容し,より多くの取引機会を捕捉できるように,曖昧な論理を導入する.
資金管理戦略の最適化余地は大きい。ケリー公式の動的調整ポジション,または戦略の最近のパフォーマンスに合わせてリスクを調整することを考えることができる。連続収益時に適度なリスクを増加させ,連続損失時にリスクを減少させ,資金曲線の平らな成長を実現する。
この戦略は,クラシックな技術分析方法と近代的な量的な取引理念を成功裏に組み合わせて,安定した信頼性の高い自動取引システムを創造した. K線形状認識による市場の転換点を捕捉し,偽信号をフィルターし,リスク管理を固定し,資金の安全を保護する.この戦略は,各環において専門的な設計理念を体現している.
戦略の核心的な優位性は,簡潔ではなくシンプルであり,各構成要素は精密に設計され,最適化されている.形状認識の数学的な定義は,信号の客観性を確保し,突破確認機構は取引の質を向上させ,リスク管理システムは,長期の生存能力を保証している.これらの要素の有機的な組み合わせは,戦略を,実体取引で安定した収益性の可能性に備えている.
もちろん,どんな戦略も完璧ではありません.トレーダーは,その原理と限界を十分に理解し,自分のリスクの好みと市場経験に応じて適切に調整する必要があります.実際の取引の前に十分な反省と模擬取引が行われ,現在の市場環境で戦略が有効であることを確認してください.
未来を見据えると,市場構造の進化と技術の進歩とともに,この戦略には大きな改善の余地があります.継続的な最適化とイノベーションによって,この戦略の枠組みは,変化する市場環境に適応し,トレーダーに長期的に安定した利益をもたらすことができると信じています.
/*backtest
start: 2024-08-11 00:00:00
end: 2025-08-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// --- FIXED PARAMETER STRATEGY ---
// This is a finished script with pre-set values as requested.
// Initial Capital: $1,000
// Risk Per Trade: 2% of Equity
// Bullish R/R: 1:5 | Bearish R/R: 1:4
strategy("Fixed Candlestick Breakout Strategy",
overlay=true,
initial_capital=1000,
commission_value=0.075, // Realistic commission for crypto exchanges
commission_type=strategy.commission.percent)
// --- Fixed Parameters (No Inputs) ---
longProfitRatio = 5.0
shortProfitRatio = 4.0
riskPercent = 0.02 // 2% risk per trade
// --- Candlestick Pattern Detection ---
bodySize = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
// Bullish Signal Logic: Hammer OR Bullish Engulfing
isHammer = lowerWick > bodySize * 2 and upperWick < bodySize * 0.5
isBullishEngulfing = close > open and close[1] < open[1] and close > open[1] and open < close[1]
isBullishSignal = isHammer or isBullishEngulfing
// Bearish Signal Logic: Shooting Star OR Bearish Engulfing
isShootingStar = upperWick > bodySize * 2 and lowerWick < bodySize * 0.5
isBearishEngulfing = close < open and close[1] > open[1] and close < open[1] and open > close[1]
isBearishSignal = isShootingStar or isBearishEngulfing
// --- State Management ---
// We use 'var' to track the signal candle's data and wait for a breakout
var bool waitingForBullishEntry = false
var bool waitingForBearishEntry = false
var float signalHigh = na
var float signalLow = na
// Set the state when a signal candle is identified
if isBullishSignal
waitingForBullishEntry := true
waitingForBearishEntry := false
signalHigh := high
signalLow := low
if isBearishSignal
waitingForBearishEntry := true
waitingForBullishEntry := false
signalHigh := high
signalLow := low
// --- Entry and Exit Logic ---
// Only look for entries if we are flat (no open position)
if strategy.position_size == 0
// Bullish Entry: Trigger on the candle AFTER the signal candle
if waitingForBullishEntry[1] and high > signalHigh[1]
entryPrice = signalHigh[1]
stopLossPrice = signalLow[1]
riskPerUnit = entryPrice - stopLossPrice
// Position Size Calculation (2% Risk)
capitalToRisk = strategy.equity * riskPercent
positionSize = riskPerUnit > 0 ? capitalToRisk / riskPerUnit : 0
if positionSize > 0
takeProfitPrice = entryPrice + (riskPerUnit * longProfitRatio)
strategy.entry("Long", strategy.long, qty=positionSize, stop=entryPrice)
strategy.exit("Long Exit", from_entry="Long", loss=stopLossPrice, limit=takeProfitPrice)
waitingForBullishEntry := false // Reset state
// Bearish Entry: Trigger on the candle AFTER the signal candle
if waitingForBearishEntry[1] and low < signalLow[1]
entryPrice = signalLow[1]
stopLossPrice = signalHigh[1]
riskPerUnit = stopLossPrice - entryPrice
// Position Size Calculation (2% Risk)
capitalToRisk = strategy.equity * riskPercent
positionSize = riskPerUnit > 0 ? capitalToRisk / riskPerUnit : 0
if positionSize > 0
takeProfitPrice = entryPrice - (riskPerUnit * shortProfitRatio)
strategy.entry("Short", strategy.short, qty=positionSize, stop=entryPrice)
strategy.exit("Short Exit", from_entry="Short", loss=stopLossPrice, limit=takeProfitPrice)
waitingForBearishEntry := false // Reset state
// Invalidate the signal if a breakout doesn't happen on the next candle
if waitingForBullishEntry and not isBullishSignal
waitingForBullishEntry := false
if waitingForBearishEntry and not isBearishSignal
waitingForBearishEntry := false
// --- Visuals ---
// Plot markers on the chart for identified signal candles
plotshape(isBullishSignal, "Bullish Signal", shape.triangleup, location.belowbar, color.new(color.green, 20), size=size.small)
plotshape(isBearishSignal, "Bearish Signal", shape.triangledown, location.abovebar, color.new(color.red, 20), size=size.small)