더블 이동 평균 채널 브레이크아웃 SMA 전략


생성 날짜: 2023-10-23 17:08:51 마지막으로 수정됨: 2023-10-23 17:08:51
복사: 0 클릭수: 604
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 이동 평균 채널 브레이크아웃 SMA 전략

이 전략은 통로 돌파 원칙에 기반하고, 평행선 교차를 탈퇴 신호로 사용하며, 선물 및 지수 거래에 적용된다.

전략 원칙

  1. 특정 주기 동안의 최고 가격과 최저 가격을 계산하고 상하 통로를 구축한다.

  2. 가격이 상류 채널을 넘으면 더 많이 하고, 가격이 하류 채널을 넘으면 더 적게 합니다.

  3. 빠른 기간과 느린 기간 두 개의 SMA 평균선을 계산한다.

  4. 더 많이 할 때, 빠른 기간 SMA 상에서 느린 기간 SMA를 뚫고, 평형 다수 포지션; 공백 할 때, 빠른 기간 SMA 아래에서 느린 기간 SMA를 뚫고, 평형 공백 포지션。

우위 분석

  1. 통로와 일선 시스템을 결합하면 수익률을 높일 수 있습니다.

  2. 통로를 판단하여 앵켈을 돌리고, 동선을 판단하여 트렌드를 끝낸다.

  3. 일률적인 필터링은 whipsaw를 방지하고 불필요한 거래를 줄일 수 있습니다.

  4. 통로 범위 파라미터는 다른 주기 및 변동률 시장에 적응할 수 있다.

위험 분석

  1. 통로 범위 설정이 잘못되어서, 실패한 돌파구 또는 더 많은 가짜 돌파구가 발생할 수 있습니다.

  2. 평균선 파라미터가 잘못 설정되어 있기 때문에 조기 또는 너무 늦게 포지션을 종료할 수 있습니다.

  3. 1인당 손실을 방지하기 위해 합리적인 포지션 규모 관리를 고려해야 합니다.

  4. 이 사건으로 인한 피해를 막기 위해 돌파구에 진입하는 것이 효과적일 수 있는지에 주의해야 한다.

최적화 방향

  1. 다양한 매개 변수 아래의 전략 수익률과 승률을 테스트하고, 통로 범위와 평균선 주기를 최적화한다.

  2. 트렌드 지표와 함께 브레이크 신호를 필터링하여 브레이크 성공률을 높여줍니다.

  3. 고정 지분, 마팅거 등과 같은 지위 관리 장치를 추가합니다.

  4. 단독 손실을 통제하기 위해 손해 방지 장치를 추가하십시오.

요약하다

이 전략은 통로를 사용하여 시장의 회전과 핫 포인트를 판단하고, 동선 판단 트렌드 종료, 합리적인 파라미터를 설정하면 강한 시장에서 안정적인 수익을 얻을 수 있습니다. 그러나 휘파람으로 인한 손실을 방지하는 데 필요한 동시에 포지션 및 위험 관리를 최적화하는 것이 매우 중요합니다. 파라미터 조정, 신호 필터링 및 위험 제어 수단의 사용으로 전략의 안정성을 더욱 강화 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:00
period: 1m
basePeriod: 1m
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/
// © anshuanshu333

//@version=4

// strategy("ChBrkOutStrategySMA", overlay=true, initial_capital = 200000)
length = input(title="Length", type=input.integer, minval=1, maxval=1000, defval=7)
     
fastSMA = sma(close,9)
slowSMA = sma(close,21)

upBound = highest(high, length)
downBound = lowest(low, length)

boundLongEntry = ((close >= upBound) or (high >= upBound)) and fastSMA>slowSMA and (close > open)
boundShortEntry =((close <= downBound) or (low <= downBound)) and fastSMA<slowSMA and (close <open)

u=plot(upBound, title = "Upper Bound",color=color.blue, linewidth=1)
l=plot(downBound, title = "Lower Bound",color=color.red, linewidth=1)
plot(fastSMA,title = "Fast SMA", color = color.red, linewidth =2)
plot(slowSMA,title = "Slow SMA" ,color = color.green, linewidth =1)
fill(u,l, transp=95)
plot(avg(upBound,downBound), title = "Avg", color=color.gray,linewidth =1)

     
if (boundLongEntry )
    strategy.entry("LE", long = true)
    
if (boundShortEntry)
    strategy.entry("SE", long = false)
    
SmaLongExit = crossunder(fastSMA,slowSMA)
SmaShortExit = crossover(fastSMA,slowSMA)

    
//Close TRades   
if (strategy.position_size > 0)
    strategy.close(id="LE",when= SmaLongExit)
if (strategy.position_size < 0)
    strategy.close(id="SE",when= SmaShortExit)