이 전략은 볼링거 밴드 지표에 기반하여 볼링거 밴드 반전 및 추진력 브레이크오웃의 조합 거래 전략을 구현하기 위해 모멘텀 지표와 결합되어 있습니다. 가격이 아래에서 볼링거 밴드의 중간선을 통과 할 때 길게 가고 가격이 위에서 중간선을 통과 할 때 짧게됩니다. 또한 목표 위험 보상 비율이 충족되면 입상 가격에 기반한 스톱 로스를 추적하고 수익을 취합니다.
이 전략은 이동 평균 지표로 볼링거 밴드 중간 라인 sma를 사용하며, 패람 멀트*스트데브를 통해 밴드 폭을 동적으로 조정합니다. 가격이 아래에서 중간 라인을 통과할 때, 상승 동력이 얻어진다는 것을 나타냅니다. 가격이 위에서 중간 라인을 통과 할 때, 하락 동력이 얻어진다는 것을 나타냅니다. 긴 / 짧은 포지션을 입력한 후, 수익을 추적하고 위험을 제어하기 위해 스톱 로스 및 영업 매개 변수를 설정합니다.
구체적으로 볼링거 밴드는 길이와 멀트라는 두 가지 매개 변수로 계산됩니다. 길이는 중간 라인의 기간을 결정하고 멀트는 밴드 폭을 결정합니다. enterLong 및 enterShort는 브레이크오웃 타이밍을 판단합니다. exitLong 및 exitShort는 엔트리 가격과 목표 비율을 기반으로 스톱 로스를 계산하고 수익 가격을 취합니다.
이 전략은 평균과 추진력에 대한 회귀를 결합하여 주요 트렌드를 일찍 파악 할 수 있습니다. 단순히 이동 평균을 추적하는 것과 비교하면 볼링거 밴드 폭에 기반한 추가 추진량 판단은 일부 잘못된 브레이크를 필터링 할 수 있습니다. 손수 개입없이 엔트리 가격에 따라 직접 중지 손실 및 수익을 설정합니다.
기간, 대역 너비 및 스톱 손실 범위와 같은 매개 변수는 전략을 다른 시장 조건에 적응 할 수 있도록 최적화 할 수 있습니다.
이 전략은 볼링거 밴드 역전과 추진력의 장점을 결합하여 초기부터 일부 트렌드를 파악할 수 있습니다. 매개 변수 조정을 통해 다른 시장 단계에 적응 할 수 있습니다. 직접적인 스톱 로스 / 토프 노프프 계산은 수동 개입을 줄여줍니다. 더 많은 보조 지표를 통합하여 개선 할 여지가 있습니다. 추가 연구 및 최적화에서 점차 향상 될 것입니다.
/*backtest start: 2023-11-13 00:00:00 end: 2023-11-20 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BURATINO", overlay=true) // Входные параметры length = input(20, minval=1, title="Length") mult = input(2.0, minval=0.1, maxval=5, title="Multiplier") target_percent = input(0.5, minval=0.1, title="Target Percent") stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent") // Расчет полос Боллинджера basis = sma(close, length) dev = mult * stdev(close, length) upper = basis + dev lower = basis - dev // Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга enterLong = cross(close, basis) and close[1] < basis[1] // Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта enterShort = cross(basis, close) and close[1] > basis[1] // Закрытие лонга после роста цены на указанный процент или падения на указанный процент exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100)) // Закрытие шорта после падения цены на указанный процент или роста на указанный процент exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100)) // Управление позициями и ограничениями на открытие противоположных позиций strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0) strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0) strategy.close("Long", when = exitLong) strategy.close("Short", when = exitShort) // Визуализация полос Боллинджера plot(basis, color=color.blue, title="Basis") plot(upper, color=color.red, title="Upper") plot(lower, color=color.green, title="Lower")