이중 이동 평균 역전 추적 전략

저자:차오장, 날짜: 2023-12-07 17:40:12
태그:

img

이 전략의 주요 아이디어는 이동평균의 황금 십자와 죽은 십자 등을 거래 신호로 사용하여 입상 및 정지하기 위해 이중 이동평균의 가격 브레이크와 결합하는 것입니다. 짧은 기간 이동평균이 긴 기간 이동평균을 넘을 때 구매 신호를 생성합니다. 짧은 기간 이동평균이 긴 기간 이동평균을 넘을 때 판매 신호가 생성됩니다. 따라서 전략은 트렌드를 따르는 것과 평균 반전 특성을 모두 가지고 있습니다.

세부적인 운영 원칙은 다음과 같습니다.

  1. 짧은 기간 간단한 이동 평균 (SMA) 과 긴 기간 간단한 이동 평균을 계산합니다.

  2. 가격이 이동 평균 이상 또는 아래에 있는지 비교하십시오. 이동 평균 이상의 가격은 긴 위치를 나타냅니다. 아래의 가격은 짧은 위치를 나타냅니다.

  3. 짧은 SMA가 긴 SMA를 넘을 때 긴 SMA를 넘을 때 길게; 짧은 SMA가 긴 SMA를 넘을 때 짧게.

  4. 긴 위치와 짧은 위치 사이를 전환합니다.

이 전략의 주요 장점은 다음과 같습니다.

  1. 이중 이동평균 전략은 트렌드 추종과 평균 반전을 결합하여 시장 트렌드를 추적하고 반전 기회를 포착하는 것을 활용합니다.

  2. 이동 평균의 황금 십자와 죽은 십자는 약간의 끈기가 있습니다. 이는 잘못된 파장을 필터링하는 데 도움이 됩니다.

  3. 이동 평균 이론을 바탕으로, 트렌드 및 범위 제한 시장에서 이익을 차단하는 것이 유리합니다.

이 전략의 주요 위험은 다음과 같습니다.

  1. 이중 이동 평균 전략은 매개 변수에 민감합니다. 부적절한 매개 변수 설정으로 인해 과잉 거래 또는 기회를 놓칠 수 있습니다.

  2. 실패한 탈출은 손실로 이어질 수 있습니다. 효과적인 중단은 위험을 통제하기 위해 시행되어야합니다.

  3. 트렌드 역전 성공은 보장되지 않습니다. 원래 트렌드가 손실로 이어질 수 있습니다.

주요 최적화 방향:

  1. 가장 좋은 매개 변수 조합을 찾기 위해 이동 평균 매개 변수를 테스트하고 최적화합니다.

  2. 트렌드 결정 지표를 추가하여 트렌드 및 범위 시장을 구별합니다.

  3. 트래일링 스톱 로스, 스톱 오더 로스 등 위험을 통제하기 위해 효과적인 스톱 로스를 구현합니다.

  4. 다른 지표와 결합하여 전략의 안정성을 향상시킵니다.

결론적으로, 이중 이동 평균 반전 추적 전략으로서 트렌드 추적과 반전 거래를 모두 고려합니다. 적절한 매개 변수 최적화 및 리스크 제어로 좋은 결과를 얻을 수 있습니다. 그러나 모든 전략은 방향 오류, 스톱 손실 실패 등과 같은 위험에 직면합니다. 변화하는 시장에 적응하기 위해 지속적인 테스트와 최적화가 필요합니다.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig = iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos))
if (possig == 1)
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)
if (possig == 0)
    strategy.close_all()
nColor = BarColors ? possig == -1 ? color.red : possig == 1 ? color.green : color.blue : na 
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)

더 많은