Strategi ini menggunakan persilangan dua purata bergerak eksponensial (EMA) dengan tempoh yang berbeza sebagai isyarat perdagangan, sambil menetapkan titik tetap stop loss dan mengambil tahap keuntungan. Apabila EMA jangka pendek melintasi di atas EMA jangka panjang, ia membuka kedudukan panjang; apabila EMA jangka pendek melintasi di bawah EMA jangka panjang, ia membuka kedudukan pendek. Strategi menetapkan titik tetap stop loss dan mengambil tahap keuntungan untuk mengawal risiko dan mengunci keuntungan.
Strategi stop loss dan mengambil keuntungan purata bergerak berganda adalah strategi perdagangan yang mudah dan mudah digunakan yang menjana isyarat perdagangan melalui crossover EMA sambil menetapkan stop loss titik tetap dan mengambil tahap keuntungan untuk mengawal risiko. Kelebihan strategi ini terletak pada logiknya yang jelas, pelaksanaan yang mudah, dan keupayaan untuk menangkap trend pasaran dengan berkesan. Walau bagaimanapun, ia juga menghadapi risiko seperti isyarat palsu, kelewatan trend, pasaran terhad jangkauan, dan tahap stop loss tetap. Arahan pengoptimuman termasuk memperkenalkan lebih banyak penunjuk, mengoptimumkan parameter, stop loss dinamik, pengurusan kedudukan, dan menambah penapis.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA5 Cross EAM200 && SL/TP 50 and 200 Point Target", overlay=true) // Define input parameters for EMA lengths ema_5 = input.int(5, title="Fast EMA Length") ema_200 = input.int(200, title="Slow EMA Length") // Define input parameters for stop loss and profit target in points stopLossPoints = input.float(50, title="Stop Loss (Points)") profitTargetPoints = input.float(200, title="Profit Target (Points)") // Calculate EMAs price = close emafast = ta.ema(price, ema_5) emaslow = ta.ema(price, ema_200) // Plot EMAs on chart plot(emafast, title="5-period EMA", color=color.black) plot(emaslow, title="200-period EMA", color=color.blue) // Extra lines if needed ema_13 = input.int(13, title="13 EMA") ema_13_line = ta.ema(price, ema_13) plot(ema_13_line, title="13-period EMA", color=color.rgb(156, 39, 176, 90)) ema_20 = input.int(20, title="20 EMA") ema_20_line = ta.ema(price, ema_20) plot(ema_20_line, title="20-period EMA", color=color.red) // Define entry conditions longCondition = ta.crossover(emafast, emaslow) shortCondition = ta.crossunder(emafast, emaslow) // Counter to keep track of the number of bars since the entry var int barCount = na // Reset counter and enter long trade if (longCondition) strategy.entry("Long", strategy.long, comment="Long") barCount := 0 // Reset counter and enter short trade if (shortCondition) strategy.entry("Short", strategy.short, comment="Short") barCount := 0 // Increment counter if in trade if (strategy.opentrades > 0) barCount += 1 // Calculate entry price entryPrice = strategy.position_avg_price // Exit long trade if stop loss, profit target hit, or 200 points have been reached if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", "Long", stop=entryPrice - stopLossPoints, limit=entryPrice + profitTargetPoints) // Exit short trade if stop loss, profit target hit, or 200 points have been reached if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", "Short", stop=entryPrice + stopLossPoints, limit=entryPrice - profitTargetPoints)