이동평균 및 실제평균 범위를 기반으로하는 트렌드 추적 전략

저자:차오장, 날짜: 2024-01-12 11:14:01
태그:

img

전반적인 설명

이 전략은 트렌드 추적 거래의 시장 트렌드 방향을 결정하기 위해 이동 평균과 실제 평균 범위를 사용합니다.

원칙

이 전략은 시장 동향을 결정하기 위해 연간의 이동 평균 m와 연간의 실제 평균 범위의 2 배를 사용합니다. 구체적인 규칙은 다음과 같습니다.

낮값이 이동평균과 실제 평균 범위 (낮값 > ma + atr) 보다 크면 상승 추세로 판단됩니다. 최고가 이동평균 빼기 평균 실제 범위 (최고 < ma - atr) 보다 작을 때, 그것은 하락 추세로 판단됩니다.

다른 경우, 이전 판결은 유지됩니다.

상승 추세가 결정되면, 특정 비율로 길게 가십시오. 하락 추세가 결정되면, 특정 비율로 하락을 허용하면 하락합니다.

마감 조건은 지정된 거래 종료 날짜에 도달하는 것입니다.

이점 분석

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

  1. 이동평균을 사용하여 일반적인 트렌드 방향을 결정하고 단기 시장 변동에 의해 오해를 피하십시오.
  2. 평균 실제 범위에서 동적 스톱 로스를 설정하여 위험 통제를 촉진합니다.
  3. 높은 수익 잠재력을 가진 트렌드를 따라 적절한 시간에 트렌드 기회를 포착 할 수 있습니다.
  4. 간단하고 조작하기 쉬운 규칙.

위험 분석

이 전략에 직면한 주요 위험은 다음과 같습니다.

  1. 급변하는 시장에서 여러 번 손실을 입을 수 있습니다.
  2. 트렌드 반전 지점을 효과적으로 결정하지 못하면, 고도를 추구하고 최저치를 죽이는 위험이 있습니다.
  3. 평균 실제 범위의 잘못된 매개 변수 설정은 너무 느슨하거나 너무 엄격한 출구점을 초래할 수 있습니다.

해결책:

  1. 더 안정적인 매개 변수를 사용하기 위해 이동 평균 매개 변수를 적절히 조정합니다.
  2. 신호를 다른 지표로 확인해
  3. 적절한 매개 변수를 설정하기 위해 평균 실제 범위 매개 변수를 최적화하고 테스트합니다.

최적화 방향

전략은 다음 측면에서 최적화 될 수 있습니다:

  1. 더 안정적인 매개 변수 조합을 찾기 위해 다른 이동 평균 시스템을 테스트합니다.
  2. 신호의 신뢰성을 판단하기 위해 다른 보조 지표를 추가합니다.
  3. 최적의 매개 변수를 찾기 위해 실제 범위의 평균 매개 변수를 테스트합니다.
  4. 자본의 수익을 높이기 위해 레버리지를 통해 자본 활용을 최적화합니다.
  5. 기계 학습과 다른 방법을 결합하여 동적 매개 변수 최적화를 달성합니다.

요약

이 전략의 전반적인 아이디어는 명확하고 이해하기 쉽습니다. 트렌드 방향을 결정하기 위해 이동 평균을 사용하고 정지치를 설정하기 위해 평균 진정한 범위를 사용합니다. 트렌드를 효과적으로 추적 할 수 있습니다. 그러나 특정 위험이 있으며 매개 변수 설정의 추가 최적화 및 다른 판단 지표가 필요합니다. 일반적으로이 전략은 트렌드 추적 거래에 실행 가능한 접근 방식을 제공합니다.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//2019
//Noro

//@version=4
strategy(title = "Noro's MA+ATR Strategy", shorttitle = "MA+ATR str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(30, minval = 2, title = "MA Length")
src = input(ohlc4, title = "MA Source")
limitmode = input(false)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MA + BG
atr = sma(tr, len) * 2
ma = sma(src, len)
plot(ma, color = color.blue, linewidth = 4)
trend = 0
trend := low > ma + atr ? 1 : high < ma - atr ? -1 : trend[1]
col = trend == 1 ? color.lime : color.red
bgcolor(col, transp = 70)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1 and limitmode == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode == false
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if trend == 1 and limitmode
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()

더 많은