Эта торговая стратегия основана на трех показателях: 100-периодная экспоненциальная скользящая средняя (EMA100), чистая нереализованная прибыль/убыток (NUPL) и относительная нереализованная прибыль. Она генерирует торговые сигналы, определяя перекрестность цены с EMA100 и положительность или отрицательность NUPL и относительной нереализованной прибыли. Длинный сигнал запускается, когда цена пересекает EMA100, и как NUPL, так и относительная нереализованная прибыль являются положительными. Короткий сигнал запускается, когда цена пересекает EMA100, и как NUPL, так и относительная нереализованная прибыль являются отрицательными.
Эта торговая стратегия генерирует торговые сигналы через три индикатора: 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")