타겟/스톱 로스 비율과 고정 포지션 크기와 함께 EMA 크로스오버 전략

저자:차오장, 2024-03-28 18:04:32 날짜
태그:

img

전반적인 설명

이 전략은 빠른 및 느린 기하급수적 이동 평균 (EMA) 의 교차에 기반한 거래 전략이다. 빠른 EMA가 느린 EMA를 넘을 때 전략은 긴 거래에 들어가고 빠른 EMA가 느린 EMA를 넘을 때 전략은 짧은 거래에 들어간다. 전략은 스톱 로스 및 영리 가격을 계산하기 위해 목표 / 스톱 로스 비율을 사용하고 각 거래에 고정된 위치 크기를 사용합니다.

전략 원칙

이 전략의 주요 원리는 가격 트렌드의 변화를 포착하기 위해 서로 다른 기간을 가진 두 개의 EMA를 사용하는 것입니다. 빠른 EMA가 느린 EMA를 넘을 때 일반적으로 가격 트렌드의 변화를 나타냅니다. 구체적으로 빠른 EMA가 아래에서 느린 EMA를 넘을 때 가격이 상승 추세를 시작할 수 있음을 암시하며 전략은 긴 거래에 들어갈 것입니다. 빠른 EMA가 위에서 느린 EMA를 넘을 때 가격이 하락 추세를 시작할 수 있음을 암시하며 전략은 짧은 거래에 들어갈 것입니다.

이 전략은 또한 각 거래에 대한 스톱 로스 및 토프 로프 가격을 계산하기 위해 타겟/스토프 로스 비율의 개념을 도입합니다. 스톱 로스 가격은 평균 엔트리 가격을 (1 - 타겟/스토프 로스 비율) 로 곱하여 얻을 수 있으며, 토프 로프 가격은 평균 엔트리 가격을 (1 + 타겟/스토프 로스 비율) 로 곱하여 얻을 수 있습니다. 이 접근법은 위험 선호도에 따라 스톱 로스 및 토프 로프 수준을 동적으로 조정 할 수 있습니다.

또한, 전략은 각 거래에 대해 고정된 포지션 크기를 사용합니다. 즉, 각 거래에 대한 자금액은 고정되어 있으며 계좌 잔액 또는 다른 요인에 따라 조정되지 않습니다. 이것은 위험을 제어하고 전략의 일관성을 유지하는 데 도움이됩니다.

전략적 장점

  1. 단순하고 효과적: 전략은 EMA 크로스오버의 고전적 원리에 기반하고 있으며, 이는 가격 동향의 변화를 효과적으로 포착하면서 이해하기 쉽고 구현하기 쉽습니다.

  2. 동적 스톱 로스 및 트레이프: 목표/스톱 로스 비율을 도입함으로써 전략은 위험 선호도에 따라 동적으로 스톱 로스 및 트레이프 로프 수준을 조정할 수 있으며, 전략의 유연성과 적응성을 향상시킵니다.

  3. 리스크 제어: 각 거래에 고정된 포지션 크기를 사용함으로써 전략은 각 거래의 리스크 노출을 제어하고 전체 계정의 리스크를 줄이는 데 도움이됩니다.

  4. 광범위한 적용 가능성: 전략은 주식, 선물 및 외환과 같은 다양한 금융 시장 및 거래 도구에 적용 될 수 있으므로 광범위하게 적용됩니다.

전략 위험

  1. 매개 변수 민감성: 전략의 성능은 빠른 EMA와 느린 EMA의 기간과 같은 EMA 매개 변수 선택에 달려 있습니다. 다른 매개 변수 조합은 전략 성능에 상당한 차이를 초래할 수 있으므로 신중한 최적화 및 매개 변수 테스트가 필요합니다.

  2. 과잉 최적화 위험: 전략 매개 변수가 과도하게 최적화되면 표본 외의 데이터에서 성능이 떨어질 수 있습니다. 따라서 전략의 견고성을 보장하기 위해 포괄적 인 백테스팅과 전향 테스트가 필요합니다.

  3. 시장 위험: 전략의 성과는 시장 추세와 변동성에 영향을 받는다. 불안정하거나 추세 없는 시장에서 전략은 더 많은 잘못된 신호를 생성하여 빈번한 거래와 자본 손실로 이어질 수 있습니다.

  4. 블랙 스완 이벤트: 전략은 극심한 시장 이벤트 (금융 위기 또는 지정학적 갈등과 같은) 에 적응력이 떨어질 수 있습니다.

