이 전략은 EMA23와 EMA50의 교차 신호를 기반으로 거래합니다. EMA23가 EMA50를 넘을 때 구매 신호를 생성하고, 이보다 낮을 때 판매 신호를 생성합니다. 이 전략은 또한 가격이 EMA50 이하로 떨어지면 긴 포지션과 가격이 EMA50 이상으로 상승하면 짧은 포지션에 대한 스톱 로스를 구현합니다. 또한, 이 전략은 가격이 EMA50를 넘어서면 시장에 다시 진출합니다. 이 전략은 30 분 시간 틀에 적합합니다.
이 전략은 EMA23 및 EMA50이라는 두 이동 평균의 교차를 기반으로 한 양적 거래 전략이다. 교차 신호를 통해 트렌드를 캡처하고 위험을 제어하고 수익 잠재력을 높이기 위해 스톱 로스 및 재입구 메커니즘을 구현합니다. 전략은 간단하고 이해하기 쉽습니다. 30 분 시간 프레임에서 중장기 및 단기 거래에 적합합니다. 그러나 전략에는 추세 식별, 서브 최적 스톱 로스 배치 및 범위 시장에서 낮은 성과와 같은 일부 제한이 있습니다. 미래에 더 많은 기술적 지표를 도입하고, 스톱 로스 포지션을 최적화하고, 거래 주파수를 제어하고, 트렌딩과 범위 시장의 차이를 구분하고, 더 강력한 수익을 달성하기 위해 동적 인 수익 수준을 구현하여 전략을 최적화 할 수 있습니다.
/*backtest start: 2023-04-20 00:00:00 end: 2024-04-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy", overlay=true) // EMA 23 ve EMA 50'nin hesaplanması ema23 = ta.ema(close, 23) ema50 = ta.ema(close, 50) // Ana alım kuralı: EMA 23 ve EMA 50'nin yukarı kesilmesi buySignal = ta.crossover(ema23, ema50) // Ana satış kuralı: EMA 23 ve EMA 50'nin aşağı kesilmesi sellSignal = ta.crossunder(ema23, ema50) // Long pozisyon stop seviyesi longStopLoss = low < ema50 and close < ema50[1] // Short pozisyon stop seviyesi shortStopLoss = high > ema50 and close > ema50[1] // Long pozisyon için tekrar giriş kuralı longReEntry = high > ema50 and close > ema50 and close > ema50 and ema23 > ema50 // Short pozisyon için tekrar giriş kuralı shortReEntry = low < ema50 and close < ema50 and close < ema50 and ema23 < ema50 // Long işlemde kar alma seviyesi (%60) longTakeProfit = strategy.position_avg_price * 1.60 // Short işlemde kar alma seviyesi (%25) shortTakeProfit = strategy.position_avg_price * 0.75 // Long işlem için yeniden giriş koşulu longReEntryCondition = strategy.position_size <= 0 and longReEntry // Short işlem için yeniden giriş koşulu shortReEntryCondition = strategy.position_size >= 0 and shortReEntry // Geriye dönük test için başlangıç tarihi (01.01.2022) startDate = timestamp(2022, 01, 01, 00, 00) if (time >= startDate) if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.entry("Sell", strategy.short) if (strategy.position_size > 0 and (longStopLoss or close >= longTakeProfit)) strategy.close("Buy") if (strategy.position_size < 0 and (shortStopLoss or close <= shortTakeProfit)) strategy.close("Sell") if (longReEntryCondition) strategy.entry("Buy", strategy.long) if (shortReEntryCondition) strategy.entry("Sell", strategy.short)