Ini adalah strategi perdagangan penyebaran rentang berdasarkan pada titik tinggi dan rendah hari sebelumnya. Strategi ini mencari peluang perdagangan dengan mengidentifikasi penyebaran harga atau kerusakan di luar titik tinggi atau rendah hari sebelumnya, hanya mengeksekusi satu perdagangan per arah penyebaran atau kerusakan. Strategi ini menggunakan pengaturan take profit dan stop-loss 50 poin tetap dan menetapkan kembali bendera perdagangan di awal setiap hari perdagangan untuk memastikan perdagangan yang teratur. Inti dari strategi ini adalah menangkap pergerakan penyebaran harga satu arah dalam sehari sambil mengendalikan risiko melalui manajemen perdagangan yang ketat.
Logika inti dari strategi ini mencakup aspek berikut:
Strategi ini adalah sistem perdagangan klasik yang didasarkan pada penyebaran jangkauan harian, yang cocok untuk melacak tren pasar satu arah melalui manajemen perdagangan yang ketat dan kontrol risiko. Meskipun ada beberapa risiko yang melekat, stabilitas dan profitabilitas strategi dapat ditingkatkan melalui optimalisasi dan peningkatan yang wajar. Kunci keberhasilan terletak pada penanganan risiko penyebaran palsu dengan benar, menetapkan tingkat mengambil keuntungan dan stop-loss yang sesuai, dan mempertahankan kemampuan adaptasi strategi di berbagai kondisi pasar.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("US 30 Daily Breakout Strategy (Single Trade Per Breakout/Breakdown, New York Time)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, trim_orders = true) // Set pip size for US 30 (1 pip = 1 point) var float pip = 1.0 // Set take profit and stop loss in points (1 pip = 1 point) take_profit_pips = 50 stop_loss_pips = 50 // Calculate the previous day's high and low (assumes chart timezone is set to New York) prevDayHigh = request.security(syminfo.tickerid, "D", high[1]) prevDayLow = request.security(syminfo.tickerid, "D", low[1]) // Initialize flags to track if a breakout/breakdown trade has been taken var bool breakout_traded = false var bool breakdown_traded = false // Reset flags at the start of a new day in New York timezone (as per chart setting) if (ta.change(time("D"))) breakout_traded := false breakdown_traded := false // Condition for a long entry: candle closes above the previous day's high and no breakout trade has been taken longCondition = close > prevDayHigh and strategy.opentrades == 0 and not breakout_traded // Condition for a short entry: candle closes below the previous day's low and no breakdown trade has been taken shortCondition = close < prevDayLow and strategy.opentrades == 0 and not breakdown_traded // Execute long trade if the condition is met, and set the breakout flag if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close + take_profit_pips * pip, stop=close - stop_loss_pips * pip) breakout_traded := true // Set breakout flag // Execute short trade if the condition is met, and set the breakdown flag if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close - take_profit_pips * pip, stop=close + stop_loss_pips * pip) breakdown_traded := true // Set breakdown flag // Plotting the previous day's high and low for visualization plot(prevDayHigh, color=color.green, linewidth=1, title="Previous Day High") plot(prevDayLow, color=color.red, linewidth=1, title="Previous Day Low")