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

이중 이동 평균 채널 트렌드 전략

저자:차오장, 날짜: 2024-09-26 16:28:19
태그:SMAEMARSIMACD

img

전반적인 설명

이 전략은 이중 이동 평균과 채널을 기반으로하는 트렌드 추적 시스템이다. 이 전략은 시장 트렌드를 파악하고 거래를 실행하기 위해 단기 및 장기 이동 평균에서 크로스오버 신호를 사용하여 기하급수적인 이동 평균 (EMA) 으로 구성된 채널과 결합합니다. 이 전략은 위험 및 수익 관리를 위해 스톱 로스 및 영리 메커니즘을 사용하여 장기 및 단기 양쪽에 적용됩니다.

전략 원칙

전략의 핵심 논리는 다음의 핵심 요소를 포함합니다.

  1. 두 개의 간단한 이동 평균 (SMA) 은 주요 트렌드 지표로 55주기 및 300주기 SMA입니다.
  2. 거래 채널을 형성하는 두 개의 기하급수적인 이동 평균 (EMA): 576주기 및 676주기 EMA.
  3. 긴 진입 신호는 단기 SMA가 장기 SMA 또는 EMA를 넘을 때 시작됩니다. 단기 SMA가 장기 SMA 또는 EMA를 넘을 때 짧은 진입 신호가 발생합니다.
  4. 고정점 스톱 로스 및 영업 전략, 스톱 로스는 입시 가격의 1/70에, 영업은 입시 가격의 1/140에 설정됩니다.
  5. 수익이 300포인트에 도달하면 마감 메커니즘이 활성화됩니다. 축적된 수익을 보호하기 위해서죠.
  6. 이 전략에는 자동적인 포지션 폐쇄와 같은 출구 조건이 포함됩니다. 가격이 스톱 로스 또는 영업 영업 수준에 도달하면 말이죠.

전략적 장점

  1. 다중 지표 통합: 여러 이동 평균과 EMA 채널을 결합하면 트렌드 식별 정확도가 향상됩니다.
  2. 양방향 거래: 이 전략은 자본 효율을 향상시키는 상승 및 하락 시장에서 모두 이익을 얻을 수 있습니다.
  3. 리스크 관리: 고정된 지점 스톱 로스 및 리프트를 사용하며 각 거래의 리스크를 효과적으로 제어합니다.
  4. 수익 보호: 지속적인 트렌드 중 부분 수익을 확보하기 위해 후속 정지 메커니즘을 사용합니다.
  5. 유연성: 전략 매개 변수는 다른 시장 조건에 적응할 수 있습니다.

전략 위험

  1. 시장 위험 범위: 옆 시장에서 빈번한 잘못된 신호는 연속적인 손실로 이어질 수 있습니다.
  2. 미끄러짐 위험: 매우 변동적인 시장에서 실제 실행 가격은 이상 가격에서 크게 벗어날 수 있습니다.
  3. 과잉 거래: 빈번한 거래 신호는 과도한 거래 비용을 초래할 수 있습니다.
  4. 매개 변수 민감성: 전략 성능은 매개 변수 설정에 매우 민감할 수 있으며, 다른 시장 환경에 따라 자주 조정해야 할 수 있습니다.

전략 최적화 방향

  1. 변동성 지표를 포함합니다: 시장 변동성에 적응하여 스톱 로스 및 영업 수준을 동적으로 조정하기 위해 ATR (평균 진실 범위) 를 추가하는 것을 고려하십시오.
  2. 트렌드 강도 필터링을 강화: ADX (평균 방향 지표) 를 도입하여 약한 트렌드 신호를 필터링하여 잘못된 브레이크로 인한 손실을 줄이십시오.
  3. 출입 시기를 최적화하십시오: 출입 시기를 개선하고 승률을 높이기 위해 RSI (비례 강도 지수) 또는 MACD (동도 평균 컨버전스 디버전스) 를 결합하는 것을 고려하십시오.
  4. 자금 관리 개선: 동적인 위치 크기를 구현하고 계정 자본과 시장 변동성에 따라 거래 크기를 조정합니다.
  5. 백테스트 기간을 연장: 다른 시장 환경에서 전략의 안정성을 확인하기 위해 장기 백테스트를 수행하십시오.

결론

이 이중 이동 평균 채널 트렌드 추적 전략은 여러 기술적 지표를 결합하여 포괄적인 거래 시스템을 제공합니다. 주요 트렌드를 포착 할뿐만 아니라 위험 관리 및 이익 보호 메커니즘을 통합합니다. 일부 잠재적 인 위험이 존재하지만 지속적인 최적화 및 매개 변수 조정으로 전략은 다양한 시장 조건에서 잘 수행 할 가능성이 있습니다. 미래 최적화는 신호 품질 향상, 위험 관리 강화 및 전략 적응력을 높이는 데 중점을 두어야합니다.