전략 최적화 방향

  1. 동적 매개 변수 최적화: 시장 조건 또는 가격 변동성 특성에 따라 동적으로 EMA 기간 매개 변수를 조정하는 것을 고려하여 다른 시장 환경에 적응 할 수 있습니다. 시장 상태 판단 지표 또는 변동성 지표를 도입하여 달성 할 수 있습니다.

  2. 신호 필터링: EMA 크로스오버 신호 외에도 신호를 필터링하고 신호 신뢰성과 정확성을 향상시키기 위해 다른 기술 지표 또는 시장 정보를 도입하십시오. 예를 들어 볼륨, 추진력 지표 또는 시장 정서 지표가 포함될 수 있습니다.

  3. 포지션 관리 최적화: 고정된 포지션 크기를 사용하는 대신 시장 위험 조건 또는 개인 위험 선호도에 따라 거래 포지션 크기를 동적으로 조정하는 것을 고려하십시오. 이것은 위험 관리 모델 또는 자금 관리 규칙을 도입함으로써 달성 될 수 있습니다.

  4. 긴 짧은 헤지: 시장 중립 포트폴리오를 구축하기 위해 장기 및 짧은 포지션을 동시에 보유하는 것을 고려하여 시장 위험을 줄이고 전략 안정성을 향상시킵니다.

요약

이 전략은 EMA 크로스오버의 원리에 기반한 트렌드-추천 전략으로, 목표/스톱-러스 비율과 고정된 포지션 크기 메커니즘을 도입함으로써 위험을 제어하면서 가격 트렌드를 포착합니다. 전략의 장점은 단순성, 효과성, 동적 스톱-러스 및 영리 및 광범위한 적용 가능성에 있습니다. 그러나, 또한 매개 변수 민감성, 과잉 최적화 위험 및 시장 위험과 같은 과제와 대면합니다. 미래에, 전략은 동적 매개 변수 최적화, 신호 필터링, 포지션 관리 최적화 및 장기 단기 헤지링의 측면에서 개선 될 수 있습니다.


/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KarthicSRSivagnanam

//@version=5
strategy("EMA Crossover Strategy with Target/Stop-loss Ratio and Fixed Position Size", shorttitle="EMA Cross", overlay=true)

// Define input variables
fast_length = input(20, title="Fast EMA Length")
slow_length = input(50, title="Slow EMA Length")
ema_color = input(color.red, title="EMA Color")
target_ratio = input(2, title="Target/Stop-loss Ratio")
position_size = input(1, title="Fixed Position Size (Rs.)")

// Calculate EMAs
ema_fast = ta.ema(close, fast_length)
ema_slow = ta.ema(close, slow_length)

// Plot EMAs
plot(ema_fast, color=ema_color, title="Fast EMA")
plot(ema_slow, color=color.blue, title="Slow EMA")

// Long entry condition: Fast EMA crosses above Slow EMA
longCondition = ta.crossover(ema_fast, ema_slow)

// Short entry condition: Fast EMA crosses below Slow EMA
shortCondition = ta.crossunder(ema_fast, ema_slow)

// Calculate stop-loss and target levels
stopLoss = strategy.position_avg_price * (1 - target_ratio / 100)
takeProfit = strategy.position_avg_price * (1 + target_ratio / 100)

// Plot stop-loss and target levels
plot(stopLoss, color=color.red, title="Stop Loss")
plot(takeProfit, color=color.green, title="Take Profit")

// Entry conditions with fixed position size
if (longCondition)
    strategy.entry("Long", strategy.long, qty = position_size)
    
if (shortCondition)
    strategy.entry("Short", strategy.short, qty = position_size)

// Plot entry signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)




더 많은