Strategi dagangan ini berdasarkan tiga penunjuk: purata bergerak eksponen 100 tempoh (EMA100), keuntungan / kerugian bersih yang tidak direalisasikan (NUPL), dan keuntungan relatif yang tidak direalisasikan. Ia menghasilkan isyarat dagangan dengan menentukan persilangan harga dengan EMA100 dan positif atau negatif NUPL dan keuntungan relatif yang tidak direalisasikan. Isyarat panjang dipicu apabila harga melintasi EMA100 dan kedua-dua NUPL dan keuntungan relatif yang tidak direalisasikan positif. Isyarat pendek dipicu apabila harga melintasi di bawah EMA100 dan kedua-dua NUPL dan keuntungan relatif yang tidak direalisasikan negatif. Strategi ini menggunakan saiz kedudukan tetap 10% dan menetapkan stop loss 10%.
Strategi perdagangan ini menjana isyarat perdagangan melalui tiga penunjuk: EMA100, NUPL, dan Keuntungan Relatif yang Tidak Terwujud. Ia mempunyai kelebihan seperti logik yang jelas, risiko yang boleh dikawal, dan kemampuan beradaptasi yang kuat. Pada masa yang sama, ia juga mempunyai risiko seperti isyarat palsu, lag, dan pengoptimuman parameter. Pada masa akan datang, strategi boleh dioptimumkan dan ditingkatkan melalui pengoptimuman parameter, penapisan isyarat, pengurusan kedudukan dinamik, dan kombinasi panjang-pendek.
/*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")