
점진평준 거래 전략은 두 개의 다른 변수 설정의 지수 이동 평균 (Exponential Moving Average, EMA) 의 교차 신호를 기반으로 거래하는 전략이다. 그것은 짧은 주기의 EMA 라인과 긴 주기의 EMA 라인을 사용하여 교차 할 때 거래 신호를 발생시키고, 빠른 라인이 느린 라인을 상향으로 통과 할 때 더 많이하고, 아래로 통과 할 때 평소한다. 이 전략은 또한 스톱 손실, 스톱 손실 추적과 같은 위험 관리 방법을 결합하여 수익을 잠금하고 위험을 제어한다.
이 전략의 핵심 지표는 두 개의 EMA 라인: 빠른 라인과 느린 라인이다. 빠른 라인 파라미터는 13 일선으로 기본 설정되어 가격 변화에 더 민감하게 반응한다. 느린 라인 파라미터는 48 일선으로 기본 설정되어 가격 변화에 더 느리게 반응한다. 짧은 라인이 빠르게 올라갈 때, 빠른 라인이 느린 라인보다 먼저 올라간다. 짧은 라인이 내려갈 때, 빠른 라인이 느린 라인보다 더 빨리 내려간다. 따라서 빠른 라인이 상향으로 느린 라인을 돌파하는 것은 긴 라인 상향 신호이며, 빠른 라인이 아래로 느린 라인을 돌파하는 것은 긴 라인 하향 신호이다.
이 원칙에 따라, 이 전략은 빠른 선이 아래에서 위로 느린 선을 돌파할 때 더 많이 하고, 가격이 상승하기 시작하면 구매할 수 있다; 빠른 선이 위에서 아래로 느린 선을 돌파할 때 평소하고, 상승 추세가 끝났다는 것을 표시하고, 적절한 시간에 멈춰야 한다. 위험을 제어하기 위해, 전략은 초기 중지 손실과 추적 중지 손실을 설정했다: 초기 중지 손실은 입시 가격의 8%이며, 추적 중지 손실은 120점을 암시한다. 이것은 가격이 역전될 때 가능한 빨리 중지하여 손실을 줄일 수 있다.
코드 구현에서, 이 전략은 크로스오버와 크로스언더 두 함수를 통해 EMA 교차 신호를 판단하고, 교차가 발생했을 때 대응하는 엔트리와 클로즈를 촉발하여 평화 포지션을 구매한다.
점진적 평행 거래 전략은 다음과 같은 장점이 있습니다.
전략적 신호는 간단하고 명확하며, 이해하기 쉽고, 학습을 시작하는 초보자에게 적합합니다.
평균 지표는 시장의 소음에 대한 좋은 필리핀 효과로, 동향의 변화를 발견할 수 있습니다.
구성성이 강하고, 빠른 속도 선 변수, 정지점 비트도 사용자 정의 할 수 있습니다.
“피해 방지 수단과 함께 위험을 효과적으로 통제할 수 있습니다”.
안정성이 있습니다.
이 전략에는 위험도 있습니다.
시장이 급격히 변동할 때, EMA 교차 신호는 늦어질 수 있으며, 가격 변화를 적시에 반영할 수 없습니다.
너무 빠른 속도로 평행선 지표 변수를 조정하면 더 많은 잘못된 신호가 발생할 수 있습니다.
동향이 약할 때, EMA 교차도 적어 가격 동향을 효과적으로 잡을 수 없다.
전략 자체는 큰 차원의 추세 분석을 고려하지 않으며, 시장의 전체 추세가 불명확할 때, 큰 추세에서 벗어나는 거래가 발생하기 쉽다.
위와 같은 위험은 다음과 같은 방법으로 완화될 수 있습니다.
다른 지표와 결합하여 MACD, KD 등과 같은 평행선 교차 신호를 확인합니다.
다른 시장에 따라 EMA 매개 변수를 조정하여 잘못된 신호율을 줄이십시오.
트렌드 판단 모듈을 추가하여, 장기 평균선을 참고하여 전반적인 시장의 방향을 판단한다.
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
포지션 개시 조건 필터링을 추가하여 불안정한 상황에서 불필요한 거래가 발생하지 않도록하십시오. 포지션 개시 값은 변동률, 거래량과 같은 지표와 결합하여 설정할 수 있습니다.
시장의 높고 낮은 지점, 지지율 등과 결합하여 손해 차단 위치를 설정하여 손해 차단의 정확성을 향상시킵니다.
트렌드 판단 모듈을 추가하여 더 높은 시간 프레임의 장기 트렌드를 사용하여 단기 신호를 필터링하여 큰 트렌드로부터 벗어나는 것을 피합니다.
기계 학습을 통해 EMA 매개 변수를 훈련하고 최적화하여 실제 시장 상황에 더 적합하게 만들고 잘못된 신호 비율을 줄일 수 있습니다.
이러한 점들은 이 전략이 앞으로 개선되고 최적화될 수 있는 주요 방향이다. 더 많은 지표와 위험 관리 수단과 적절히 결합되면 이 EMA 교차 전략의 효과가 더 좋아질 것이다.
점진적 평행선 거래 전략은 기본 추세에 따른 전략이다. 그것은 가격 추세를 판단하기 위해 EMA 단선과 느린 선의 교차를 사용하며, 손해 방지 수단과 결합하여 위험을 제어한다. 이 전략의 신호는 간단하고 명확하며 사용하기 쉬우며, 특히 초보자 학습에 적합하며, 양적 입문의 전형적인 전략 중 하나입니다. 그러나 그것은 또한 약간의 지연과 잘못된 보고의 위험이 있습니다.
/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// *** USE AT YOUR OWN RISK ***
//
strategy("EMA Strategy", shorttitle = "EMA Strategy", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)
// === Inputs ===
// short ma
maFastSource = input(defval = close, title = "Fast MA Source")
maFastLength = input(defval = 13, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource = input(defval = close, title = "Slow MA Source")
maSlowLength = input(defval = 48, title = "Slow MA Period", minval = 1)
// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop = input(defval = true, title = "Use Initial Stop Loss?")
slPoints = input(defval = 25, title = "Initial Stop Loss Points", minval = 1)
useTS = input(defval = true, title = "Use Trailing Stop?")
tslPoints = input(defval = 120, title = "Trail Points", minval = 1)
useTSO = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset = input(defval = 20, title = "Trail Offset Points", minval = 1)
// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)
plot(fastMA, color=blue)
plot(slowMA, color=purple)
goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())
// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())
if (useStop)
strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.08)