듀얼 타임 프레임 동적 지원 레벨 거래 시스템

SMA EMA
생성 날짜: 2024-12-05 16:44:56 마지막으로 수정됨: 2024-12-05 16:44:56
복사: 0 클릭수: 366
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

듀얼 타임 프레임 동적 지원 레벨 거래 시스템

개요

이 전략은 이중 시간 프레임에 기반한 동적 지지율 거래 시스템으로, 주경과 일계 시간 프레임에 SMA와 EMA 평행선과 결합된 교차 신호를 통해 거래한다. 시스템은 평행선 사이에 형성되는 지지율을 사용하여 시장 추세와 거래 기회를 식별하고, 두 개의 다른 시간 주기에서 신호를 확인함으로써 거래의 정확성을 높인다. 전략은 백분율 포지션 관리 방식을 채택하고 거래 비용과 미끄러짐 요소를 고려한다.

전략 원칙

전략의 핵심 원칙은 두 시간 동안의 평행선의 교차와 위치 관계를 모니터링하여 거래 신호를 결정하는 것입니다.

  1. 긴 주기 ((주기선) 은 20주 SMA와 21주 EMA를 사용하며, 짧은 주기 ((일기선) 은 50일 SMA와 51일 EMA를 사용한다.
  2. 긴 주기에서, EMA가 상향으로 SMA를 통과할 때 다중 신호를 생성하고, 하향으로 SMA를 통과할 때 평소 신호를 생성합니다.
  3. 짧은 주기에서, EMA가 상향으로 SMA를 통과하고 짧은 주기 EMA가 긴 주기 EMA 위에 있을 때 다중 신호가 생성된다.
  4. 단기 회기 하위 신호 또는 긴 회기 평균 회기 아래로 표시되면, 시스템은 모든 다중을 평행합니다.
  5. 전략은 지정된 시간 범위에서 작동하며, 자동 평지 범위를 초과합니다.

전략적 이점

  1. 다중 확인 메커니즘: 두 시간 주기의 신호 확인을 통해 가짜 신호의 영향을 줄인다
  2. 동적 지지대: 평평선 사이에 형성된 지지대들은 시장의 변화에 동적으로 적응할 수 있다
  3. 리스크 관리: 거래 비용과 슬라이드 포인트를 고려하여 퍼센티지 포지션 관리를 사용합니다.
  4. 자기 적응력: 시장의 변동에 따라 지지를 자동으로 조정합니다.
  5. 운영 규칙이 명확하다: 입출장 조건이 명확하고 실행 및 재검토가 쉽다.

전략적 위험

  1. 변동 시장의 위험: 변동 시장에서 빈번한 잘못된 신호가 발생할 수 있습니다.
  2. 지연의 위험: 평균선 지표 자체는 지연성이 있으며, 최적의 진입 지점을 놓칠 수 있습니다.
  3. 매개 변수 민감성: 평균선 주기 선택이 전략 성과에 큰 영향을 미칩니다.
  4. 시장 환경 의존성: 전략은 추세 시장에서 잘 작동하지만, 급격한 변동 시장에서는 좋지 않을 수 있습니다.
  5. 자금 관리 위험: 고정 비율 지점은 특정 시장 조건에서 너무 위험 할 수 있습니다.

전략 최적화 방향

  1. 변동성 지표를 도입: ATR과 같은 변동성 지표를 추가하여 포지션 크기를 동적으로 조정하는 것을 고려하십시오.
  2. 최적화 매개 변수 선택: 서로 다른 시간 주기에서의 평균선 매개 변수를 재검토하여 시스템의 성능을 최적화할 수 있다
  3. 시장 환경 필터를 추가합니다: 부적절한 시장 환경을 필터링하는 경향 강도 지표를 추가합니다.
  4. 손해제도 개선: 위험을 더 제어하기 위해 이동형 손해제도 또는 고정된 손해제도를 추가하는 것을 고려하십시오.
  5. 최적화된 포지션 관리: 신호 강도 및 시장 변동에 따라 포지션 크기를 동적으로 조정할 수 있습니다.

요약하다

이 전략은 서로 다른 시간 주기에서 일률적인 교차 신호를 결합하여 비교적 안정적인 거래 시스템을 구축한다. 지지대 개념으로 시장 추세를 인식하고, 여러 확인 메커니즘을 사용하여 거래의 정확성을 향상시킨다. 전략의 설계는 거래 비용, 슬라이드 및 시간 관리 등 실제 거래의 다양한 요소를 고려한다. 일부 고유한 위험이 있지만, 최적화 방향을 제공함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Bull Market Support Band", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

start_date = input(timestamp("2018-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2069-12-31 00:00 +0000"), title="End Date")

lsmaLength = input.int(20, title="Long SMA Length", minval=1)
lemaLength = input.int(21, title="Long EMA Length", minval=1)
customLongTimeframe = input.timeframe("W", title="Long Timeframe")  // Khung thời gian dài
ssmaLength = input.int(50, title="Short SMA Length", minval=1)
semaLength = input.int(51, title="Short EMA Length", minval=1)
customShortTimeframe = input.timeframe("D", title="Short Timeframe")  // Khung thời gian ngắn

source = close

// Tính toán SMA và EMA cho khung thời gian dài
smaLong = ta.sma(source, lsmaLength)
emaLong = ta.ema(source, lemaLength)
outSmaLong = request.security(syminfo.tickerid, customLongTimeframe, smaLong)
outEmaLong = request.security(syminfo.tickerid, customLongTimeframe, emaLong)

// Tính toán SMA và EMA cho khung thời gian ngắn
smaShort = ta.sma(source, ssmaLength)
emaShort = ta.ema(source, semaLength)
outSmaShort = request.security(syminfo.tickerid, customShortTimeframe, smaShort)
outEmaShort = request.security(syminfo.tickerid, customShortTimeframe, emaShort)

// Plot các chỉ báo trên biểu đồ
smaPlotLong = plot(outSmaLong, color=color.new(color.red, 0), title='20w SMA (Long)')
emaPlotLong = plot(outEmaLong, color=color.new(color.green, 0), title='21w EMA (Long)')
smaPlotShort = plot(outSmaShort, color=color.new(color.red, 0), title='20d SMA (Short)')
emaPlotShort = plot(outEmaShort, color=color.new(color.green, 0), title='21d EMA (Short)')

// Fill vùng giữa các đường SMA và EMA
fill(smaPlotLong, emaPlotLong, color=color.new(color.orange, 75), fillgaps=true)
fill(smaPlotShort, emaPlotShort, color=color.new(color.orange, 75), fillgaps=true)

// Điều kiện long và short cho khung thời gian dài
longConditionLong = ta.crossover(outEmaLong, outSmaLong)
shortConditionLong = ta.crossunder(outEmaLong, outSmaLong)

// Điều kiện long và short cho khung thời gian ngắn
longConditionShort = ta.crossover(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong)
shortConditionShort = ta.crossunder(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong) // Điều kiện short khi EMA ngắn hạn cắt xuống dưới SMA ngắn hạn và EMA ngắn hạn cao hơn EMA dài hạn

// Kiểm tra điều kiện trong khoảng thời gian được chỉ định
inDateRange = true

// Nếu khung ngắn hạn xuất hiện tín hiệu short, ưu tiên đóng tất cả các lệnh Long
if shortConditionShort and inDateRange
    strategy.close_all()

// Nếu khung dài có tín hiệu short, đóng tất cả các lệnh Long
if shortConditionLong and inDateRange
    strategy.close_all()

// Nếu khung ngắn hạn có tín hiệu long và không có tín hiệu short từ khung dài, vào lệnh Long
if longConditionShort and not shortConditionLong and not shortConditionShort and inDateRange
    strategy.entry("Long", strategy.long)

// Đóng tất cả các lệnh khi không trong khoảng thời gian được chọn
if not inDateRange
    strategy.close_all()