
이 전략은 기술 분석을 기반으로 한 정량 거래 시스템으로, 주로 입시 신호로 포지션 삼킬 형태를 이용하며, 부린밴드 변동성 지표와 결합하여 위험 관리 및 위치 통제를 수행한다. 이 전략은 포지션 삼킬 형태를 식별한 후, 부린밴드 계산의 변동 범위에 따라 위험 비율을 결정하고, 그 다음 계좌 총액의 고정 비율을 기반으로 정확한 위치 크기를 계산하고, 최종적으로 스톱 손실과 고정 위험 수익률 비율 (4R) 을 설정하여 수익 목표를 관리한다.
이 전략의 핵심 논리는 크게 세 부분으로 나다. 신호 생성, 포지션 관리, 탈퇴 조건.
첫째, 신호 생성은 보 삼킨 형태에 기반하며, 이 형태는 다음 조건을 충족해야 한다:
두 번째, 포지션 관리는 다음과 같은 단계를 통해 이루어집니다.
마지막으로, 탈퇴 조건은 다음과 같습니다.
위험 제어 정확하고 동적: 이 전략은 고정된 스톱로스를 사용하지 않고, 시장의 현재 변동성에 따라 (블린 밴드 계산을 통해) 위험 매개 변수를 동적으로 조정하여 시스템이 다양한 시장 환경에 적응할 수 있도록합니다.
고정 비율 리스크 관리: 거래 당 리스크 계좌의 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)