Strategi ini adalah sistem perdagangan otomatis berdasarkan teori crossover rata-rata bergerak ganda dengan fungsi manajemen risiko terintegrasi. Strategi inti menggunakan Rata-rata Bergerak Eksponensial (EMA) periode 21 dan 50 periode sebagai indikator sinyal, secara otomatis mengeksekusi perdagangan berdasarkan titik persilangan sambil menggabungkan mekanisme Stop Loss dan Take Profit untuk pengendalian risiko.
Logika inti didasarkan pada teori crossover rata-rata bergerak klasik dalam analisis teknis. Sistem menghasilkan sinyal bullish dan memasuki posisi panjang ketika EMA jangka pendek (21-periode) melintasi EMA jangka panjang (50-periode), dan sebaliknya, menghasilkan sinyal bearish dan memasuki posisi pendek ketika EMA jangka pendek melintasi EMA jangka panjang. Setiap sinyal perdagangan secara otomatis menetapkan stop loss dan take profit level, dengan pengaturan default 40 ticks untuk stop loss dan 80 ticks untuk take profit. Desain ini memastikan rasio risiko-manfaat 1:2, mematuhi prinsip manajemen perdagangan profesional.
Ini adalah strategi perdagangan otomatis yang dirancang dengan baik dengan logika yang jelas. Dengan menggabungkan sinyal crossover rata-rata bergerak dengan manajemen risiko yang ketat, strategi ini menyediakan kerangka teknis yang dapat diandalkan untuk menangkap tren pasar sambil memastikan keamanan perdagangan. Meskipun ada ruang untuk optimasi, dasar strategi ini lengkap dan cocok sebagai modul dasar untuk pengembangan dan penyempurnaan lebih lanjut dalam sistem perdagangan kuantitatif.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy with SL & TP", overlay=true, default_qty_type=strategy.percent_of_equity) // Input settings for SL and TP (ticks) slTicks = input.int(40, title="Stop Loss (ticks)", minval=1) tpTicks = input.int(80, title="Take Profit (ticks)", minval=1) // Define EMA periods ema21 = ta.ema(close, 21) ema50 = ta.ema(close, 50) // Detect crossovers bullishCross = ta.crossover(ema21, ema50) bearishCross = ta.crossunder(ema21, ema50) // Plot the EMAs plot(ema21, color=color.green, linewidth=2, title="EMA 21") plot(ema50, color=color.red, linewidth=2, title="EMA 50") // Calculate tick size in points var float tickSize = syminfo.mintick // Calculate stop loss and take profit prices for long and short positions longSL = close - slTicks * tickSize longTP = close + tpTicks * tickSize shortSL = close + slTicks * tickSize shortTP = close - tpTicks * tickSize // Execute trades on crossover signals if (bullishCross) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=longSL, limit=longTP) if (bearishCross) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=shortSL, limit=shortTP) // Plot arrows on crossovers plotshape(series=bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small) plotshape(series=bearishCross, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small) // Optional: Background coloring bgcolor(bullishCross ? color.new(color.green, 90) : na, title="Bullish Background") bgcolor(bearishCross ? color.new(color.red, 90) : na, title="Bearish Background")