Ini adalah strategi perdagangan penembusan julat berdasarkan titik tinggi dan rendah hari sebelumnya. Strategi ini mencari peluang perdagangan dengan mengenal pasti penembusan harga atau kerosakan di luar titik tinggi atau rendah hari sebelumnya, melaksanakan hanya satu perdagangan setiap arah penembusan atau kerosakan. Strategi ini menggunakan tetapan keuntungan dan stop-loss 50 mata tetap dan menetapkan semula bendera perdagangan pada awal setiap hari perdagangan untuk memastikan perdagangan yang teratur. Inti strategi ini adalah untuk menangkap pergerakan penembusan harga satu arah dalam hari sambil mengawal risiko melalui pengurusan perdagangan yang ketat.
Logik teras strategi ini merangkumi aspek berikut:
Strategi ini adalah sistem dagangan klasik berdasarkan penembusan julat harian, sesuai untuk mengesan trend pasaran satu arah melalui pengurusan perdagangan dan kawalan risiko yang ketat. Walaupun terdapat beberapa risiko yang melekat, kestabilan dan keuntungan strategi dapat ditingkatkan melalui pengoptimuman dan peningkatan yang munasabah. Kunci kejayaan terletak pada menangani risiko penembusan palsu dengan betul, menetapkan tahap keuntungan dan stop-loss yang sesuai, dan mengekalkan kebolehsesuaian strategi di seluruh keadaan pasaran yang berbeza.
/*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")