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

동적 이중 이동 평균 돌파구 거래 시스템

저자:차오장, 날짜: 2024-12-05 16:22:32
태그:EMASMA크로스

img

전반적인 설명

이 시스템은 이중 이동 평균 크로스오버를 기반으로 한 자동화된 거래 전략 시스템이다. 이 시스템은 9주기 및 21주기 기하급수적 이동 평균 (EMA) 을 핵심 지표로 활용하여 크로스오버를 통해 거래 신호를 생성한다. 스톱 로스 및 영업 관리와 함께 거래 신호와 주요 가격 수준을 표시하는 시각 인터페이스를 통합한다.

전략 원칙

이 전략은 빠른 EMA (9주기) 와 느린 EMA (21주기) 를 사용하여 거래 시스템을 구성합니다. 빠른 EMA가 느린 EMA를 넘을 때 긴 신호가 생성되며 빠른 EMA가 느린 EMA를 넘을 때 짧은 신호가 발생합니다. 시스템은 자동으로 각 거래에 대한 미리 설정된 비율에 따라 스톱 로스 및 영업 수준을 설정합니다. 포지션 사이징은 계정 자본의 100%로 기본 설정되어 비율 기반 접근 방식을 사용합니다.

전략적 장점

  1. 명확한 신호: 이동 평균 크로스오버를 명확하고 이해하기 쉬운 거래 신호로 사용합니다.
  2. 리스크 관리: 모든 거래에 대한 통합 스톱 로스 및 리프트 관리 시스템
  3. 시각 지원: 입시 시간, 가격, 스톱-러스 및 영리 수준을 표시하는 상표 표시를 제공합니다.
  4. 유연한 매개 변수: 다른 시장 조건에 적응하기 위해 EMA 기간 및 위험 관리 매개 변수를 조정할 수 있습니다.
  5. 완전 출구 메커니즘: 자동으로 포지션을 닫습니다.

전략 위험

  1. 부진 시장 위험: 부진 시장에서 빈번한 잘못된 파업 신호를 생성하여 연속적인 손실을 초래할 수 있습니다.
  2. 미끄러짐 위험: 높은 변동성 기간 동안 실제 실행 가격은 의도된 수준에서 벗어날 수 있습니다.
  3. 포지션 사이즈 리스크: 100%의 자금 할당이 실패하면 계좌가 과도한 위험에 노출될 수 있습니다.
  4. 신호 지연: EMA는 본질적으로 가격 동작에 지연하여 최적의 입구 지점을 놓치고 또는 지연된 출구를 유발할 수 있습니다.
  5. 단일 지표 의존성: 이동 평균 크로스오버에만 의존하면 다른 중요한 시장 정보를 무시할 수 있습니다.

최적화 방향

  1. 트렌드 확인 추가: 잘못된 신호를 필터하기 위해 ADX 또는 트렌드 강도 지표를 통합하는 것을 고려하십시오.
  2. 자금 관리 개선: 시장 변동성에 기반 한 동적 위치 크기를 추가
  3. 강화 된 스톱 손실 메커니즘: 수익을 더 잘 보호하기 위해 후속 스톱을 구현하는 것을 고려하십시오.
  4. 시장 환경 필터링: 불리한 조건에서 거래를 중단하기 위해 변동성 지표를 추가합니다.
  5. 신호 확인을 최적화: 부피 확인 또는 추가 기술 지표 추가를 고려하십시오.

요약

이것은 잘 설계된 논리적으로 건전한 이동 평균 크로스오버 전략 시스템이다. EMA 크로스오버 신호를 위험 관리 메커니즘과 결합함으로써 전략은 트렌딩 시장에서 이익을 얻을 수 있다. 내재적인 위험이 존재하지만 제안된 최적화는 전략의 안정성과 신뢰성을 더욱 향상시킬 수 있다. 이 전략은 중장기 트렌드를 추적하는 데 특히 적합하며 환자 거래자들에게 확실한 선택이다.


/*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
//
//  ██╗         █████╗         ██████╗     ██████╗     ██╗   ██╗    ██╗
//  ██║        ██╔══██╗       ██╔═══██╗    ██╔══██╗    ██║   ██║    ██║
//  ██║        ███████║       ██║   ██║    ██║  ██║    ██║   ██║    ██║
//  ██║        ██╔══██║       ██║   ██║    ██║  ██║    ██║   ██║    ██║
//  ███████╗   ██║  ██║       ╚██████╔╝    ██████╔╝    ╚██████╔╝    ██║
//  ╚══════╝   ╚═╝  ╚═╝        ╚═════╝     ╚═════╝      ╚═════╝     ╚═╝
//
//  BTC-EMA做多策略(5分钟确认版) - 作者:LAODUI
//  版本:2.0
//  最后更新:2024
// ═══════════════════════════════════════════════════════════════════════════

strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// 添加策略参数设置
var showLabels = input.bool(true, "显示标签", group="显示设置")
var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1, group="风险管理")
var takeProfitPercent = input.float(10.0, "止盈百分比", step=0.1, group="风险管理")

// EMA参数设置
var emaFastLength = input.int(9, "快速EMA周期", minval=1, maxval=200, group="EMA设置")
var emaSlowLength = input.int(21, "慢速EMA周期", minval=1, maxval=200, group="EMA设置")

// 计算EMA
ema_fast = ta.ema(close, emaFastLength)
ema_slow = ta.ema(close, emaSlowLength)

// 绘制EMA线
plot(ema_fast, "快速EMA", color=color.blue, linewidth=2)
plot(ema_slow, "慢速EMA", color=color.red, linewidth=2)

// 检测交叉
crossOver = ta.crossover(ema_fast, ema_slow)  
crossUnder = ta.crossunder(ema_fast, ema_slow)

// 格式化时间显示 (UTC+8)
utc8Time = time + 8 * 60 * 60 * 1000
timeStr = str.format("{0,date,MM-dd HH:mm}", utc8Time)

// 计算止损止盈价格
longStopLoss = strategy.position_avg_price * (1 - stopLossPercent / 100)
longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent / 100)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent / 100)
shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent / 100)

// 交易逻辑
if crossOver
    if strategy.position_size < 0  
        strategy.close("做空")     
    strategy.entry("做多", strategy.long)  
    if showLabels
        label.new(bar_index, high, text="做多入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(longStopLoss) + "\n止盈价: " + str.tostring(longTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar)

if crossUnder
    if strategy.position_size > 0  
        strategy.close("做多")     
    strategy.entry("做空", strategy.short)  
    if showLabels
        label.new(bar_index, low, text="做空入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(shortStopLoss) + "\n止盈价: " + str.tostring(shortTakeProfit), color=color.red, textcolor=color.white, style=label.style_label_up, yloc=yloc.belowbar)

// 设置止损止盈
if strategy.position_size > 0  // 多仓止损止盈
    strategy.exit("多仓止损止盈", "做多", stop=longStopLoss, limit=longTakeProfit)
    
if strategy.position_size < 0  // 空仓止损止盈
    strategy.exit("空仓止损止盈", "做空", stop=shortStopLoss, limit=shortTakeProfit) 

관련

더 많은