더블 이동 평균 차이 거래 전략


생성 날짜: 2023-10-17 13:54:05 마지막으로 수정됨: 2023-10-17 13:54:05
복사: 0 클릭수: 706
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 이동 평균 차이 거래 전략

개요

이 전략은 쌍평선 이동 평균의 차이를 기반으로 거래 신호를 생성한다. 그것은 빠른 주기 및 느린 주기 두 개의 평균선을 계산하고, 빠른 선이 하향에서 느린 선을 뚫을 때 구매 신호를 생성하고, 빠른 선이 상향에서 하향으로 느린 선을 뚫을 때 판매 신호를 생성한다.

원해해석

이 전략의 핵심 논리는 두 개의 이동 평균 SMA (len1) 와 SMA (len2) 를 계산하고, 그 차이의 값을 계산하는 것이다. len1은 단기 평균선 주기, len2은 장기 평균선 주기이다. 단기 평균선은 가격 변화에 더 빠르게 반응하고, 장기 평균선은 장기 경향을 더 잘 반영한다.

단기평균선이 아래에서 장기평균선을 통과하면, 단기평균가격이 장기평균관보다 상승하기 시작하면, 구매할 수 있다. 위에서 아래로 장기평균선을 통과하면, 단기평균가격이 장기평균관보다 하락하기 시작하면, 판매할 수 있다.

오작동을 필터하기 위해, 전략은 또한 out3를 거래 신호 라인으로 도입한다. out3는 단기 평균선과 가격 중도값의 차치sma 평형 처리 후의 결과이다. out3가 dif를 통과했을 때만 거래 신호가 발생한다.

구체적으로, long 변수는 out3이 상향으로 dif을 통과할 때 긍정적으로, 구매 신호로; short 변수는 out3이 하향으로 dif을 통과할 때 부정적으로, 판매 신호로 .strategy.entry는 long 신호에 따라 구매 주문을 생성하고, strategy.close는 short 신호에 따라 매매 평점 주문을 생성한다.

우위 분석

이것은 매우 간단하고 직관적인 트렌드 추적 전략이다. 이진평선 주기마다 다른 평선 교차를 일으키는 방식을 사용하여 트렌드 전환점을 포착할 수 있으며, 단일 평선 시스템보다 더 신뢰할 수 있다. 그리고 거래 신호 선의 필터를 도입하면 흔들리는 시장에서 발생하는 가짜 신호를 어느 정도 피할 수 있다.

이동식 중지와 같은 방식과는 달리, 트렌드 추적 개념을 채택하여, 트렌드가 더 길어질 때 중지 손실이 발생하지 않고 최대 이익을 얻을 수 있습니다. 또한, 트렌드가 반전될 때 적자를 통제하고 적시에 입장을 청산합니다.

이 전략은 파라미터가 적고, 쉽게 습득하고 조정할 수 있으며, 알고리즘 거래를 배우는 초보자 입문 전략에 적합하다.

위험과 개선

이 전략의 가장 큰 위험은 쌍평균선의 주기 변수가 부적절하여 거래 신호 오류를 유발하는 것이다. 단기평균선 주기 len1이 너무 길면 트렌드 시작 단계의 기회를 놓치게 된다. 너무 짧으면 가짜 신호의 가능성을 증가시킨다. 장기평균선 len2이 너무 길면 포지션 조정이 지연된다. 너무 짧으면 시장의 흔들림에 의해 방해받을 수 있다.

len1 및 len2의 파라미터를 조정하여 최적의 조합을 얻을 수 있으며, 자기 적응평등을 도입하여 동적으로 조정하는 주기를 시도할 수도 있다. 또한 필터 파라미터를 최적화하여 잘못된 신호를 줄일 수도 있다.

트렌드 추적 전략은 또한 단일 손실의 크기를 제어하는 데 주의를 기울여야 하며, 스톱로스를 설정하거나 포지션 관리를 도입하여 최적화 할 수 있다.

요약하다

이중평선차량전략은 매우 전형적인 트렌드 추적전략의 대표적이다. 이중평선 교차 체계는 안정적인 신호원을 가져오고, 필터와 함께 시장의 흔들림에 의해 간섭되는 것을 효과적으로 피할 수 있다. 이중평선 주기 파라미터를 최적화함으로써 더 나은 전략의 성능을 얻을 수 있다. 이 전략은 알고리즘 거래의 입문 전략으로 학습하기에 매우 적합하다.

전략 소스 코드
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)