EMA100과 NUPL 상대 미실현 이익 양적 거래 전략

EMA
생성 날짜: 2024-06-17 14:55:13 마지막으로 수정됨: 2024-06-17 14:55:13
복사: 0 클릭수: 575
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

EMA100과 NUPL 상대 미실현 이익 양적 거래 전략

개요

이 거래 전략은 100주기 지수 이동 평균 ((EMA100), 당기기 흑자/손실 ((NUPL) 과 상대적으로 흑자 3가지 지표에 기초하여 가격과 EMA100의 교차와 NUPL와 상대적으로 흑자 2가지의 마이너스를 판단하여 거래 신호를 생성한다. 가격이 EMA100을 넘어서서 NUPL과 상대적으로 흑자 2가지가 양호할 때 다중 신호를 유발한다. 가격이 EMA100을 넘어서서 NUPL과 상대적으로 흑자 2가지가 마이너스할 때 공백 신호를 유발한다. 이 전략은 10%의 고정 지위를 취하고 10%의 스톱 손실을 설정한다.

전략 원칙

  1. 100주기 EMA를 주요 동향 판단 지표로 계산
  2. 동향의 강도와 지속성을 확인하기 위해 NUPL과 상대적으로 실현되지 않은 수익을 보조 지표로 사용합니다.
  3. 가격 상위/하위 EMA100을 통과하는 동시에, NUPL과 상대적으로 실현되지 않은 수익은 동시에 긍정/비효 시점에 대여/대여 신호를 생성합니다.
  4. 10%의 고정 포지션을 사용하고 10%의 스톱로스를 설정하여 위험을 제어합니다.
  5. 상장 포지션을 보유할 때, 가격이 스톱로스 가격을 넘으면 상장 포지션을 청산합니다. 상장 포지션을 보유할 때, 가격이 스톱로스 가격을 넘으면 상장 포지션을 청산합니다.

우위 분석

  1. 간단하고 이해하기 쉬운: 전략의 논리는 명확하고, 일반적인 기술 지표를 사용하여 이해하기 쉽고 구현됩니다.
  2. 트렌드 추적: EMA100을 통해 주요 트렌드를 포착하여 트렌드 시장에서 사용할 수 있습니다.
  3. 위험 제어: 고정 위치와 손실을 설정하여 위험을 효과적으로 제어 할 수 있습니다.
  4. 유연성: 이 전략은 다양한 시장과 거래 기준에 적용할 수 있습니다.

위험 분석

  1. 가짜 신호: 불안한 시장에서 EMA100과 자주 교차하는 것은 손실을 초래하는 가짜 신호를 더 많이 생성할 수 있습니다.
  2. 지연성: 지연된 지표로서의 EMA, 트렌드 회전 시에는 느리게 반응하고, 최적의 출장 시기를 놓칠 수 있다
  3. 매개 변수 최적화: 전략 매개 변수 (EMA 주기, 포지션 크기, 스톱 리스 등) 는 시장에 따라 최적화되어야 하며, 부적절한 매개 변수는 전략의 효과가 떨어질 수 있습니다.

최적화 방향

  1. 변수 최적화: EMA 주기, 포지션 크기, 스로프 비율과 같은 변수를 최적화하여 전략 성능을 향상시킵니다.
  2. 필터 신호: 다른 기술 지표 또는 시장 감정 지표를 추가하여 가짜 신호를 필터링합니다.
  3. 역동적인 포지션 관리: 시장의 변동성, 계좌의 적자 등에 따라 포지션을 동적으로 조정하여 수익을 높이고 위험을 제어합니다.
  4. 다중 포트폴리오: 동시에 다중 및 공수 포지션을 보유, 시장 위험을 헤지, 전략적 안정성을 향상

요약하다

이 거래 전략은 EMA100, NUPL 및 상대적으로 수익이 달성되지 않은 세 가지 지표를 통해 거래 신호를 생성하며, 논리적으로 명확하고, 위험을 제어할 수 있으며, 적응력이 강하다는 장점이 있습니다. 또한 가짜 신호, 지연성 및 변수 최적화와 같은 위험이 있습니다. 향후에는 변수 최적화, 신호 필터링, 동적 포지션 관리 및 다중 공간 조합과 같은 방법으로 전략을 최적화하고 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Scalping Strategy with EMA 100, NUPL, and Relative Unrealized Profit", overlay=true)

// Input for EMA period
emaPeriod = input.int(100, title="EMA Period", minval=1)
ema100 = ta.ema(close, emaPeriod)
plot(ema100, color=color.blue, title="EMA 100")

// Placeholder function for NUPL (Net Unrealized Profit/Loss)
// Replace this with actual NUPL data or calculation
NUPL = close * 0.0001 // Dummy calculation

// Placeholder function for relative unrealized profit
// Replace this with actual relative unrealized profit data or calculation
relativeUnrealizedProfit = close * 0.0001 // Dummy calculation

// Define conditions for long and short entries
longCondition = ta.crossover(close, ema100) and NUPL > 0 and relativeUnrealizedProfit > 0
shortCondition = ta.crossunder(close, ema100) and NUPL < 0 and relativeUnrealizedProfit < 0

// Plot buy and sell signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")

// Calculate stop loss levels
longStopLoss = close * 0.90
shortStopLoss = close * 1.10

// Strategy entry and exit rules
if (longCondition)
    strategy.entry("Long", strategy.long, stop=longStopLoss)

if (shortCondition)
    strategy.entry("Short", strategy.short, stop=shortStopLoss)

// Set stop loss levels for active positions
if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=longStopLoss)
if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=shortStopLoss)

// Alerts for long and short entries
alertcondition(longCondition, title="Long Entry Alert", message="Long entry signal based on EMA 100, NUPL, and relative unrealized profit")
alertcondition(shortCondition, title="Short Entry Alert", message="Short entry signal based on EMA 100, NUPL, and relative unrealized profit")

// Visualize the entry conditions
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.cross, title="Long Condition")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.cross, title="Short Condition")