이동평균선 더블트랙 불-베어 전략


생성 날짜: 2023-11-06 16:25:01 마지막으로 수정됨: 2023-11-06 16:25:01
복사: 1 클릭수: 646
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균선 더블트랙 불-베어 전략

개요

이 전략은 분쇄된 이동 평균을 주요 기술 지표로 사용하고, 부린 띠 쌍레일과 결합하여 시장 추세를 식별하는 브레이커 전략을 구현한다. 가격이 부린 띠를 돌파 할 때 낮게 보고, 가격이 부린 띠를 돌파 할 때 더 많이 보고, 인기있는 쌍레일 돌파 시스템이다.

전략 원칙

  1. 조각 이동 평균을 계산하기 (CBMA): 적응된 EMA 평평한 조각 이동 평균을 사용하여 가격 변화를 효과적으로 추적할 수 있다.

  2. 브린 띠 파라미터를 설정: 중도 궤도로 파편 이동 평균을 선택하고, 상하 궤도는 표준 비등 stomach 배수 설정을 채택하고, 시장에 따라 조정할 수 있다.

  3. 브레이크 거래: 가격이 상위 궤도를 깨면 상향을 보며, 하위 궤도를 깨면 더 많이 보며, 트렌드 추적 브레이커 전략을 사용합니다.

  4. Cancel Lightning 주문 모드를 사용하여 한 번에 한방향 거래만 할 수 있습니다.

  5. 고정 거래량을 설정하고, 자금에 따라 조정할 수 있습니다.

우위 분석

  1. 파편의 이동 평균은 평평한 성질을 가지고 있으며, 가격을 효과적으로 추적할 수 있다.

  2. EMA 알고리즘에 적응하여 이동 평균의 실시간성을 최적화한다.

  3. 브린은 선로를 타고 내려가며 돌파구 방향 신호를 명확히 했다.

  4. 트렌드 트래킹 모드를 사용해서 위프사우를 피하세요.

  5. 일회성 손실을 제어하는 고정 거래량

위험 분석

  1. 브린 벨트 파라미터 설정은 최적화가 필요하며, 너무 크고 너무 작다는 문제가 있다.

  2. 파격 신호는 가짜 파격이 발생할 수 있다.

  3. 손실을 통제하기 위해 스톱로스를 설정해야 합니다.

  4. 고정 거래량은 시장에 따라 포지션을 조정할 수 없습니다.

  5. 하지만, 이 거래는 단방향 거래로만 이루어질 수 없습니다.

최적화 방향

  1. 동적으로 브린을 최적화하여 시장 상황에 더 적합하게 만듭니다.

  2. 더 많은 지표가 추가되어 가짜 돌파를 방지할 수 있습니다.

  3. 이윤을 고정하기 위해 트래킹 스톱로스에 가입하십시오.

  4. 더 많은 적폐화와 동시에 더 큰 수익을 창출하는 헤지 거래.

  5. 포지션 관리 시스템에 가입하세요.

요약하다

이 전략은 브레이커 트렌드 추적 전략으로, 적응형 이동 평균 기술 지표를 사용하여, 브린 띠 쌍 트랙과 결합하여 명확한 돌파 신호를 설정한다. 전략은 간단하고 쉽게 작동, 고정 거래량은 위험을 제어 할 수 있으며, 특정 실적 가치를 가지고 있다. 그러나 가짜 돌파 및 변수 최적화 등과 같은 몇 가지 문제가 있습니다.

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

//@version=4
strategy(title="CBMA Bollinger Bands Strategy directed [ChuckBanger]", shorttitle="CBMA BB CB", 
   overlay=true )


length = input(title="Length", type=input.integer, defval=12, minval=1)
regular = input(title="Regular BB Or CBMA?", type=input.bool, defval=false)
src = input(title="Source", type=input.source, defval=close)
mult = input(title="Multipler", type=input.float, defval=2.3, minval=.001, maxval=50, step=.1)
emaLen = input(title="EMA Length", type=input.integer, defval=11, minval=1)
emaGL = input(title="EMA Gain Limit", type=input.integer, defval=50, minval=1)
highlight = input(title="Highlight On/Off", type=input.bool, defval=true)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

//strategy.risk.max_drawdown(50, strategy.percent_of_equity)

calc_hma(src, length) =>
    hullma = wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
    hullma

calc_cbma(price, length, emaLength, emaGainLimit) =>
    alpha = 2 / (emaLength + 1)
    ema = ema(price, emaLength)
    int leastError = 1000000
    
    float ec = 0
    float bestGain = 0
    
    for i = emaGainLimit to emaGainLimit
        gain = i / 10
        ec := alpha * ( ema + gain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
        error = price - ec
        if (abs(error) < leastError)
            leastError = abs(error)
            bestGain = gain
    
    ec := alpha * ( ema + bestGain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
    hull = calc_hma(price, length)
    
    cbma = (ec + hull) / 2
    cbma

cbma = calc_cbma(src, length, emaLen, emaGL)
basis = regular ? sma(src, length) : cbma
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
cbmaColor = fixnan(highlight and not regular ? cbma > high ? color.purple : cbma < low ? color.aqua : na : color.red)
plot(basis, color=cbmaColor)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

if (crossover(src, lower))
    strategy.entry("CBMA_BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="CBMA_BBandLE")
else
    strategy.cancel(id="CBMA_BBandLE")

if (crossunder(src, upper))
    strategy.entry("CBMA_BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="CBMA_BBandSE")
else
    strategy.cancel(id="CBMA_BBandSE")