리소스 로딩... 로딩...

5일 이동평균 금십자 동력 전략

저자:차오장, 날짜: 2023-09-21 12:16:22
태그:

전반적인 설명

이 전략은 5일 및 78일 MA 교차를 사용하여 단기 가격 파장을 포착하는 것을 목표로 추진력을 추적하는 신호를 생성합니다.

전략 논리

  1. 3일, 78일, 195일 가중화 이동 평균을 계산합니다.

  2. 3일 크로스오버 195일 트리거 구매 신호

  3. 3일이 78일이 넘고 78일이 195일이 넘으면 상승세 채널이 형성되면서 구매가 시작됩니다.

  4. 6ATR 동적 수익을 취하는 라인을 설정, 가격이 라인 아래에 떨어지면 판매.

  5. 3일이 195일이 넘으면 신호를 팔자

장점

  1. 복수의 MA 교차는 거짓 유출을 효과적으로 필터합니다.

  2. 역동적인 수익을 얻는 것은 윙사 (wipssaws) 를 피합니다.

  3. 백테스트는 거래당 평균 2시간의 보유 시간을 보여줍니다. 단기 추진력 거래에 적합합니다.

  4. 최대 수요율은 20% 정도입니다.

위험성

  1. 고정된 MA 매개 변수는 변화하는 시장에 적응하지 못합니다.

  2. 1년 샘플 기간은 제한되어 전략 검증을 위해 더 큰 데이터가 필요합니다.

  3. 이윤 취득 및 스톱 로스 매개 변수는 위험 통제를 위해 최적화되어야 합니다.

  4. 가격 격차에 적응하지 못해

  5. 거래비용이 높을 가능성이 있습니다.

개선

  1. 최적화를 위해 다른 MA 조합을 테스트합니다.

  2. 리스크와 수익 균형을 위해 수익을 취하고 손실을 멈추는 것을 최적화하십시오.

  3. 침입 필터를 설정해서 갇힌 확률을 줄여

  4. 포지션 크기를 최적화해, 피라미드 위력

  5. 다른 제품과 더 긴 시간 프레임에서 테스트합니다.

  6. 모네카를로 시뮬레이션으로 최대 수요를 평가합니다.

요약

이 전략은 MA 교차와 함께 상승 추세를 식별하고 좋은 백테스트 결과를 가진 동적 수익 정지 규칙을 설정합니다. 그러나 제한된 샘플 기간, 패람 안정성은 검증되고 격차에 실패합니다. 더 큰 데이터 세트, 더 많은 필터에서 더 많은 백테스팅을 요구하여 잘못된 신호를 줄이고, 최적화된 수익 정지 매개 변수, 거래 비용에 대한 평가를 요구합니다. 포괄적인 최적화 및 검증 테스트를 통과하면 강력한 단기 추진력 추격 시스템이 될 수 있습니다.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// © FinTasticTrading 2021/2/14
// This is a 5 day moving average crossing long strategy, used in short term momentum trading strategy.
// Momentum trading Strategy: When S&P 500 index is at up trend (or above 60 sma), buy 10+ stocks in top 20% stock RS ranking at equal weight using this MA5X_L strategy. Change stocks when any stock exited by algorithm.  
// Back test start since 2020/7/1, each long entry for condition 1 is $30000, condition 2 is $20000, with max of 2 long positions.
// Setup: 10 minutes chart
// Buy condition 1) 3 wma cross up 180 wma (5day) 2) 3wma > 60wma > 180wma UP Trend Arrangement (UTA)
// Exit condition 1) 3 wma cross under 180 wma 2) position profit > 20% and 3 wma cross under 6 ATRs line (green)
//@version=4

strategy("MA5X_L", overlay=true, pyramiding=2,default_qty_type=strategy.cash, default_qty_value=100000)
s_len = input( 3 )
m_len = input( 78 )  // 2 day moving average
l_len = input( 195)  // equal to 5 Day moving average
xl_len = input(390)  // 10 day moving average
//Draw WMAs
s_ma = wma(close,s_len)
m_ma = wma(close,m_len)
l_ma = wma(close,l_len)
xl_ma = sma(close,xl_len)
plot(s_ma, color=color.yellow, linewidth=2)
plot(m_ma, color=color.fuchsia, linewidth=2)
plot(l_ma, color=color.blue, linewidth=2)
plot(xl_ma, color = color.gray, linewidth=2)

//ATR Stop Profit , length = 40 or 1 day
Periods = input(title="ATR Period", type=input.integer, defval=40)
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=6.0)
sl=hl2-(Multiplier*atr(Periods))
sl1 = nz(sl[1], sl)
sl := s_ma[1] > sl1 ? max(sl, sl1) : sl
plot(strategy.position_size > 0 ? sl:na, title="Stop Loss", style=plot.style_linebr, linewidth=2, color=color.green)

//Backtest since
condition100 = time>=timestamp(2020, 07, 01, 00, 00) 

//Long Entry Condition 1 : s_ma Cross UP l_ma
if crossover(s_ma, l_ma) and condition100
    strategy.entry("X Up", strategy.long, qty = 30000/close, comment="X Up")

//Long Entry Condition 2 : s_ma > m_ma > l_ma
condition31 = s_ma>m_ma and m_ma>l_ma
condition32 = condition31[1]==false and condition31 == true and condition100
strategy.entry("UTA", strategy.long, qty = 20000/close, when = condition32, comment="UTA")

//Long Exit Condition 1 :  3 wma cross under 180 wma
condition50 = crossunder(s_ma, l_ma)
strategy.close_all(when = condition50, comment="X Dn")

//Long Exit Condition 2 : position profit > 20% and 3 wma cross under 6 ATRs line (green)
strategy.close_all(when = crossunder(close,sl) and strategy.openprofit>30000*0.2, comment="Stop")


더 많은