크로스오버 브레이크아웃 전략


생성 날짜: 2023-10-12 16:47:55 마지막으로 수정됨: 2023-10-12 16:47:55
복사: 0 클릭수: 584
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이동평균선 교차전략은 매우 흔한 양적 거래 전략이다. 이 전략은 이동평균선의 황금 포크를 이용하여 추세를 판단하여 수익을 얻는다. 단기 이동평균선 위에 장기 이동평균선을 횡단할 때 주가가 상승하기 시작하면 더 할 수 있으며, 단기 이동평균선 아래에 장기 이동평균선을 횡단할 때 주가가 하락하기 시작하면 공백을 할 수 있다.

전략 원칙

이 전략은 이동하는 평평선에 기초하여 금叉死叉를 사용하여 구매 및 판매 시기를 판단한다. 코드에서 사용한다.upOrDown그리고longOrShort두 개의 부어형 입력 파라미터를 사용하여 과다 공백을 판단합니다.percentInput주가 변화의 절감 비율을 설정하기 위해 매개 변수를 입력합니다.closePositionDays입장을 보유하는 날 수를 설정하기 위해 매개 변수를 입력하십시오.

전략의 핵심 논리는 다음과 같다: 오늘의 수치를 계산하여 어제의 수치를 비교하면, 입력된 수치를 기준으로 계산하면 거래 신호를 발산한다. 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정하면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정하면, 더 많이 하고, 만약 수치를 기준으로 측정하면, 더 많이 하고, 어제의 수치를 기준으로 측정하면, 더 많이 하고, 어제의 수치를 기준으로 측정하면, 더 많이 하고, 오늘의 수치를 기준으로 측정하면, 더 적게 하고, 어제의 수치를 기준으로 측정하면, 더 많이 한다.

더 많은 공백을 한 후, 그림에서 다른 색으로 그날과 그 다음 4 일 ᄂ을 표시합니다. 4 일 후에 자동으로 평점 ᄂ을합니다.

전략적 이점

  • 이동식 평행금 톱니를 사용하여 시장 추세를 판단하는 것은 입증된 신뢰할 수 있는 방법입니다.
  • 전략의 논리는 간단하고 명확하며, 구현을 이해하기 쉽습니다.
  • 매개 변수를 조정하여 정책의 빈도를 조절할 수 있습니다.
  • 자동 손실 제도는 위험을 효과적으로 통제할 수 있습니다.

전략적 위험

  • 이동평균은 지연성이 있어 급격한 가격변동의 시점을 놓칠 수 있다.
  • 주가격이 급격하게 변할 수 있어 불필요한 교차 신호가 발생할 수 있다.
  • ParameterSet 변수 설정이 잘못되면 정책 효과도 영향을 받을 수 있습니다.
  • 비상사태의 영향에 대한 효율적인 대응이 불가능하다.

위험 관리 조치:

  1. 이동 평균 변수를 최적화하고 적절한 연장 주기를 사용하여 소음을 필터링합니다.
  2. 주가 변동 감소율을 높여 불필요한 거래를 줄여라
  3. 단기 손실을 제어하기 위해 다양한 수를 테스트합니다.
  4. 다른 지표와 함께 추세 신호를 추가로 확인합니다.

전략 최적화 방향

  • 이동 평균을 EMA, DMA 등 지수 이동 평균으로 바꾸어 가격 변화에 더 민감하게 만들 수 있습니다.
  • 평균선을 돌파하는 경우와 같은 즉각적인 손실을 막는 장치를 추가합니다.
  • 다른 기술 지표를 추가하여 MACD, KDJ 등과 결합하여 전략 승률을 높여줍니다.
  • 기계학습을 시도하여 자동으로 최적화 가능한 매개 변수
  • 브레이커웃 엔트리 (breakout entrada) 와 같은 입력 및 종료 시기를 최적화합니다.

요약하다

이동평선교차전략은 매우 간단하고 실용적인 계량 거래전략이다. 그것은 단기 및 장기 동향의 관계를 판단하여 주식 가격의 동향성을 활용하여 이익을 얻는다. 이 전략은 구현하기 쉽고, 논리적으로 명확하며, 많은 계량 거래전략의 기초이다. 변수를 조정하고 최적화함으로써 더 나은 전략 효과를 얻을 수 있다. 그러나 우리는 또한 위험을 통제하고, 그의 생각을 왜곡하여 맹목적으로 사용하는 것을 방지하는 데 주의를 기울여야 한다.

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

//@version=3
//  Created by Leon Ross

strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)
  
//Inputs
longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false
upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day
percentInput = input(title="Percent", type=float, defval=4.5)
closePositionDays = input(title="How Many Days to Close Position", defval=4)

//Conditions
//percentUpValue = (close / close[1]) - 1
//percentUp = percentUpValue >= (percentInput/100.0)
//upConditions = percentUp
//percentDownValue = 1- (close / close[1])
//percentDown = percentDownValue >= (percentInput/100.0)
//downConditions = percentDown
upValue = (close / close[1]) - 1
downValue = 1 - (close / close[1])
allConditions = if(upOrDown)
    upValue >= (percentInput/100.0)
else
    downValue >= (percentInput/100.0)
    
//Plots
bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70)
bgcolor(allConditions ? silver : na, transp=70, offset=1)
bgcolor(allConditions ? silver : na, transp=70, offset=2)
bgcolor(allConditions ? silver : na, transp=70, offset=3)
bgcolor(allConditions ? silver : na, transp=70, offset=4)
//bgcolor(downConditions == 1 ? red : na, transp=70)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4)

//Entires
if(longOrShort)
    strategy.entry(id = "Long", long = true, when = allConditions) 
else
    strategy.entry(id = "Short", long = false, when = allConditions)

//Exits
if (barssince(allConditions) == closePositionDays)
    if(longOrShort)
        strategy.close("Long")
    else
        strategy.close("Short")