이 전략은 트렌드 추적 거래의 시장 트렌드 방향을 결정하기 위해 이동 평균과 실제 평균 범위를 사용합니다.
이 전략은 시장 동향을 결정하기 위해 연간의 이동 평균 m와 연간의 실제 평균 범위의 2 배를 사용합니다. 구체적인 규칙은 다음과 같습니다.
낮값이 이동평균과 실제 평균 범위 (낮값 > ma + atr) 보다 크면 상승 추세로 판단됩니다. 최고가 이동평균 빼기 평균 실제 범위 (최고 < ma - atr) 보다 작을 때, 그것은 하락 추세로 판단됩니다.
다른 경우, 이전 판결은 유지됩니다.
상승 추세가 결정되면, 특정 비율로 길게 가십시오. 하락 추세가 결정되면, 특정 비율로 하락을 허용하면 하락합니다.
마감 조건은 지정된 거래 종료 날짜에 도달하는 것입니다.
이 전략의 장점은 다음과 같습니다.
이 전략에 직면한 주요 위험은 다음과 같습니다.
해결책:
전략은 다음 측면에서 최적화 될 수 있습니다:
이 전략의 전반적인 아이디어는 명확하고 이해하기 쉽습니다. 트렌드 방향을 결정하기 위해 이동 평균을 사용하고 정지치를 설정하기 위해 평균 진정한 범위를 사용합니다. 트렌드를 효과적으로 추적 할 수 있습니다. 그러나 특정 위험이 있으며 매개 변수 설정의 추가 최적화 및 다른 판단 지표가 필요합니다. 일반적으로이 전략은 트렌드 추적 거래에 실행 가능한 접근 방식을 제공합니다.
/*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()