이동 평균 교차를 통한 이동 평균 추세 전략


생성 날짜: 2024-01-12 10:56:57 마지막으로 수정됨: 2024-01-12 10:56:57
복사: 0 클릭수: 502
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 교차를 통한 이동 평균 추세 전략

개요

이 거래 전략은 간단한 이동 평균과 평행선 교차 시스템의 트렌드 추적 전략에 기초한다. 그것은 다양한 주기에서 빠른 이동 평균과 느린 이동 평균의 교차를 다중 하락의 신호로 이용한다. 빠른 이동 평균이 아래에서 느린 이동 평균을 가로지르면 더 많이 하락하고 빠른 이동 평균이 위에서 아래로 느린 이동 평균을 가로지르면 하락한다.

전략 원칙

이 전략은 60일간의 간단한 이동 평균과 200일간의 간단한 이동 평균과 같은 빠른 주기를 사용합니다. 빠른 이동 평균은 최근 가격 추세를 반영하여 가격 변화에 더 빠르게 반응합니다. 느린 이동 평균은 중기 및 장기 추세를 반영하여 가격 변화에 더 느리게 반응합니다.

짧은 주기 평균선이 아래에서 긴 주기 평균선을 통과하면, 단기 평균선이 상승하기 시작하고, 다단계 시장에 진입하는 것을 나타냅니다.

이 전략은 평행선의 교차원칙을 사용하여 트렌드 방향을 판단한다. 단기주기 가격이 빠르게 상승할 때, 단기주기 평행선은 장기주기 평행선을 위로 밀어내고, 아래에서 그것을 통과한다. 이것은 시장이 상승 추세로 들어간 것을 의미하며, 더 많이 해야 한다. 반대로, 단기주기 가격이 빨리 떨어질 때, 단기주기 평행선은 장기주기 평행선을 낮춰내고, 위에서 그것을 통과한다. 이것은 시장이 하향 추세로 들어간 것을 의미하며, 공백을 해야 한다.

빠른 평균선과 느린 평균선의 교차로로 가격 트렌드의 전환점을 포착하고 그에 따라 다중 공백 위치를 조정합니다. 이것은 트렌드를 판단하고 거래 신호를 생성하는 전략의 주요 원칙입니다.

전략적 강점 분석

  • 주요 동향을 평평선과 교차하여 판단하고, 단기 시장 소음으로 오해하지 마십시오.
  • 단기 및 중장기 두 시간 차원을 고려하여 더 안정적이고 신뢰할 수 있습니다.
  • 이 트렌드 추적은 간단하고 효과적입니다. 예를 들어, 상승 추세에서 더 많이 하고, 하락 추세에서 더 많이 하지 않습니다.
  • 이동 평균은 광범위하게 적용되며, 이해하기 쉽고, 변수 설정이 유연하다.
  • 자금 관리 매개 변수는 조정할 수 있고, 위험을 통제할 수 있다.

전략적 위험 분석

  • 이 전략은 뚜렷한 가격 추세에 의존하고 있으며, 시장의 급격한 변동이 발생하면 실패할 수 있다.
  • 가격 변동 기간 동안 여러 가지 잘못된 신호가 발생하여 종종 포지션이 열리고 닫히게됩니다.
  • 이동 평균은 지연되어 있고, 가격 전환점을 놓칠 수 있다.
  • 만약 변수가 잘못 설정되어, 스톱피치가 너무 작거나 스톱치가 너무 커지면, 조기 퇴장 또는 평지 상태가 된다.
  • 합리적인 매개 변수는 다양한 품종의 특성에 따라 최적화 설정이 필요합니다.

이동 평균의 주기적 변수를 조정하여 다양한 종류의 변동 빈도에 맞게 조정할 수 있습니다. 더 복잡한 지표를 사용하여 잘못된 신호를 줄이기 위해 손해 중지 및 중단 전략을 개선하고 거래량 필터링과 같은 방법을 추가하여 전략을 최적화하여 전략의 안정성을 향상시킬 수 있습니다.

전략 최적화 방향

이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.

  1. 이동 평균 빠른 느린 주기 파라미터를 최적화하여 다양한 진동 주파수의 품종에 적합하다. 더 많은 조합을 테스트하여 최적의 파라미터를 찾을 수 있다.

  2. 진입 조건을 변경하고, 거래량 급증과 같은 더 많은 지표를 필터링하여 잘못된 신호를 줄이십시오.

  3. 더 효율적인 수익을 창출하기 위해 스톱 스톱 전략을 개선하십시오. 예를 들어, 스톱 스톱을 추적하거나 동적 스톱을하십시오.

  4. 거래비용을 고려하여 비용 평가 모듈을 추가하여 시뮬레이션을 더 현실적으로 만들 수 있습니다.

  5. 다양한 품종의 특성을 고려하여 최적의 파라미터 조합을 찾기 위해 설계된 파라미터 유니버스 (Parameter Universe)

  6. 지역 특성을 인식하여 트렌드 전환점을 판단하고 포지션 개시 및 매각 시점을 파악하는 데 도움을 줍니다.

시스템 전략적 최적화를 통해 수익률과 안정성을 크게 높여 회수율을 낮출 수 있다.

요약하다

이 거래 전략은 평평선 교차 판단 가격 추세의 전환에 기초하고, 전형적인 트렌드 추적 전략에 속한다. 이 전략은 다른 주기평평선의 교차를 다중 상쇄 신호로 사용하여, 빠른 평평선과 느린 평평선 조합을 통해 트렌드 방향을 결정하고, 효과적인 트렌드 캡처를 실현한다. 이 전략은 안정적이고, 신뢰할 수 있으며, 이해하기 쉽고, 구현할 수 있으며, 매개 변수를 최적화하면 대부분의 품종에 적합하며, 정량 거래의 기본 전략 유형이다.

전략 소스 코드
/*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    —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//