
평행선 교차 전략은 이동평행선을 기반으로 한 거래 전략이다. 그것은 빠른 이동평행선과 느린 이동평행선의 교차를 구매 및 판매 신호로 사용한다. 빠른 평균선이 아래쪽에서 느린 평균선을 뚫을 때 구매 신호를 발생시키고, 빠른 평균선이 위쪽에서 아래쪽에서 느린 평균선을 뚫을 때 판매 신호를 발생시킨다.
이 정책은 sma 함수를 사용하여 지정된 주기의 간단한 이동 평균을 계산하고, 빠른 평균선과 느린 평균선으로 니다. 정책의 기본 빠른 평균선은 18일 주기이며, 파라미터를 통해 조정할 수 있습니다.
빠른 평균선이 아래쪽에서 느린 평균선을 뚫을 때, 크로스 언더 함수를 사용하여 교차 신호를 감지하여 구매 신호를 생성한다. 빠른 평균선이 위쪽에서 느린 평균선을 무너뜨렸을 때, 크로스 오버 함수를 사용하여 교차 신호를 감지하여 판매 신호를 생성한다.
전략은 track 신호와 exit 신호를 통해 자동 거래를 구현한다. 다중 헤드 입장은 빠른 평균선이 아래에서 느린 평균선을 돌파할 때 촉발된다. 빈 헤드 입장은 빠른 평균선이 위에서 느린 평균선을 넘어설 때 촉발된다.
평선 교차 전략은 전체적으로 좀 더 고전적이고 간단한 트렌드 추적 전략이다. 평선 교차를 거래 신호로 주로 사용하며, 원칙은 간단하고 이해하기 쉽고 구현할 수 있으며, 매개 변수를 통해 시장에 적응할 수 있다. 그러나 또한 흔들림과 트렌드 전환의 영향에 취약하고, 시그널링 빈도 등과 같은 몇 가지 단점이 있다. 이러한 문제는 필터링 조건을 추가하고, 매개 변수를 동적으로 조정하고, 손실을 중지하는 등의 방법으로 개선할 수 있다. 이 전략은 광범위한 최적화 공간과 방향을 가지고 있으며, 정량 거래의 기본 전략 중 하나이다.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
MASource = input(defval = open, title = "MA Source")
MaLength = input(defval = 18, title = "MA Period", minval = 1)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)")
window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false
MA = sma(MASource,MaLength)
plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
long = crossunder(MA, close)
short = crossover(MA, close)
if (long)
strategy.entry("LongId", strategy.long, when = long)
strategy.exit("ExitLong", from_entry = "LongId", when = short)
if (short)
strategy.entry("ShortId", strategy.short, when = short)
strategy.exit("ExitShort", from_entry = "ShortId", when = long)
if (UseStopLoss)
strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)