고급 볼린저 밴드 이동 평균 그리드 추세 추종 전략


생성 날짜: 2023-11-24 14:48:28 마지막으로 수정됨: 2023-11-24 14:48:28
복사: 0 클릭수: 951
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

고급 볼린저 밴드 이동 평균 그리드 추세 추종 전략

개요

이 전략은 高级布林带均线网格趋势追踪策略이라고 한다. 이것은 高级布林带均线网格趋势追踪策略이다. 이것은 高级布林带均线网格趋势追踪策略이다. 이것은 高级布林带均线网格趋势追踪策略이다. 이것은 高级布林带均线网格趋势追踪策略이다.

전략 원칙

이 전략의 핵심은 다음과 같습니다.

  1. 브린 띠를 사용하여 현재 시장의 변동 범위를 판단하십시오. 브린 띠의 중간 궤도는 n 일 간 간단한 이동 평균이며, 띠의 폭은 n 일 ATR 평균입니다.

  2. 브린 벨트 바깥쪽의 네 줄은 모두 이산수 평균 실제 변동폭의 선이다. 전략은 다른 레벨의 선을 돌파할 때 입지를 구축한다.

  3. EMA는 서서히 평균선이 대주기 트렌드 방향을 판단한다. 대주기 다머리가 있을 때만 다머리를 하고, 공허머리는 반대로 한다.

  4. 트렌드 방향에 따라 입장을 세우고, 바늘 모양의 K 라인이 나타나면 입장을 정지한다.

특히, 이 전략은 다음과 같은 부분들로 구성되어 있습니다.

  1. 브린 대역 변수를 정의하고, 브린 중선은 n일 SMA 평균선이며, 브린 대역폭은 n일 ATR。 전략에서 브린 길이는 n이 20。

  2. 4개의 부린 외 확장 라인을 설정하여, 라인 상에서 중궤도 거리가 각각 1.236배, 2.382배, 3.618배 및 4.236배의 평균 실제 진동폭을 갖는다.

  3. 빠른 줄의 길이는 25일이고, 느린 줄의 길이는 200일이다.

  4. 대주기 다단일 때, 가격이 아래의 4개 평행선을 돌파할 때 다단위 보유를 단계적으로 구축한다.

  5. 바늘 모양의 K선 또는 가격이 대주기 평균선을 다시 넘을 때, 바늘 모양의 종료 신호로 간주하고, 평점 상장을 중지한다.

이 전략의 주요 기술 원칙은 다음과 같습니다. 브린 띠를 통해 현재 변동 범위를 판단하고, 큰 주기적 추세 아래 포지션을 구축하는 것을 추적하고, 결국 고 확률 포지션 보유의 효과를 얻습니다.

전략적 강점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 트렌드 특성을 최대한 활용하고, 대주기를 통해 트렌드 방향을 판단하고, 트렌드 방향으로 포지션을 구축하면 불필요한 역작업을 줄일 수 있다.

  2. 다단계 브린 라인을 사용하면 현재 변동 영역을 더 명확하게 판단할 수 있으며, 대부분의 상황을 파악하는 데 도움이 됩니다.

  3. 격자 포지션 방식은 각 자본 단위마다 위험을 균등하게 분배하여 안정적인 수익을 얻을 수 있습니다.

  4. 바늘 모양의 K선으로 효율적인 신호 평축을 이용하여 빠르게 정지할 수 있다.

  5. 전략은 전체적으로 트렌드 판단, 그리드 포지션, 특정 신호 평점 삼위일체를 구현하며, 비교적 성숙한 완전한 양적 전략이다.

전략적 위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 대주기 트렌드 판단 오류의 확률. 급속한 평균선에는 오류의 확률이 있으며, 불필요한 역작업을 초래할 수 있다.

  2. 브린 라인을 뚫고 실패할 확률. 브린 라인은 가격 경로를 100% 예측할 수 없다.

  3. 바늘 모양의 K선 신호는 늦게 발신되어 제 시간에 멈출 수 없다.

  4. 대주기적 흔들림 조정에서 과도한 중복 보유가 형성될 수 있다.

대응방법은 다음과 같습니다.

  1. 평균선 변수를 천천히 조정하여 오류 확률을 줄여줍니다.

  2. 브린 라인 변수를 조정하여 브린 라인이 대부분의 변동에 최대한 가깝게 조정합니다.

  3. 더 민감한 특정 모형의 정지 신호를 테스트한다.

  4. “이런 일이 벌어진다면, 우리는 더 많은 돈을 벌게 될 것입니다”.

전략 최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 다양한 평균선 변수를 테스트하여 대주기 트렌드 판단을 최적화한다. 예를 들어 EMA, RSI 등의 다른 지표를 테스트한다.

  2. 다양한 배수 ATR 파라미터를 테스트하여 부린 통로 폭 설정을 최적화한다. 부린 대역을 실제 진동에 더 가깝게 만든다.

  3. 다른 고효율 정지 신호를 테스트한다. SAR, 칼만 평평선 등이다.

  4. 격자 간격을 최적화한다. 격자 간격은 격자 간격과 격자 간격의 차이를 개선한다. 격자 간격은 격자 간격과 격자 간격의 차이를 개선한다. 격자 간격은 격자 간격과 격자 간격의 차이를 개선한다.

  5. “이번 대안으로, 우리는 극한 상황에서 큰 손실을 방지하기 위해 ‘피해 방지’ 제도를 강화할 수 있습니다.

요약하다

이 전략은 브린 밴드 통로, 평선 지표, 특정 K 선 형태 등의 기술적인 수단을 종합적으로 사용한다. 대주기 트렌드를 판단하는 전제 하에, 트렌드 추적형의 평선 브린 네트워크 전략이 구성된다. 전통적인 브린 밴드 돌파와 비교하여, 이 전략은 트렌드 특징 판단을 추가하여 불필요한 역전 포지션을 줄일 수 있으며, 동시에 격자 포지션 방식은 각 단위 자금 위험을 분산시켜 안정적인 수익을 얻을 수 있다. 이 전략은 트렌드 판단, 브린 폭, 스톱 신호, 스로프 방식 등 여러 측면에서 최적화되어 보다 안정적인 전략 효과를 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 plot

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy1)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend 
buy3=ta.crossunder(close,bott3) and longTrend 
buy4=ta.crossunder(close,bott4) and longTrend 
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")