이 전략은 동적 인 영업 수익 및 스톱 로스 메커니즘과 결합된 이동 평균 크로스오버를 기반으로 한 양적 거래 시스템이다. 전략의 핵심은 시장 트렌드를 식별하고 리트랙시션 중에 거래를 실행하기 위해 10 기간 및 26 기간 기하급수적 이동 평균 (EMA) 의 크로스오버를 사용합니다. 시스템은 엄격한 리스크 관리를 통해 자본을 보호하기 위해 고정된 영업 수익 및 스톱 로스 수준을 사용합니다. 이 전략은 종종 더 명확한 시장 반전 신호와 더 큰 수익 잠재력을 제공하기 때문에 특히 높은 변동성 거래 도구에 적합합니다.
이 전략은 핵심 지표로 서로 다른 기간을 가진 두 개의 EMA를 사용합니다. 단기 10 기간 EMA와 장기 26 기간 EMA. 단기 EMA가 장기 EMA를 넘어서면 구매 신호가 생성되며 상승 추세를 나타냅니다. 단기 EMA가 장기 EMA를 넘어서면 판매 신호가 생성되며 하락 추세를 나타냅니다. 시스템은 트렌드 확인 후 가격 리트레이싱 중에 거래에 들어가고, 리스크 통제를 위해 30 포인트의 수익을 취하고 15 포인트의 스톱 로스 수준을 사용합니다. 전략은 단일 신호 메커니즘을 사용하여 한 번에 하나의 방향 거래를 허용하며 시스템 복잡성을 줄이고 신뢰성을 향상시키는 데 도움이됩니다.
이 전략은 EMA 크로스오버와 가격 리트레이싱을 결합하여 완전한 거래 시스템을 구축합니다. 전략 디자인은 간단하고 직관적이며 명확한 리스크 제어와 함께 고 변동성 거래 도구에 적합합니다. 적절한 최적화 및 매개 변수 조정을 통해이 전략은 라이브 거래에서 안정적인 수익을 얻을 수 있습니다. 트레이더들은 라이브 구현 전에 철저한 백테스팅과 데모 거래를 수행하고 실제 거래 조건에 따라 매개 변수를 최적화하는 것이 좋습니다.
/*backtest start: 2023-11-18 00:00:00 end: 2024-11-17 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("30 Pips Target & 15 Pips Stop-Loss with One Signal at a Time", overlay=true) // Define settings for target and stop-loss in pips target_in_pips = 30 stoploss_in_pips = 10 // Convert pips to price value based on market (for forex, 1 pip = 0.0001 for major pairs like GBP/JPY) pip_value = syminfo.mintick * 10 // For forex, 1 pip = 0.0001 or 0.01 for JPY pairs target_value = target_in_pips * pip_value stoploss_value = stoploss_in_pips * pip_value // Define EMAs (10-EMA and 26-EMA) for the crossover strategy ema10 = ta.ema(close, 10) ema26 = ta.ema(close, 26) // Buy signal: when 10 EMA crosses above 26 EMA longCondition = ta.crossover(ema10, ema26) // Sell signal: when 10 EMA crosses below 26 EMA shortCondition = ta.crossunder(ema10, ema26) // Define price levels with explicit type float var float long_entry_price = na var float long_take_profit = na var float long_stop_loss = na var float short_entry_price = na var float short_take_profit = na var float short_stop_loss = na // Variable to track if a trade is active var bool inTrade = false // Check if the trade hit stop loss or take profit if (inTrade) if (not na(long_take_profit) and close >= long_take_profit) inTrade := false // Exit the trade after hitting target long_entry_price := na long_take_profit := na long_stop_loss := na strategy.close("Long") if (not na(long_stop_loss) and close <= long_stop_loss) inTrade := false // Exit the trade after hitting stoploss long_entry_price := na long_take_profit := na long_stop_loss := na strategy.close("Long") if (not na(short_take_profit) and close <= short_take_profit) inTrade := false // Exit the trade after hitting target short_entry_price := na short_take_profit := na short_stop_loss := na strategy.close("Short") if (not na(short_stop_loss) and close >= short_stop_loss) inTrade := false // Exit the trade after hitting stoploss short_entry_price := na short_take_profit := na short_stop_loss := na strategy.close("Short") // Only generate new signals if not already in a trade if (not inTrade) if (longCondition) long_entry_price := close long_take_profit := close + target_value long_stop_loss := close - stoploss_value strategy.entry("Long", strategy.long) // Enter a long trade strategy.exit("Take Profit/Stop Loss", "Long", limit=long_take_profit, stop=long_stop_loss) inTrade := true // Mark trade as active if (shortCondition) short_entry_price := close short_take_profit := close - target_value short_stop_loss := close + stoploss_value strategy.entry("Short", strategy.short) // Enter a short trade strategy.exit("Take Profit/Stop Loss", "Short", limit=short_take_profit, stop=short_stop_loss) inTrade := true // Mark trade as active // Plot the levels on the chart only when in a trade plot(inTrade and not na(long_take_profit) ? long_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Long)") plot(inTrade and not na(long_stop_loss) ? long_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Long)") plot(inTrade and not na(short_take_profit) ? short_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Short)") plot(inTrade and not na(short_stop_loss) ? short_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Short)") plotshape(series=longCondition and not inTrade, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition and not inTrade, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")