Strategi ini berdasarkan isyarat silang EMA23 dan EMA50 untuk perdagangan. Apabila EMA23 melintasi di atas EMA50, ia menghasilkan isyarat beli, dan apabila melintasi di bawah, ia menghasilkan isyarat jual. Strategi ini juga melaksanakan stop-loss untuk kedudukan panjang apabila harga jatuh di bawah EMA50 dan untuk kedudukan pendek apabila harga naik di atas EMA50. Di samping itu, strategi ini memasuki pasaran semula apabila harga bergerak kembali di atas EMA50. Strategi ini sesuai untuk jangka masa 30 minit.
Strategi ini adalah strategi perdagangan kuantitatif berdasarkan persilangan dua purata bergerak, EMA23 dan EMA50. Ia menangkap trend melalui isyarat persilangan dan melaksanakan mekanisme stop-loss dan re-entry untuk mengawal risiko dan meningkatkan potensi keuntungan. Strategi ini mudah dan mudah difahami, sesuai untuk perdagangan jangka menengah hingga pendek pada jangka masa 30 minit. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, seperti pengenalan trend yang tertinggal, penempatan stop-loss suboptimal, dan prestasi yang buruk di pasaran berkisar. Pada masa akan datang, strategi dapat dioptimumkan dengan memperkenalkan lebih banyak penunjuk teknikal, mengoptimumkan kedudukan stop-loss, mengawal kekerapan perdagangan, membezakan antara pasaran trend dan berkisar, dan melaksanakan tahap mengambil keuntungan dinamik untuk mencapai pulangan yang lebih kukuh.
/*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)