이동 평균 크로스오버 트렌드 전략

저자:차오장, 날짜: 2024-01-12 10:56:57
태그:

img

전반적인 설명

이 거래 전략은 트렌드 추적을 위한 간단한 이동 평균 및 이동 평균 크로스오버 시스템을 기반으로 합니다. 그것은 긴 또는 짧은 이동 신호로 다른 기간과 함께 빠른 및 느린 이동 평균의 크로스오버를 사용합니다. 빠른 MA가 밑에서 느린 MA보다 높을 때, 길게 이동합니다. 빠른 MA가 위에서 느린 MA보다 낮을 때, 짧게 이동합니다. 이 전략은 명백한 트렌드가있는 제품에 잘 작동합니다.

전략 논리

이 전략은 60 일과 같은 빠른 간단한 이동 평균과 200 일과 같은 느린 평균을 사용합니다. 빠른 MA는 단기 트렌드를 반영하여 가격 변화에 더 빠르게 반응합니다. 느린 MA는 느리게 반응하고 중장기 트렌드를 보여줍니다.

짧은 MA가 아래로부터의 긴 MA를 넘을 때, 단기 가격이 상승하기 시작하여 황소 시장에 진입한다는 신호가 됩니다. 그래서 길게 가십시오. 짧은 MA가 위로부터의 긴 MA를 넘을 때, 단기 가격이 떨어지기 시작하여 곰 시장에 진입한다는 신호가 됩니다. 그래서 짧게 가십시오.

이 전략은 트렌드 방향을 결정하기 위해 MA 크로스오버를 사용합니다. 단기 가격이 더 빨리 상승할 때, 짧은 MA는 긴 MA를 위로 밀어내어 밑에서 가로질러 갈 것입니다. 이것은 상승 추세가 나타나고 긴 포지션을 취해야한다는 것을 의미합니다. 반대로 단기 가격이 더 빨리 떨어지면 짧은 MA는 긴 MA를 끌어내어 위에서 가로질러 하락 추세를 나타내고 짧은 포지션을 취해야한다는 것을 의미합니다.

빠른 및 느린 MA 크로스오버를 사용하여 가격 트렌드의 전환점을 캡처함으로써 전략은 긴/단지 포지션을 그에 따라 조정할 수 있습니다. 이것은 전략의 트렌드 결정과 거래 신호 생성의 주요 논리입니다.

이점 분석

  • 주요 트렌드를 결정하기 위해 MA 크로스오버를 사용하며, 단기 시장 소음으로 오해되는 것을 피합니다.
  • 단기적, 중장기적, 안정적이고 신뢰할 수 있는 시간 프레임을 모두 고려합니다.
  • 간단하고 효과적인 트렌드 추적을 구현합니다. 예를 들어 상승 트렌드에서 길고 하락 트렌드에서 짧습니다.
  • 이동 평균은 광범위하게 적용되고 이해하기 쉽고 매개 변수는 유연합니다.
  • 리스크 관리 매개 변수는 통제된 리스크를 위해 조정할 수 있습니다.

위험 분석

  • 이 전략은 명확한 가격 추세에 의존하고 있습니다. 시장의 격렬한 변동으로 인해 실패가 발생할 수 있습니다.
  • 윙사 (Whipsaws) 는 시장의 범위에서 많은 잘못된 신호를 생성하여 포지션의 빈번한 개장 및 폐쇄를 유발할 수 있습니다.
  • 이동평균은 지연이 있고, 가격 전환점을 놓칠 수도 있습니다.
  • 너무 긴 스톱 손실이나 너무 넓은 수익을 취하는 것과 같은 부적절한 매개 변수 설정은 유리한 포지션의 조기 출출이나 해제로 이어질 수 있습니다.
  • 합리적인 매개 변수는 다른 제품의 특성에 따라 최적화되어야합니다.

제품 변동성 빈도에 따라 MA 기간을 조정하는 방법, 더 복잡한 지표를 사용하여 스톱 로스/프로피트 취득을 개선하는 방법, 볼륨 필터를 추가하는 등의 방법은이 전략을 최적화하고 안정성을 향상시킬 수 있습니다.

최적화 방향

이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.

  1. 빠른 및 느린 MA 기간을 최적화하여 다른 변동성 빈도와 제품을 적응합니다. 최적의 조합을 찾기 위해 더 많은 조합을 테스트 할 수 있습니다.

  2. 잘못된 신호를 줄이기 위해 볼륨 스파이크와 같은 더 많은 필터를 추가함으로써 입구 조건을 개선합니다.

  3. 수익성을 높이기 위해 트레일링 스톱이나 동적 스톱과 같은 스톱 로스/프로프트 취득을 개선합니다.

  4. 수수료와 같은 거래 비용을 고려하고 더 현실적인 백테스트를 위해 비용 평가 모듈을 추가하십시오.

  5. 다양한 제품에 맞춘 최적의 매개 변수 조합을 찾기 위해 매개 변수 우주를 설계하십시오.

  6. 지역 패턴 식별을 추가하여 트렌드 전환점을 결정하고 입출시기를 개선합니다.

체계적인 전략 최적화를 통해 수익성, 안정성이 크게 향상되고 마감량이 줄일 수 있습니다.

요약

트레이딩 전략은 트렌드 전환을 MA 크로스오버를 사용하여 결정합니다. 전형적인 트렌드 추적 전략입니다. 빠른 및 느린 MAs 사이의 크로스오버를 사용하여 긴 / 짧은 신호를 생성하여 두 가지의 조합을 통해 트렌드 방향을 식별합니다. 이 전략은 꾸준하고 신뢰할 수있게 트렌드를 캡처하고 이해하기 쉽고 구현합니다. 최적화되면 대부분의 제품에 적응하고 근본적인 양적 거래 전략을 형성 할 수 있습니다. 수익성과 승률의 추가 개선은 다른 기술 지표와 결합하여 얻을 수 있습니다.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 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/
// © thebearfib
//
//@version=5
//

strategy("x-over 150d_200d_sma - Free", overlay = true)

repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system
srcmc   = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off)

fast_length         = input(title="Fast Length", defval=60)
slow_length         = input(title="Slow Length", defval=275)

_fast               = ta.sma(srcmc,  fast_length)
_slow               = ta.sma(srcmc,  slow_length)

plot(_fast, 
  title="Fast SMA", 
  color=color.red,
  linewidth = 1) 

plot(_slow, 
  title="Slow SMA", 
  color=color.white,
  linewidth = 3)
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Calculating  —————————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//
longProfitPerc      = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01
longStopPerc        = input.float(title="Long Stop (%)",        minval=0.01, step=1.0, defval=13)  * .01
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Stop Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longExitPrice  = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc *  (1 + longProfitPerc)
longStopPrice = strategy.opentrades  > 0 ? strategy.position_avg_price * (1 - longStopPerc)   : srcmc *  (1 - longStopPerc)
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Long Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longCondition   = srcmc > _slow and  ta.crossover(_fast, _slow)
closeCondition  =  ta.crossover(srcmc, _slow)  

if (longCondition)
    strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆")

if (closeCondition)
    strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←")

if (strategy.position_size > 0)
    strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss")
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// —————————————————————————————————  Never the End Just the beginning    —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//

더 많은