
이 전략은 브린띠 지표에 기반하여 역사적 시간 범위를 선택할 수 있는 동적 브린띠 거래 전략을 구현한다. 이 전략은 사용자가 회측의 시작과 종료 시간을 선택할 수 있도록 하여, 다른 시간 범위에 대한 동적 브린띠 전략 회측과 비교를 구현한다.
이 정책의 이름은 동적 부린 대역 시간대 선택 정책 . 이 이름은 동적 부린 대역 과 시간대 선택 두 개의 키워드를 포함하고 있으며, 이 정책의 주요 기능을 정확하게 요약한다.
이 전략의 핵심 원칙은 부린 띠 지표의 동적 상하 궤도를 기반으로 거래 신호를 생성하는 것이다. 부린 띠 중도 궤도는 n일 간소 이동 평균이며, 상하 궤도와 하하 궤도는 각각 중도 궤도 라인을 더하고 빼는 m배의 n일 표준 차이다. 가격이 하하 궤도를 통과하면 다중 입장이 이루어지며, 가격이 상하 궤도를 넘어지면 공허 입장이 이루어진다.
이 정책의 또 다른 핵심 기능은 정책의 재검토 시간 범위를 선택할 수 있도록 하는 것이다. 정책은 월, 일, 년, 시간, 분 등 여러 차원의 재검토 시작 및 종료 시간을 선택할 수 있는 입력 파라미터를 제공한다. 이것은 사용자가 다른 역사적 시간대를 선택하여 전략의 효과를 재검토하고 검증할 수 있도록 하여 보다 포괄적이고 동적인 전략 분석을 가능하게 한다.
구체적으로, 이 정책은 timestamp () 함수를 통해 선택된 시작 및 종료 시간을 타임 포맷으로 변환하고, time>=start 및 time<=finish의 조건으로 정책의 유효한 재검토 시간 창을 설정한다. 이렇게 하면 동적인 시간 범위 선택 기능이 구현된다.
이 전략의 가장 큰 장점은 동적 브린밴드 전략과 임의의 시간 범위 선택의 완벽한 결합을 구현한다는 것입니다. 이것은 사용자가 더 유연하고 전체적으로 재검토하고 전략을 검증 할 수 있도록합니다. 구체적인 장점은 다음과 같습니다:
동적 브린 벨트 전략을 구현하여, 시장이 하락할 때 트렌드 반전 신호를 잡을 수 있으며, 트렌드 트레이딩에 적합하다.
선택된 임의의 역사적 시간 범위를 지원하여 다양한 시장 환경에서 전략의 성과를 분석하고 전략의 동적 최적화를 구현할 수 있습니다.
브린 벨트 지표의 자기 적응성을 결합하여, 이 전략은 보다 광범위한 시장 환경의 변화에 따라 변수를 자동으로 조정할 수 있다.
장기 및 단기 매개 변수를 조정할 수 있는 기능이 제공되며, 사용자는 자신의 필요에 따라 매개 변수를 최적화하여 실제 상황에 맞게 전략을 더 잘 맞출 수 있다.
특정 시간 및 분을 선택하여 재검토할 수 있으며, 더 높은 정확도로 더 세밀한 전략 분석이 가능합니다.
중국어와 영어를 지원하며, 사용자 경험도 좋았습니다.
이 전략의 주요 위험은 부린띠 지표의 추세 반전의 불확실성이다. 구체적인 위험점은 다음과 같다:
브린띠 지표는 시장의 변동에 대한 판단이 완벽하지 않아 잘못된 신호가 발생할 수 있습니다.
부린밴드 변수를 잘못 선택하면 전략이 제대로 작동하지 않고 손실을 초래할 수 있다.
특수한 시장 환경에서 지표가 유효하지 않을 가능성.
하지만, 이 경우, 시장의 중요한 요소를 무시할 수 있습니다.
이러한 위험은 다음과 같은 방법으로 통제되고 개선될 수 있습니다.
브린 벨트 파라미터를 최적화하고, 중궤도선 주기를 조정하여 다른 품종과 시기를 적응한다.
이동 평균선과 같은 다른 지표와 결합하여 확인하고, 잘못된 신호를 줄인다.
더 많은 시장을 테스트하고 전략의 안정성을 평가하는 것.
스톱로스를 설정하고 단편적 손실을 통제합니다.
이 전략에는 다음과 같은 몇 가지 주요 개선방향이 있습니다.
기계 학습 알고리즘과 결합하여, 브린 대역 변수의 동적 최적화를 구현한다.
빗방침 재검토와 같은 기능을 추가하여 파라미터 설정의 안정성을 종합적으로 평가한다.
모바일 스톱, 트래킹 스톱 등의 기능을 추가하여 수익을 고정하고 위험을 줄일 수 있습니다.
입시 논리를 최적화하여 거래량 급증 확인과 같은 더 많은 조건을 설정합니다.
주식 지수 선물 중매 등 전략과 결합하여 전략의 적용 범위를 넓히기 위해.
자동으로 거래하는 기능을 추가하고, 피드백에서 실판으로의 전환을 최적화한다.
이러한 최적화는 전략의 실전 효과와 안정적인 수익성을 크게 향상시킬 수 있다.
이 전략은 브린 밴드 전략과 임의의 역사 시간 범위 선택의 유기적인 결합을 성공적으로 구현한다. 이 고도로 유연하고 동적인 회귀 분석 기능은 사용자가 다양한 시장 환경에서 전략 매개 변수를 포괄적이고 정확하게 조정하고 최적화 할 수있게합니다. 동시에 제공되는 시각적 동작은 사용자 경험을 크게 향상시킵니다.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("BB Range", shorttitle = "BB Range", overlay=true, max_bars_back=200)
// Revision: 1
// Author: @allanster
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 20, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
FromHour = input(defval = 17, title = "From Hour", minval = 00)
FromMinute = input(defval = 00, title = "From Minute", minval = 00)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
ToHour = input(defval = 23, title = "To Hour", minval = 00)
ToMinute = input(defval = 59, title = "To Minute", minval = 00)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, FromHour, FromMinute) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, ToHour, ToMinute) // backtest finish window
window() => true
source = close
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
upper_stop = upper * 1.05
lower_stop = lower * 0.95
buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)
if (crossover(source, lower))
strategy.entry("BBandLE", strategy.long, stop=lower_stop, when = window(), oca_name="BollingerBands", comment="BBandLE")
else
strategy.cancel(id="BBandLE")
if (crossunder(source, upper))
strategy.entry("BBandSE", strategy.short, stop=upper_stop, when=window(), oca_name="BollingerBands",comment="BBandSE")
else
strategy.cancel(id="BBandSE")