이 전략의 핵심 아이디어는 트렌드를 식별하기 위해 부린 띠 오스컬레이터 지표를 사용하여 트렌드 변화가 발생했을 때 적시에 개입하는 것입니다. 가격이 부린 띠를 돌파 할 때 더 많이하고, 가격이 부린 띠를 돌파 할 때 공백을 만들고, 트렌드 추적 방식을 사용하여 수익을 얻습니다.
이 전략은 주로 부린띠 진동수 지표에 기반하여 트렌드 방향을 판단한다. 부린띠 진동수의 계산 공식은 다음과 같다.
BBO = (收盘价 - N日移动平均价) / (2 * N日标准差) * 100
그 중 클로즈값은 당일 클로즈값, N일 이동 평균값은 클로즈값의 N일 단순 이동 평균값, N일 표준 차이는 클로즈값의 N일 표준 차이다.
이 전략은 먼저 65일간의 부린띠 진동수를 계산하고, 그 다음 부린띠 진동수의 30일간의 평균선을 계산한다. 부린띠 진동수의 상단에서 그 평균선을 통과할 때, 트렌드가 변하기 시작한다고 생각하고, 더 많이 한다. 부린띠 진동수의 아래에서 그 평균선을 통과할 때, 트렌드가 변하기 시작한다고 생각하고, 공백을 한다.
포지션에 진입한 후, 전략은 모바일 스톱, 고정 스톱 및 모바일 추적 스톱을 사용하여 위험과 수익을 제어한다. 특정 매개 변수는 재검사 결과에 따라 최적화 될 수 있다.
브린 벨트 진동기 지표를 사용하여 트렌드를 판단하십시오. 이 지표는 트렌드 변화에 상대적으로 민감합니다.
이동식 스톱은 트렌드가 다시 변할 때, 적시에 스톱을 할 수 있는 개별적 손실을 제어합니다.
고정 스톱을 사용하여 수익을 고정하면 트렌드 방향이 맞을 때 적시에 판매 할 수 있습니다.
모바일 트래킹 스톱로드 (Mobile Tracking Stop Loss) 를 사용하여 유리한 가격을 추적하여 단일 수익을 극대화 할 수 있습니다.
전략은 단순하고 직관적이며 이해하기 쉽고 실행이 쉽다.
브린 벨트 진동기는 가짜 돌파구가 존재할 가능성이 있으며, 잘못된 신호를 발산할 수 있다.
모바일 스톱 또는 추적 스톱 설정이 부적절하면 조기 스톱 또는 스톱이 발생할 수 있습니다.
고정 스프링 설정이 잘못되면 너무 일찍 스프링을 중지할 수 있으며, 놓친 것이 더 위험하다.
브린 밴드 변수와 이동 평균선 변수는 최적화해야 하며, 그렇지 않으면 과일접합으로 이어질 수 있다.
이 철수에는 상당한 재정적 지원이 필요할 것입니다.
브린 대역변수와 이동평균선 변수를 최적화하여 최적의 변수조합을 찾는다.
ATR 중지, 퍼센트 중지 등과 같은 다양한 이동 중지 방법을 테스트하십시오.
고정 스톱 및 추적 스톱 패러미터를 테스트 및 최적화한다.
다른 필터링 조건을 추가하여 부린띠 진동기가 잘못된 신호를 발산하지 않도록하십시오.
포지션 관리를 최적화하여 다른 시장에 적합한 포지션 규모를 제공합니다.
다양한 품종과 시간 주기에서 이 전략을 사용하는 효과를 테스트한다.
이 전략은 부린띠 진동기 지표를 이용하여 트렌드 방향을 판단하고, 트렌드가 변하기 시작하면 포지션에 들어가며, 이동식 스톱, 고정식 스톱 및 추적식 스톱을 이용하여 위험을 통제하고 수익을 얻는다. 전략은 비교적 단순하고 직관적이며 구현하기 쉽지만, 파라미터를 최적화해야 하며, 가짜 브레이크와 부적절한 스톱을 설정하는 것을 막는다. 이 전략은 최적화가 잘 된다면, 트렌드 상황에서 더 나은 효과를 얻을 수 있다.
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Strategy CCT Bollinger Band Oscillator", shorttitle="Hornkild", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)
length=input(65)
lengthMA=input(30)
src=close
cctbbo=100 * ( src + 2*stdev( src, length) - sma( src, length ) ) / ( 4 * stdev( src, length ) )
//ul=hline(100, color=gray, editable=true)
//ll=hline(0, color=gray)
//hline(50, color=gray)
//fill(ul,ll, color=blue)
//plot(cctbbo, color=blue, linewidth=2)
//plot(ema(cctbbo, lengthMA), color=red)
TP = input(0) * 10
SL = input(0) * 10
TS = input(1) * 10
TO = input(10) * 10
CQ = 100
TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na
longCondition = crossover(cctbbo, ema(cctbbo, lengthMA))
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(cctbbo, ema(cctbbo, lengthMA))
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)