
쌍평평선 크로스 쇼트 라인 전략은 간단하고 효율적인 쇼트 라인 거래 전략이다. 이 전략은 가격과 이동 평균의 교차 신호를 구매 판매 신호로 사용하여 쇼트 라인 내에서 가격의 추세적 변동을 포착한다.
쌍평선 교차 전략은 두 개의 다른 주기의 이동 평균을 사용하여, 한 가지 더 짧은 MA 라인과 한 가지 더 긴 MA 라인을 사용합니다. 단기 MA 라인이 아래쪽에서 긴 MA 라인을 돌파 할 때 구매 신호를 생성합니다. 단기 MA 라인이 위쪽에서 아래쪽으로 내려가 긴 MA 라인을 돌파 할 때 판매 신호를 생성합니다.
이 전략은 먼저 변수length를 정의하고 긴 주기 MA의 길이를 50로 지정하고, 그 다음에는 price를 종점 가격으로 정의하고, length의 MA 선값을 계산하고, ma 변수에 저장한다. 그 다음 bcond을 정의하고, price가 ma 값보다 높는지 판단하고, 만약 그렇다면 bcount를 더하고, 그렇지 않으면 0으로 되돌린다. bcond이 연속적으로 confirmBars를 () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()
일부 무효 신호를 필터링하기 위해, 전략은 세 가지 필터링 조건을 추가한다. clc, clc0 및 clc1. 이 세 가지 조건은 현재 주기와 이전 주기의 종결 가격 크기의 관계를 판단하며, 현재 주기 종결 가격과 개시 가격 크기의 관계를 판단하며, 동시에 충족되면 신호를 생성하는 것을 허용한다.
마지막으로, 가격이 다시 하락하거나 다시 하락했을 때, 각각 상위 포지션이나 빈 포지션의 상위 포지션을 청산하십시오.
위험을 줄이기 위해, 시장의 변동율에 따라 평균 변수를 조정하는 것을 고려할 수 있습니다. 또한, 유동적 인 중지 손실 또는 비율 중지 손실을 적용하여 중지 포인트를 유연하게 조정할 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
시장의 변동율과 같은 지표에 따라 평균선 길이를 동적으로 조정하는 등 평균선 시스템 매개 변수를 최적화한다.
추가 필터링 조건을 추가하여 신호 품질을 향상시킵니다.
플로잉 스톱 또는 퍼센티지 스톱과 같은 손실을 막는 전략을 최적화하여 조기 손실을 막는 가능성을 줄이십시오.
MACD, RSI 등의 다른 지표와 결합하여 다중 인자 검증을 수행하여 신호의 유효성을 향상시킵니다.
자동화 된 위험 관리 전략을 추가하십시오. 예를 들어, 포지션 크기를 동적으로 조정하고 단편 손실을 제어하십시오.
구매 및 판매 신호에 대한 기계 학습 방법을 추가하여 더 정확한 신호 판단 모델을 구축합니다.
쌍평선 교차 단선 전략은 전체적으로 매우 실용적인 단선 거래 전략으로, 작동이 간단하고 구현하기 쉬운 장점이 있다. 그러나 흔들리는 시장의 가짜 신호를 제어하는 것에 주의를 기울이고, 동적 매개 변수 최적화 등의 개선을 수행하는 것이 전략의 최대 효과를 발휘하기 위해 필요하다. 스톱저스 관리 및 위험 제어 수단과 결합하면 전략의 안정성을 더욱 높일 수 있다.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close
ma = sma(price, length)
bcond = price > ma
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]
if clc and clc0 and clc1 and (bcount == confirmBars)
strategy.entry("buy", strategy.long)
scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]
if csc and csc0 and csc1 and (scount == confirmBars)
strategy.entry("sell", strategy.short)
strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)