
이 전략은 듀얼 이동 평균, 8주기 및 21주기 이동 평균을 사용한다. 단기 이동 평균 위에 장기 이동 평균을 착용 할 때, 더 많은 일을; 단기 이동 평균 아래에 장기 이동 평균을 착용 할 때, 공백을 다.
이 전략은 또한 트렌드 없는 범위를 필터링하기 위해 이동 평균의 기울기 지표를 도입하여 트렌드가 뚜렷한 경우에만 거래 신호를 냅니다.
이 전략의 핵심은 단기 이동 평균과 장기 이동 평균의 교차에 있다. 단기 이동 평균은 가격 변화의 트렌드를 더 빨리 포착할 수 있고, 장기 이동 평균은 노이즈에 대해 더 나은 필터링 효과를 가지고 있다. 단기 라인을 가로질러 다단계 트렌드를 표시할 때, 더 많은 이익을 얻는다. 단기 라인을 가로질러 긴 라인을 가로질러 공허 트렌드를 표시할 때, 공허 이익을 얻는다.
이 전략은 또한 기울기 경계를 설정한다. 기울기가 긍정적 인 경계를 초과할 때만 다중 신호가 발생하며, 기울기가 부정적인 경계를 초과할 때만 공백 신호가 발생한다. 이것은 명백한 추세가없는 간격을 필터링하여 거래 신호의 품질을 높일 수 있습니다.
특히, 이 전략의 거래 신호 생성 논리는 다음과 같습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이러한 위험에는 다음과 같은 측면에서 최적화할 수 있습니다.
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
이 쌍 이동 평균 전략은 전반적으로 간단하고 실용적이며, diffs의 두 주기의 변수를 통해 서로 다른 추세 특성을 포착하고, 결합하여 거래 신호를 생성한다. 동시에, 기울기 기하값을 도입하면 신호 품질이 향상된다. 이 전략은 기본 전략으로 확장할 수 있으며, 최적화 공간과 확장 능력도 많다.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//written by sixpathssenin
//@version=4
strategy(title="Dual Moving Average",initial_capital=10000,overlay=true)
ma1= sma(close,8)
ma2= sma(close,21)
angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13)
i_lookback = input(2, "Angle Period", input.integer, minval = 1)
i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1)
i_angleLevel = input(6, "Angle Level", input.integer, minval = 1)
i_maSource = input(close, "MA Source", input.source)
f_angle(_src, _lookback, _atrPeriod) =>
rad2degree = 180 / 3.141592653589793238462643 //pi
ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback)
ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)
plot(ma1,color=#FF0000)
plot(ma2,color=#00FF00)
crosso=crossover(ma1,ma2)
crossu=crossunder(ma1,ma2)
_lookback = 15
f_somethingHappened(_cond, _lookback) =>
bool _crossed = false
for i = 1 to _lookback
if _cond[i]
_crossed := true
_crossed
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)
long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)
if(long)
strategy.entry("Long",strategy.long)
if(short)
strategy.entry("short",strategy.short)