이동평균선 교차전략은 매우 흔한 양적 거래 전략이다. 이 전략은 이동평균선의 황금 포크를 이용하여 추세를 판단하여 수익을 얻는다. 단기 이동평균선 위에 장기 이동평균선을 횡단할 때 주가가 상승하기 시작하면 더 할 수 있으며, 단기 이동평균선 아래에 장기 이동평균선을 횡단할 때 주가가 하락하기 시작하면 공백을 할 수 있다.
이 전략은 이동하는 평평선에 기초하여 금叉死叉를 사용하여 구매 및 판매 시기를 판단한다. 코드에서 사용한다.upOrDown그리고longOrShort두 개의 부어형 입력 파라미터를 사용하여 과다 공백을 판단합니다.percentInput주가 변화의 절감 비율을 설정하기 위해 매개 변수를 입력합니다.closePositionDays입장을 보유하는 날 수를 설정하기 위해 매개 변수를 입력하십시오.
전략의 핵심 논리는 다음과 같다: 오늘의 수치를 계산하여 어제의 수치를 비교하면, 입력된 수치를 기준으로 계산하면 거래 신호를 발산한다. 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정되면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정하면, 더 많이 하고, 만약 수치를 측정하면, 어제의 수치가 수치를 기준으로 측정하면, 더 많이 하고, 만약 수치를 기준으로 측정하면, 더 많이 하고, 어제의 수치를 기준으로 측정하면, 더 많이 하고, 어제의 수치를 기준으로 측정하면, 더 많이 하고, 오늘의 수치를 기준으로 측정하면, 더 적게 하고, 어제의 수치를 기준으로 측정하면, 더 많이 한다.
더 많은 공백을 한 후, 그림에서 다른 색으로 그날과 그 다음 4 일 ᄂ을 표시합니다. 4 일 후에 자동으로 평점 ᄂ을합니다.
위험 관리 조치:
이동평선교차전략은 매우 간단하고 실용적인 계량 거래전략이다. 그것은 단기 및 장기 동향의 관계를 판단하여 주식 가격의 동향성을 활용하여 이익을 얻는다. 이 전략은 구현하기 쉽고, 논리적으로 명확하며, 많은 계량 거래전략의 기초이다. 변수를 조정하고 최적화함으로써 더 나은 전략 효과를 얻을 수 있다. 그러나 우리는 또한 위험을 통제하고, 그의 생각을 왜곡하여 맹목적으로 사용하는 것을 방지하는 데 주의를 기울여야 한다.
/*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")