
이 전략은 부린밴드 (Bollinger Bands) 를 기반으로 한 동적 돌파 거래 시스템으로, 가격 돌파 경로를 이용한 신호를 주로 다방면으로 입문하고, 트렌드 지속성과 평균 회귀 원칙을 결합하여 퇴출한다. 전략은 5 분 시간 프레임에 따라 작동하며, 부린밴드 파라미터와 트렌드 관용을 설정하여 단기 시장 변동에서 돌파 기회를 잡으며, 신속한 입문과 위험 통제를 구현한다. 이 전략의 핵심 논리는: 가격이 부린밴드 경로를 상향으로 돌파 할 때 더 많은 입장을 취하고, 가격이 상반 경로를 지속할 수 없을 때 상반 경로를 유지하거나 경로 (평선) 을 도달 할 때 평평한 입장을 취한다.
이 전략은 브린 밴드 지표에 기반을 두고 있으며, 이 지표는 3개의 선으로 구성되어 있습니다. 중도 ((20주기 간단한 이동 평균), 상도 ((중도 + 1.9배 표준 차) 및 하도 ((중도-1.9배 표준 차)). 거래 논리는 다음과 같습니다.
전략은 변수 barsNotAboveUpper를 사용하여 계산합니다. 가격이 상단 궤도 위에 유지되지 않은 연속 주기 수. 가격이 상단 궤도보다 높을 때마다 카운터는 0으로 재설정됩니다. 그렇지 않으면 카운터는 1을 더합니다. 계산이 용인치의 절정에 도달하거나 가격이 중간 궤도에 닿을 때 전략은 평형 상태에서 멀티 오드 포지션을 종료합니다.
코드는 공허 전략의 프레임워크를 포함하고 있지만, 실제 실행 공허 거래 부분은 코팅되어, 전략이 단지 다중 거래만을 수행하도록 한다. 이것은 시장 특성이나 피드백 결과에 따라 이루어지는 최적화 결정일 수 있다.
트렌드 추적 및 변동률 적응: 브린은 시장의 변동률에 적응하여 다양한 변동 환경에 따라 채널 폭을 자동으로 조정하여 다양한 시장 조건에서 전략이 유효합니다.
명확한 출입 및 출입 규칙전략은 명확한 진입 신호를 제공하며, 두 가지 객관적인 진출 조건을 제공하며, 주관적인 판단을 줄입니다.
위험 제어 장치: 트렌드 관용 변수를 설정하여, 전략은 트렌드 변화에 신속하게 반응하고, 적시에 상실을 멈출 수 있다. 시간 및 가격에 기반한 이중 퇴출 메커니즘은 단일 거래의 위험 노출을 효과적으로 제어한다.
매개 변수 최적화 공간전략은 브린 밴드 길이, 배수 및 트렌드 관용의 세 가지 조정 가능한 매개 변수를 제공하여 거래자가 다른 시장 조건과 거래 스타일에 따라 최적화 할 수 있습니다.
평균값 회귀 원리의 적용: 전략은 가격의 평균선 ((중도 궤도) 에 닿는 것을 퇴출 조건으로 사용하여, 금융 시장의 평균값 회귀 특성에 부합하며, 퇴출의 합리성을 높였다.
경고 시스템 통합: 전략은 거래 신호 경고 기능을 통합하여 거래자의 입출력 신호를 실시간으로 알리고 거래 실행 효율성을 향상시킵니다.
가짜 침입 위험가격 상승은 일시적으로 상승한 후 급격히 하락할 수 있으며, 이는 잘못된 신호와 불필요한 거래로 인해 거래 비용을 증가시킬 수 있습니다.
매개변수 민감도부린 밴드 길이와 곱하기 변수가 전략 성능에 큰 영향을 미치며, 부적절한 변수 설정으로 인해 과도한 가짜 신호가 발생하거나 중요한 거래 기회를 놓칠 수 있습니다.
한방 거래 제한: 현재 전략은 단지 다자 거래만 수행하고, 하향 추세 시장에서 수익 기회의 부족이 장기적인 성과에 불안정하게 작용할 수 있다.
시간 의존성: 동향 관용은 가격 변동의 폭이 아닌 주기적으로 계산됩니다. 극단적인 상황에서는 적시에 멈출 수 없으며, 하향 위험을 증가시킵니다.
철수 통제가 부족하다전략: 총자금 관리에 기반한 스톱 로즈 메커니즘이 부족하여 연속적인 잘못된 신호가 발생하면 계좌의 큰 철회로 이어질 수 있습니다.
시간적 제한: 전략 특정 설계 5 분 차트, 다른 시간 프레임에 적용되지 않을 수 있습니다, 전략의 적용 범위를 제한한다.
이러한 위험을 줄이기 위해 다음과 같은 것이 권장됩니다: 1) 가짜 돌파 신호를 줄이기 위해 추가 필터링 조건을 추가하십시오; 2) 전체 포지션에 기반한 위험 제어를 실시하십시오; 3) 추세를 확인하는 지표를 추가하십시오; 4) 가격 폭에 기반한 손실 제도를 추가하는 것을 고려하십시오.
adxLength = input.int(14, "ADX Length")
adxThreshold = input.int(25, "ADX Threshold")
dI = ta.dmi(adxLength, adxLength)
adx = ta.adx(adxLength)
trendFilter = adx > adxThreshold and dI+"DI" > dI+"DI-"
longCondition := longCondition and trendFilter
완전한 다공간 전략을 실현하기: 활성화 코드에 언급된 공중 거래 논리, 전략이 하락 시장에서 똑같이 수익을 얻을 수 있도록. 이것은 전략의 다양한 시장 환경에서 적응성과 포괄성을 향상시킬 것이다.
자금 관리 최적화: 포지션 크기 제어 및 ATR 기반의 중지 손실 설정, 최대 인출 제한 등과 같은 전반적인 위험 관리를 추가합니다. 예를 들어:
atrPeriod = input.int(14, "ATR Period")
atrMultiplier = input.float(3.0, "ATR Multiplier")
atr = ta.atr(atrPeriod)
stopLossPrice = strategy.position_avg_price - (atrMultiplier * atr)
timeFilter = (hour >= 9 and hour < 16) or (hour >= 18 and hour < 22)
longCondition := longCondition and timeFilter
volatilityRatio = ta.atr(14) / ta.atr(56)
dynamicMult = volatilityRatio < 0.8 ? mult * 0.8 : mult * 1.2
var float trailingStop = na
if strategy.position_size > 0
trailingStop := math.max(trailingStop, close - atrMultiplier * atr)
if close < trailingStop
strategy.close("Long")
부린带动态突破加速度量化交易策略 (영어: Binary Band Dynamic Breakthrough Acceleration Quantitative Trading Strategy) 은 기술 분석을 기반으로 한 단기 거래 시스템으로, 트렌드 추적과 평균 회귀 원리를 결합한다. 이 전략은 부린带轨道上的突破信号에 대한 가격을 모니터링하여 다중 입구를 하고, 가격 지속성이 부족하거나 평평선에 닿는 상황을 이용해서 퇴출을 하고, 완전한 거래 폐쇄 고리를 형성한다.
이 전략의 장점은 시장의 변동성에 적응할 수 있는 능력과 명확한 거래 규칙에 있지만, 가짜 돌파 위험과 변수 민감성 같은 과제에 직면하고 있다. 트렌드 필터를 추가하고, 다중 포지션 거래 시스템을 개선하고, 자금 관리를 최적화하고, 적응 변수를 도입하는 등의 방법으로 전략의 안정성과 수익성을 크게 향상시킬 수 있다.
거래자들에게, 이 전략은 단기 거래 시스템으로 사용하기에 적합하며, 특히 변동성이 높고, 명백한 돌파적 특성이 있는 시장에서 사용된다. 추가적으로 최적화되면, 다양한 시장 환경에서 비교적 안정적인 성능을 유지할 수 있는 종합적인 거래 솔루션이 될 잠재력이 있다.
/*backtest
start: 2024-03-25 00:00:00
end: 2025-03-24 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GoodDayss
//@version=6
strategy("Bollinger Bands Strategy 5m", overlay=true)
length = input.int(20, "Bollinger Length", minval=1)
mult = input.float(1.9, "Bollinger Mult", minval=0.001, maxval=50)
tolerance = input.int(4, "Trend Tolerance", minval=1)
source = close
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
plot(basis, color=color.yellow, linewidth=2, title="Basis")
plot(upper, color=color.white, linewidth=2, title="Up")
plot(lower, color=color.white, linewidth=2, title="Low")
var int barsNotAboveUpper = 0
var int barsNotBelowLower = 0
bool longCondition = ta.crossover(close, upper)
bool shortCondition = ta.crossunder(close, lower)
if longCondition and strategy.position_size <= 0
strategy.entry("Long", strategy.long)
// Alert
alertcondition(longCondition and strategy.position_size <= 0, title = "幹你媽買進", message = "{{{ticker}} 的價格是 {{close}},\n買進!!!.}")
// if shortCondition and strategy.position_size >= 0
// strategy.entry("Short", strategy.short)
if strategy.position_size > 0
if close > upper
barsNotAboveUpper := 0
else
barsNotAboveUpper += 1
bool touchedBasisLong = (low <= basis)
if barsNotAboveUpper >= tolerance or touchedBasisLong
// Alert
alert(message = "{{{ticker}} 的價格是 {{close}},\n塊陶啊,賣出!!!.}")
strategy.close("Long", comment="Exit Long")
barsNotAboveUpper := 0
if strategy.position_size < 0
if close < lower
barsNotBelowLower := 0
else
barsNotBelowLower += 1
bool touchedBasisShort = (high >= basis)
// if barsNotBelowLower >= tolerance or touchedBasisShort
// strategy.close("Short", comment="Exit Short")
// barsNotBelowLower := 0