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

다중 지표 트렌드 크로싱 전략: 황소 시장 지원 밴드 거래 시스템

저자:차오장, 날짜: 2024-12-27 14:35:53
태그:SMABMSBEMA

img

전반적인 설명

이 전략은 황소시장 지원 대역을 기반으로하는 트렌드를 따르는 거래 시스템이다. 주로 20주 간 단순 이동 평균 (SMA) 과 21주 간 기하급수 이동 평균 (EMA) 사이의 교차 신호를 사용하여 시장 트렌드 방향을 결정하고 거래 결정을 내린다. 이 전략은 이동 평균이 상향으로 넘어가면 긴 신호를 생성하고 상향으로 넘어가면 종료하여 중장기 트렌드 기회를 포착하는 것을 목표로 한다.

전략 원칙

이 전략의 핵심 논리는 시장 트렌드를 판단하기 위해 20 주 SMA와 21 주 EMA의 상대적 위치를 모니터링하는 것입니다. 단기 평균 (20 주 SMA) 이 장기 평균 (21 주 EMA) 이상으로 떨어지면 잠재적인 상승 추세를 나타내고 긴 포지션 입력을 유발합니다. 단기 평균이 장기 평균 이하로 떨어지면 상승 추세가 잠재적으로 종료되고 포지션 폐쇄를 유발합니다. 이 전략은 0.1%의 거래 수수료와 3 기초 지점의 미끄러짐으로 주식 위치 관리의 %_of_equity를 사용합니다.

전략적 장점

  1. 강한 트렌드를 따르는: 단기 시장 소음을 필터하고 중장기 트렌드 기회를 포착하기 위해 주간 시간 프레임 이동 평균 크로스오버를 사용합니다.
  2. 합리적인 리스크 제어: 동적 이동 평균을 적시에 시장에서 빠져나가는 스톱 로스 기준으로 사용합니다.
  3. 과학적 매개 변수 설정: 20주 및 21주 매개 변수는 과도한 지연 없이 신호 안정성을 보장합니다.
  4. 명확한 실행 논리: 입력 및 출력 신호는 명시적이며 주관적 판단을 제거합니다.
  5. 유연한 자본 관리: 계좌 자금에 기초한 위치 크기를 지원하여 역동적인 위치 조정

전략 위험

  1. 유행 시장에서 효과적이지 않습니다. 유행 시장에서 빈번한 크로스오버가 잘못된 브레이크와 연속적인 손실을 초래할 수 있습니다.
  2. 중요한 미끄러짐 영향: 주간 시간 프레임 거래는 실제 거래에서 상당한 미끄러짐에 직면 할 수 있습니다.
  3. 지연된 입력 시간: 이동 평균 크로스오버 신호는 본질적으로 지연하고 최적의 입력 포인트를 놓칠 수 있습니다.
  4. 적당한 마취 통제: 스톱 로스를 위해 이동 평균 크로스오버에만 의존하면 큰 마취로 이어질 수 있습니다.
  5. 높은 자본 요구: 주간 시간 프레임 거래는 상당한 자본과 심리적 회복력을 요구합니다.

최적화 방향

  1. 필터링 지표 추가: 트렌드를 확인하고 신호 신뢰성을 향상시키기 위해 RSI, MACD 등을 포함합니다.
  2. 스톱 로스 메커니즘을 최적화: 위험 통제를 강화하기 위해 ATR 지표를 사용하여 동적 스톱 로스를 구현합니다.
  3. 포지션 관리 개선: 시장 변동성에 따라 포지션 크기를 동적으로 조정
  4. 트렌드 필터링 추가: 주요 트렌드 방향으로만 거래에 장기 트렌드 판단을 도입
  5. 거래 실행을 강화합니다. 미끄러짐의 영향을 줄이고 전략 안정성을 향상시키기 위해 거래 규칙을 최적화합니다.

요약

불시장지원밴드 (Bull Market Support Band) 는 고전적인 기술분석 이론에 기초한 트렌드 추후 시스템이다. 명확한 논리와 통제 가능한 위험을 특징으로 하는 주간 시간 프레임 이동 평균 크로스오버를 통해 중장기 트렌드 기회를 포착한다. 그러나 전략은 시장 범위에서 성적이 좋지 않으며 약간의 지연을 나타낸다. 보조 지표, 스톱-로스 최적화 및 향상된 자본 관리를 추가함으로써 전략은 최적화에 상당한 여지가 있다. 상당한 자본과 위험 관용을 가진 투자자에게 적합하다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0
// © zkdev

//@version=6
strategy(title='Demo GPT - Bull Market Support Band', 
     overlay=true, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, 
     commission_type=strategy.commission.percent, 
     commission_value=0.1, 
     slippage=3)

// -------------------------------------------------------------------------
// Compile-time timestamp constants for default date range
// (2018-01-01 00:00:00 UTC -> 1514764800000
//  2069-12-31 23:59:59 UTC -> 3155759999000)
// -------------------------------------------------------------------------
const int defaultFromDate = 1514764800000
const int defaultToDate   = 3155759999000

// -------------------------------------------------------------------------
// Inputs: date range
// -------------------------------------------------------------------------
fromDate = input(title='Start Date', defval=defaultFromDate)
toDate   = input(title='End Date',   defval=defaultToDate)

// -------------------------------------------------------------------------
// Indicator settings & calculations
// -------------------------------------------------------------------------
smaLength = 20
emaLength = 21

source = close
sma    = ta.sma(source, smaLength)
ema    = ta.ema(source, emaLength)

// -------------------------------------------------------------------------
// Fetch weekly SMA & EMA
// -------------------------------------------------------------------------
outSma = request.security(syminfo.tickerid, 'W', sma, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
outEma = request.security(syminfo.tickerid, 'W', ema, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)

// -------------------------------------------------------------------------
// Plot visuals (20w SMA, 21w EMA, fill in between)
// -------------------------------------------------------------------------
smaPlot = plot(outSma, color=color.new(color.red,   0), title='20w SMA')
emaPlot = plot(outEma, color=color.new(color.green, 0), title='21w EMA')
fill(smaPlot, emaPlot, color=color.new(color.orange, 75), fillgaps=true)

// -------------------------------------------------------------------------
// We evaluate crossover/crossunder on *every bar* and store the result
// -------------------------------------------------------------------------
crossUp   = ta.crossover(outSma, outEma)
crossDown = ta.crossunder(outSma, outEma)

// -------------------------------------------------------------------------
// Trade logic: only operate within chosen date range
// Buy when outSma crosses above outEma; Sell (close) when outSma crosses below outEma
// -------------------------------------------------------------------------
inDateRange = true

if inDateRange
    // If we have a crossUp event on this bar, buy (go Long)
    if crossUp
        strategy.entry('Long', strategy.long)

    // If we have a crossDown event on this bar, sell (close Long)
    if crossDown
        strategy.close('Long')


관련

더 많은