볼링거 밴드 오시레이터 기반의 트렌드 다음 전략

저자:차오장, 날짜: 2023-10-10 10:54:05
태그:

전반적인 설명

이 전략의 핵심 아이디어는 볼링거 밴드 오시레이터를 사용하여 트렌드를 식별하고 트렌드가 변할 때 포지션을 입력하는 것입니다. 가격이 상단 범위를 넘어서면 길고 가격이 하단 범위를 넘어서면 짧습니다. 트렌드를 따라 수익에 접근합니다.

전략 논리

이 전략은 주로 볼링거 밴드 오시레이터를 사용하여 트렌드 방향을 결정합니다. BBO의 공식은:

BBO = (Close - N-day Moving Average) / (2 * N-day Standard Deviation) * 100

클로즈가 닫기 가격이고, N-day Moving Average는 클로즈의 N-day 간단한 이동 평균이고, N-day 표준 편차는 클로즈의 N-day 표준 편차입니다.

전략은 먼저 65일 BBO를 계산하고, 그 다음 BBO의 30일 이동 평균을 계산합니다. BBO가 MA를 넘으면 상승 추세를 신호합니다. BBO가 MA를 넘으면 하락 추세를 신호합니다.

포지션을 입력 한 후 전략은 이동 스톱 손실, 고정 취득 및 후속 스톱 손실을 사용하여 위험을 제어하고 이익을 잠금합니다. 매개 변수는 백테스트 결과에 따라 최적화 될 수 있습니다.

장점

  1. BBO는 트렌드 변화에 민감합니다.

  2. 이동 스톱 손실은 트렌드가 역전될 때 개별 손실을 제어합니다.

  3. 일정한 수익률은 트렌드가 맞을 때 수익률을 유지합니다.

  4. 트래일링 스톱 로스는 단일 거래에서 수익을 극대화합니다.

  5. 전략은 간단하고 직관적입니다.

위험성

  1. BBO는 잘못된 신호를 줄 수 있습니다.

  2. 부적절한 스톱 로스/프로피트 취득은 너무 일찍 종료될 수 있습니다.

  3. 고정 취득이익은 너무 일찍 빠져나와 추가 수익을 놓칠 수 있습니다.

  4. 매개 변수는 오프피팅이 필요합니다.

  5. 잠재적으로 많은 수요가 있고 충분한 자본이 필요합니다.

최적화

  1. BBO와 MA 매개 변수를 최적화해

  2. ATR, 비율과 같은 다른 스톱 손실 방법을 테스트합니다.

  3. 고정된 수익을 취하고 후속 스톱 손실을 최적화합니다.

  4. 잘못된 신호를 피하기 위해 필터를 추가합니다.

  5. 다른 시장에 대한 포지션 크기를 최적화하십시오.

  6. 모든 도구와 시간 프레임에 걸쳐 전략의 효과를 테스트합니다.

결론

이 전략은 BBO를 사용하여 트렌드 변화를 식별하고 그에 따라 포지션을 입력합니다. 다양한 유형의 출구로 위험을 제어하고 수익을 잠금합니다. 전략은 간단하고 직관적이지만 매개 변수 최적화가 필요합니다. 올바르게 최적화되면 트렌딩 시장에서 잘 수행 할 수 있지만 잘못된 신호 및 부적절한 출구에 주의해야합니다.


/*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)

더 많은