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

기하급수적인 이동평균 크로스오버 레버리지 전략

저자:차오장, 날짜: 2024-04-30 16:26:37
태그:MATICEMAMA

img

전반적인 설명

이 전략은 거래 신호를 생성하기 위해 20일 및 55일 기하급수적 이동 평균 (EMA) 의 크로스오버를 사용합니다. 단기 EMA가 장기 EMA를 넘을 때 구매 신호가 트리거되고 반대로 발생하면 판매 신호가 트리거됩니다. 이 전략은 또한 잠재적인 수익과 위험을 증폭시키는 레버리지 거래를 도입합니다. 또한, 이 전략에는 잘못된 신호의 위험을 줄이기 위해 크로스오버 후에 가격이 단기 EMA에 닿을 때만 입장을 허용하는 조건 제한이 포함되어 있습니다. 마지막으로 사용자는 EMA 대신 간단한 이동 평균 (SMA) 을 사용할 수 있습니다.

전략 원칙

  1. 20일 및 55일 EMA (또는 SMA) 를 계산합니다.
  2. 단기 EMA가 장기 EMA를 넘어가는지 여부를 결정합니다. 만약 사실이라면 readyToEnter 변수를 true로 설정하여 포지션에 들어갈 준비가 있음을 나타냅니다.
  3. 만약 readyToEnter가 true이고 가격이 단기 EMA에 닿으면 구매 주문을 실행하고 readyToEnter를 false로 리셋합니다.
  4. 단기 EMA가 장기 EMA 아래로 넘어가면 포지션을 닫습니다.
  5. 레버리지 매개 변수에 따라 포지션 크기를 설정합니다.
  6. 전략은 사용자 정의 백테스팅 기간 내에만 실행합니다.

전략적 장점

  1. 이동평균 크로스오버는 대부분의 시장에 적합한 경향을 결정하는 간단하고 사용하기 쉬운 방법입니다.
  2. 레버리지 트레이딩을 도입하면 수익률을 높일 수 있습니다.
  3. 조건부 제한을 추가하면 잘못된 신호의 위험이 감소합니다.
  4. EMA와 SMA를 선택할 수 있도록 하는 것은 사용자들의 선호도에 맞습니다.
  5. 코드 구조는 명확하고 이해하기 쉽고 수정 할 수 있습니다.

전략 위험

  1. 레버리지 거래는 위험을 증가시킵니다 판단이 잘못되면 상당한 손실이 발생할 수 있습니다.
  2. 이동 평균 크로스오버는 지연 효과를 가지고 있으며 최고의 진입 기회를 놓칠 수 있습니다.
  3. 명확한 트렌드가 있는 시장에만 적합합니다. 시장이 변동적이면 높은 거래 수수료를 초래하는 빈번한 거래가 발생할 수 있습니다.

전략 최적화 방향

  1. 이동 평균 기간을 최적화하여 현재 시장에 가장 적합한 매개 변수를 찾으십시오.
  2. 다른 지표, 예를 들어 RSI와 MACD를 도입하여 트렌드를 포괄적으로 판단하고 승률을 향상시킵니다.
  3. 단일 거래 위험을 통제하기 위해 스톱 로스 및 수익을 취하는 수준을 설정합니다.
  4. 시장 변동성에 따라 레버리지 크기를 동적으로 조정하고, 변동성이 낮을 때 레버리지를 증가시키고, 변동성이 높을 때 레버리지를 감소시킵니다.
  5. 기계 학습 알고리즘을 도입하여 매개 변수를 적응적으로 최적화합니다.

요약

이 전략은 이동 평균 크로스오버와 레버리지 거래를 결합하여 수익을 증폭시키는 동시에 시장 추세를 파악합니다. 그러나 레버리지는 또한 높은 위험을 초래하고 신중하게 사용해야합니다. 또한 더 많은 지표, 역동적으로 매개 변수를 조정하는 등으로 달성 할 수있는 이 전략의 최적화에 여지가 있습니다. 전반적으로이 전략은 높은 수익을 추구하고 높은 위험을 감수 할 수있는 거래자에게 적합합니다.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy with Leverage, Conditional Entry, and MA Option", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs for backtesting period
startDate = input(defval=timestamp("2023-01-01"), title="Start Date")
endDate = input(defval=timestamp("2024-04-028"), title="End Date")

// Input for leverage multiplier
leverage = input.float(3.0, title="Leverage Multiplier", minval=1.0, maxval=10.0, step=0.1)

// Input for choosing between EMA and MA
useEMA = input.bool(true, title="Use EMA (true) or MA (false)?")

// Input source and lengths for MAs
src = close
ema1_length = input.int(20, title='EMA/MA-1 Length')
ema2_length = input.int(55, title='EMA/MA-2 Length')

// Calculate the MAs based on user selection
pema1 = useEMA ? ta.ema(src, ema1_length) : ta.sma(src, ema1_length)
pema2 = useEMA ? ta.ema(src, ema2_length) : ta.sma(src, ema2_length)

// Tracking the crossover condition for strategy entry
crossedAbove = ta.crossover(pema1, pema2)

// Define a variable to track if a valid entry condition has been met
var bool readyToEnter = false

// Check for MA crossover and update readyToEnter
if (crossedAbove)
    readyToEnter := true

// Entry condition: Enter when price touches MA-1 after the crossover // and (low <= pema1 and high >= pema1)
entryCondition = readyToEnter

// Reset readyToEnter after entry
if (entryCondition)
    readyToEnter := false

// Exit condition: Price crosses under MA-1
exitCondition = ta.crossunder(pema1, pema2)

// Check if the current bar's time is within the specified period
inBacktestPeriod = true

// Execute trade logic only within the specified date range and apply leverage to position sizing
if (inBacktestPeriod)
    if (entryCondition)
        strategy.entry("Long", strategy.long, qty=strategy.equity * leverage / close)
    if (exitCondition)
        strategy.close("Long")


// Plotting the MAs for visual reference
ema1_color = pema1 > pema2 ? color.red : color.green
ema2_color = pema1 > pema2 ? color.red : color.green
plot(pema1, color=ema1_color, style=plot.style_line, linewidth=1, title='EMA/MA-1')
plot(pema2, color=ema2_color, style=plot.style_line, linewidth=1, title='EMA/MA-2')


관련

더 많은