/*backtest
start: 2024-08-26 00:00:00
end: 2024-09-24 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RC BTC Vegas 5min free ", overlay=true )

// 定义输入参数
short_ma_length = input.int(55, title="Short MA Length")
long_ma_length = input.int(300, title="Long MA Length")

ema1_length = input.int(576, title="EMA 1 Length")
ema2_length = input.int(676, title="EMA 2 Length")
// 计算移动平均线 
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
// 确定买入和卖出信号 
enter_long = ta.crossover(short_ma +5 , ema1)
enter_long2 = ta.crossover(short_ma +5 , long_ma)
enter_long3 =ta.crossover(long_ma+5  , ema1)

exit_long = ta.crossunder(short_ma -5, ema1) 
exit_long2 = ta.crossunder(short_ma -5, long_ma) 
exit_long3 = ta.crossunder(long_ma-5 , ema1)

// 记录进场价格
var float long_stop_loss = na
var float long_take_profit = na

if (enter_long or exit_long  )
    long_stop_loss := close

if (enter_long or exit_long)
    long_take_profit := close

// 根据进场价格计算止损和止盈点数 
stop_loss_points = long_stop_loss /70
take_profit_points  = long_take_profit /140
// 设置固定点数的止损和止
Along_stop_loss = close - stop_loss_points
Along_take_profit = close + take_profit_points
short_stop_loss = close + stop_loss_points
short_take_profit = close - take_profit_points

// 检查持仓利润是否达到300点
long_profit_target_reached = (strategy.position_size > 0 and (close - strategy.position_avg_price) >= take_profit_points)
short_profit_target_reached = (strategy.position_size < 0 and (strategy.position_avg_price - close) >= take_profit_points)

// 即时止损和止盈检查
long_stop_loss_hit = (strategy.position_size > 0 and close <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit = (strategy.position_size > 0 and close >= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit = (strategy.position_size < 0 and close >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit = (strategy.position_size < 0 and close <= strategy.position_avg_price - take_profit_points)
// 上一根K棒的止盈止损检查
long_stop_loss_hit_prev = (strategy.position_size > 0 and low[1] <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit_prev = (strategy.position_size > 0 and high[1]>= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit_prev = (strategy.position_size < 0 and high[1] >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit_prev = (strategy.position_size < 0 and low[1] <= strategy.position_avg_price - take_profit_points)

// 创建警报条件
alertcondition(long_stop_loss_hit, title="Long Stop Loss Hit", message="Long position stop loss hit")
alertcondition(long_take_profit_hit, title="Long Take Profit Hit", message="Long position take profit hit")
alertcondition(short_stop_loss_hit, title="Short Stop Loss Hit", message="Short position stop loss hit")
alertcondition(short_take_profit_hit, title="Short Take Profit Hit", message="Short position take profit hit")
// 移动止损输入
initialProfitLevel = input.float(9, title="Initial Profit Level (points)")
trailingStopIncrement = input.float(3, title="Trailing Stop Increment (points)")
if (close - long_take_profit >= 150)
    strategy.exit("多單移平", from_entry="Buy", trail_price=close+5 , trail_offset=5  )
if (close - long_take_profit <= -150)
    strategy.exit("空單移平", from_entry="Sell", trail_price=close-5 , trail_offset=5)

// 执行多单交易
if (enter_long or enter_long2  )
    strategy.entry("Buy", strategy.long, qty=1 , comment = "做多")

if (long_stop_loss_hit or long_take_profit_hit  ) 
    strategy.close("Buy",comment = "多單平倉")
//死亡交叉才跟著做空就打開
if (exit_long  or exit_long2  )
    strategy.entry("Sell" ,strategy.short, qty=1 , comment = "做空")

// 执行空单交易
if ( short_take_profit_hit or short_stop_loss_hit ) 
    strategy.close("Sell",comment = "空單平倉")

// 绘制移动平均线
plot(short_ma, title="Short MA", color=color.blue)
plot(long_ma, title="Long MA", color=color.red)

// 绘制进场和出场点
plotshape(series=enter_long, location=location.belowbar, color=color.green, style=shape.labelup, text="做多")
plotshape(series=exit_long , location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") 
plotshape(series=long_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="多單止盈")  
plotshape(series=short_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="空單止盈") 
plotshape(series=short_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="空單止損") 
plotshape(series=long_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="多單止損") 
 
// 绘制止盈和止损点
plot(series=enter_long ? Along_take_profit : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)
plot(series=enter_long ? Along_stop_loss : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)


관련

더 많은