
この戦略は,技術分析に基づいた定量取引システムで,主に看板の吞食形態を入場信号として使用し,ブリン帯の変動性指標と組み合わせてリスク管理とポジションコントロールを行う.この戦略は,看板の吞食形態を認識した後,ブリン帯の計算による変動範囲に基づいてリスク比率R ((値) を決定し,その後,口座総額の固定比率 ((0.75%) をベースに正確なポジションサイズを計算し,最終的に,ストップ損失と固定リスクリターン比率4R (()) の利益目標を設定することによって取引を管理する.
この戦略の核心的な論理は,信号生成,ポジション管理,退出条件の3つの部分に分かれています.
まず,信号生成は看板吞食形態に基づくもので,この形態は以下の条件を満たす必要がある.
2 ポジション管理は次のステップで実行されます.
最後に,退出条件を以下に設定します.
リスク管理は精密で動的である.この戦略は,固定した止損点を用いるのではなく,市場の現在の波動性 (ブリン帯計算による) に基づいて,リスクパラメータを動的に調整し,システムが異なる市場環境に自律的に適応できるようにする.
固定比率のリスク管理:取引ごとに口座の0.75%のみをリスクし,単一取引の過度の損失を効果的に防止し,長期の資金管理の安定性を実現する.
正確なポジション計算: ブリン帯の波動性とリスク金額に基づいて,各取引のポジションの大きさを正確に計算し,異なる市場条件下で一貫したリスク暴露を維持します.
明確なリスク・リターン比率: 4Rの利益目標を固定して,取引の潜在的な利益が潜在的なリスクの4倍であることを保証し,専門取引のリスク・リターン要求を満たす.
取引状況の視覚化:入場シグナルをマークし,取引区画の枠を描画することによって,取引者の取引のパフォーマンスを直観的に理解するのを助ける.
タイムエフェクティビティのリスク:看板の吸収形は,短期的な価格逆転信号であり,中長期のトレンド変化を予測することができない可能性があり,強いトレンドの市場では早期の入場につながる可能性があります.
市場条件の制約:この戦略は,特にブリンが異常な拡大または収縮するときに,高波動性または流動性の欠如した市場でうまく機能しない可能性があります.
限られた入場条件:単一の看板吞食形態のみに依存すると,信号が稀に発生したり,他の有効な入場機会を逃す可能性があります.
固定倍数リスク:一定の0.4系数を使用してR値を計算することは,特定の市場条件下で柔軟性が不足し,極端な市場環境に十分に適応できない可能性があります.
潜在的滑り点問題:高波動の市場では,実際のストップ・損失執行価格に明らかな滑り点が発生し,実際のリスク管理の効果に影響を与える可能性があります.
フィルタリング条件の追加: トレンド確認指標の追加 ((移動平均など) を検討し,主動トレンドの方向のみで取引を確実にするようにし,逆転取引を避けるようにする.
マルチタイムフレーム分析:より高いタイムフレームの市場構造分析を導入し,より高いタイムフレームのトレンド方向が一致する時にのみ取引を実行し,信号品質を向上させる.
動的調整リスクパラメータ: 固定された0.75%のリスク比率と0.4のR値係数を調整可能なパラメータとして設定し,市場の波動性に応じて自動的に調整し,低波動の市場でリスクを増加させ,高波動の市場でリスクを減少させる.
エクセプト戦略を最適化します. 固定したストップと利益のレベルにのみ依存するのではなく,移動するストップまたは指標に基づくダイナミックなエクセプト条件を追加することを検討できます.
複数の指標の確認を追加:看板の消費形状を他の技術指標 (RSI,MACDまたは取引量分析など) と組み合わせて,入場信号の信頼性を向上させる.
ブリン帯のリスク管理による看板を食い込む戦略の量化取引システムは,伝統的なグラフ形状認識と近代的なリスク管理方法を組み合わせた完全な取引システムである.この戦略はブリン帯の動的にリスクパラメータを調整し,各取引のポジションサイズを正確に制御し,固定されたリスクリターン比率を使用して利益目標を設定する.この方法は,取引の規律を維持しながら,市場の変動に適応する能力を提供している.
この戦略はリスク管理の面で優れたパフォーマンスを示していますが,特に入場シグナルの質と退出戦略の柔軟性に関して,最適化のための余地があります.追加のフィルタリング条件,マルチタイムフレーム分析,ダイナミックリスクパラメータの調整を加えることで,この戦略は,異なる市場環境下での適応性と収益性をさらに向上させることができます.
全体的に見ると,これは専門的なリスク管理特性を備えた完全な取引システムであり,資金管理とリスク管理を重んじるトレーダーに適しています.合理的な最適化とパラメータ調整により,この戦略は長期にわたる安定した取引ツールになることができます.
/*backtest
start: 2024-02-26 00:00:00
end: 2025-02-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Bullish Engulfing Strategy with BB Risk", overlay=true)
// Input parameters for customization (optional, can be adjusted in Strategy Tester)
minVolume = input.int(1000000, "Minimum Volume", minval=1) // Optional filter for liquidity
// Calculate Bollinger Bands (length=40, StdDev=2.5) for R
length = 40
mult = 2.5
basis = ta.sma(close, length) // Middle Band (40-period SMA of close)
dev = mult * ta.stdev(close, length) // Standard deviation multiplied by 2.5
upperBB = basis + dev // Upper Bollinger Band
lowerBB = basis - dev // Lower Bollinger Band
// Define R as 0.4 times the Bollinger Bands spread: R = 0.4 * ((1 - (lowerBB / upperBB)) * 100)
R = 0.4 * (1 - (lowerBB / upperBB)) // Percentage value, scaled by 0.4
// Define Bullish Engulfing pattern with optional volume filter
isBullishEngulfing() => close > open and close[1] < open[1] and close > open[1] and open < close[1] and close[1] < open[1] and close > open and volume > minVolume
bullishEngulfing = isBullishEngulfing()
// Track position and entry details
var bool inPosition = false
var float entryPrice = 0.0
var int entryBar = 0
var int exitBar = 0 // Track exit bar (added here to fix undeclared variable)
var float exitPrice = 0.0 // Track exit price
// Enter long position on the next bar after Bullish Engulfing, with position size risking 0.75% of portfolio
if (bullishEngulfing and not inPosition)
// Calculate position size to risk 0.75% of portfolio
portfolioValue = strategy.equity // Current portfolio equity
riskPerTrade = portfolioValue * 0.0075 // 0.75% of portfolio
stopLossDistance = R // R% of entry price (stop-loss distance)
entryPrice := close
positionSize = riskPerTrade / stopLossDistance / entryPrice // Position size in units (contracts/shares)
// Ensure positionSize is rounded to a practical number (e.g., whole shares)
positionSize := math.round(positionSize)
// Enter long position with calculated size
strategy.entry("Long", strategy.long, limit = entryPrice, qty=positionSize)
inPosition := true
entryBar := bar_index
// Exit logic: Stop-loss or Take-profit
if (inPosition)
// Stop-loss: Exit if price drops below entryPrice - R%
stopLossLevel = entryPrice * (1 - R)
if (low <= stopLossLevel)
strategy.close("Long")
inPosition := false
exitBar := bar_index
exitPrice := close
// Take-profit: Exit if price rises above entryPrice + 4R%
takeProfitLevel = entryPrice * (1 + 4 * R)
if (high >= takeProfitLevel)
strategy.close("Long")
inPosition := false
exitBar := bar_index
exitPrice := close
// Optional: Plot signals and R for visualization
if (bullishEngulfing)
label.new(bar_index, high, "Bullish Engulfing", yloc=yloc.abovebar, color=color.green, style=label.style_label_down, textcolor=color.white)
plot(R, title="R (BB Spread %)", color=color.blue, style=plot.style_histogram)