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

다중 EMA 크로스오버와 카마릴라 지지/저항 트렌드 거래 시스템

저자:차오장, 날짜: 2025-01-06 11:13:31
태그:EMA심폐소생술SR

img

전반적인 설명

이 전략은 다수의 기하급수적인 이동 평균 (EMA), 카마릴라 지지/저항 수준, 중앙 회전 범위 (CPR) 를 결합한 트렌드 다음 거래 시스템이다. 이 시스템은 여러 이동 평균과 주요 가격 영역과의 가격 관계를 분석하여 시장 추세와 잠재적 거래 기회를 식별한다. 이 시스템은 비율 기반 포지션 사이징과 다양한 출구 메커니즘을 포함한 엄격한 돈 관리 및 위험 통제 조치를 구현한다.

전략 원칙

이 전략은 몇 가지 핵심 요소를 기반으로 합니다.

  1. 트렌드 방향 및 강도 확인을 위한 다중 EMA 시스템 (20/50/100/200)
  2. 주요 가격 수준을 식별하기 위한 Camarilla 지원/저항 수준 (R3/S3)
  3. 내일 거래 범위를 결정하기 위한 중앙 피보트 범위 (CPR)
  4. EMA200 및 EMA20 확인과 함께 가격 크로스오버에 기반한 엔트리 신호
  5. 고정점과 비율 이동 모드를 포함한 출구 전략
  6. 계좌 크기에 따라 포지션 크기를 동적으로 조정하는 금전 관리 시스템

전략적 장점

  1. 다차원 기술 지표의 통합은 더 신뢰할 수 있는 거래 신호를 제공합니다.
  2. 유연한 출구 메커니즘은 다른 시장 조건에 적응합니다.
  3. 포괄적 인 돈 관리 시스템은 위험을 효과적으로 제어합니다.
  4. 트렌드 추후 특성은 주요 시장 움직임을 파악하는 데 도움이됩니다.
  5. 시각화 구성 요소는 거래자가 시장 구조를 이해하는 데 도움이됩니다.

전략 위험

  1. 다양한 시장에서 잘못된 신호를 생성할 수 있습니다.
  2. 여러 가지 지표가 뒤떨어진 거래 신호로 이어질 수 있습니다.
  3. 고정 출구점은 높은 변동성 시장에서 낮은 성과를 낼 수 있습니다.
  4. 소모에 견딜 수 있는 상당한 자본이 필요합니다.
  5. 거래 비용은 전체 전략 수익에 영향을 줄 수 있습니다.

전략 최적화 방향

  1. 유동성 지표를 도입하여 입력/출출 매개 변수를 동적으로 조정
  2. 다른 시장 조건에 적응하기 위해 시장 상태 식별 모듈을 추가합니다.
  3. 동적 위치 관리로 자금 관리 시스템을 최적화
  4. 신호 품질을 향상시키기 위해 거래 시간 필터를 추가
  5. 신호 신뢰성을 높이기 위해 볼륨 분석을 추가하는 것을 고려하십시오.

요약

이 전략은 완전한 거래 시스템을 구축하기 위해 여러 가지 고전적인 기술 분석 도구를 통합합니다. 이 전략의 강점은 다차원 시장 분석과 엄격한 위험 관리에 있으며, 다른 시장 환경에서 적응력에주의를 기울여야합니다. 지속적인 최적화와 개선을 통해 전략은 안정성을 유지하면서 수익성을 향상시킬 수 있습니다.


/*backtest
start: 2020-01-06 00:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pradeep Crude oil Entry and Exit", overlay=true)

// Input settings for EMAs
ema20_period = input.int(20, title="EMA 20 Period")
ema50_period = input.int(50, title="EMA 50 Period")
ema100_period = input.int(100, title="EMA 100 Period")
ema200_period = input.int(200, title="EMA 200 Period")

// Fixed line width settings for EMAs
ema20_width = 2  // EMA 20 Line Width
ema50_width = 2  // EMA 50 Line Width
ema100_width = 3 // EMA 100 Line Width
ema200_width = 4 // EMA 200 Line Width

// Backtesting inputs
initial_capital = input.float(50000, title="Initial Capital", minval=100)
position_size_percent = input.float(100, title="Position Size (% of Capital)", minval=0.1, maxval=100)
exit_mode = input.string("Price Movement", title="Exit Mode", options=["Price Movement", "Percentage Movement"])
exit_points = input.int(20, title="Exit After X Points", minval=1)
exit_percentage = input.float(1.0, title="Exit After X% Movement", minval=0.1, step=0.1)

// Calculate EMAs
ema20 = ta.ema(close, ema20_period)
ema50 = ta.ema(close, ema50_period)
ema100 = ta.ema(close, ema100_period)
ema200 = ta.ema(close, ema200_period)

// Signal conditions
long_entry_condition = close > ema200 and close > ema20 and close[1] <= ema200
long_exit_condition = (exit_mode == "Price Movement" and close - strategy.position_avg_price >= exit_points * syminfo.mintick) or 
                      (exit_mode == "Percentage Movement" and (close - strategy.position_avg_price) / strategy.position_avg_price * 100 >= exit_percentage)
short_entry_condition = close < ema200 and close < ema20 and close[1] >= ema200
short_exit_condition = (exit_mode == "Price Movement" and strategy.position_avg_price - close >= exit_points * syminfo.mintick) or 
                       (exit_mode == "Percentage Movement" and (strategy.position_avg_price - close) / strategy.position_avg_price * 100 >= exit_percentage)

// Plot EMAs with specified line widths
plot(ema20, color=color.green, title="EMA 20", linewidth=ema20_width)
plot(ema50, color=color.aqua, title="EMA 50", linewidth=ema50_width)
plot(ema100, color=color.blue, title="EMA 100", linewidth=ema100_width)
plot(ema200, color=color.red, title="EMA 200", linewidth=ema200_width)

// Camarilla Pivot Calculation
prev_high = request.security(syminfo.tickerid, "D", high[1])
prev_low = request.security(syminfo.tickerid, "D", low[1])
prev_close = request.security(syminfo.tickerid, "D", close[1])

R3 = prev_close + (prev_high - prev_low) * 1.1 / 2
S3 = prev_close - (prev_high - prev_low) * 1.1 / 2

// Central Pivot Range (CPR) Calculation
pivot = (prev_high + prev_low + prev_close) / 3
upper_cpr = pivot + (prev_high - prev_low)
lower_cpr = pivot - (prev_high - prev_low)

// Plot Camarilla R3, S3 and CPR levels
plot(R3, color=color.purple, title="Camarilla R3", linewidth=2)
plot(S3, color=color.purple, title="Camarilla S3", linewidth=2)
plot(pivot, color=color.yellow, title="CPR Pivot", linewidth=2)
plot(upper_cpr, color=color.green, title="CPR Upper", linewidth=1)
plot(lower_cpr, color=color.red, title="CPR Lower", linewidth=1)

// Backtesting: Capital and position size
capital = initial_capital
risk_per_trade = (position_size_percent / 100) * capital

// Long positions
if long_entry_condition
    strategy.entry("Long", strategy.long, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

if long_exit_condition
    strategy.close("Long")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Short positions
if short_entry_condition
    strategy.entry("Short", strategy.short, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

if short_exit_condition
    strategy.close("Short")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

// Plot signals
plotshape(long_entry_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Long Entry")
plotshape(long_exit_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Long Exit")
plotshape(short_entry_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Short Entry")
plotshape(short_exit_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Short Exit")




관련

더 많은