Strategi ini direka untuk kemasukan kedudukan panjang dengan pencetus tarikh tertentu dan mekanisme stop loss terakhir untuk pengurusan risiko. Ia sangat berguna bagi peniaga yang ingin mengotomatiskan kemasukan mereka berdasarkan tarikh kalendar tertentu dan menguruskan kedudukan mereka dengan kaedah kawalan risiko dinamik seperti stop loss terakhir.
Strategi pertama mengambil input tarikh kemasukan tertentu, termasuk bulan dan hari, kemudian mengira stempel masa kemasukan yang tepat berdasarkan tarikh-tarikh ini.
Pada tarikh kemasukan, strategi akan membuka kedudukan panjang. Pada masa yang sama, ia merekodkan harga tertinggi (highestPrice) dan harga stop loss (stopLoss). Harga tertinggi terus dikemas kini dari masa ke masa, sementara stopLoss menjejaki dengan peratusan tertentu ke bawah.
Jika harga jatuh di bawah stopLoss, kedudukan akan ditutup. Jika tidak, kedudukan tetap terbuka, dan stopLoss terus mengikuti harga tertinggi untuk mengunci keuntungan dan mengawal risiko.
Kelebihan utama strategi ini ialah:
Terdapat juga beberapa risiko:
Peningkatan yang mungkin:
Arah pengoptimuman yang mungkin:
Strategi ini menyediakan kemasukan berasaskan tarikh automatik dan pengurusan risiko dinamik melalui kerugian hentian. Mudah dan intuitif untuk beroperasi, sesuai untuk pegangan jangka panjang. Pengoptimuman lanjut boleh menjadikannya strategi perdagangan kuant yang sangat praktikal.
/*backtest start: 2024-01-24 00:00:00 end: 2024-01-31 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Trailing Stop Loss Percent", overlay=true, pyramiding=1) // Input for the specific entry date entryDay = input.int(defval = 1, title = "Entry Day", minval = 1, maxval = 31) entryMonth = input.int(defval = 1, title = "Entry Month", minval = 1, maxval = 12) entryYear = input.int(defval = 2023, title = "Entry Year", minval = 1970) // Calculate the entry date timestamp entryDate = timestamp(entryYear, entryMonth, entryDay, 00, 00) // Trailing Stop Loss Percentage trailStopPercent = input.float(defval = 5.0, title = "Trailing Stop Loss (%)", minval = 0.1) // Entry Condition enterTrade = true // Variables to track the highest price and stop loss level since entry var float highestPrice = na var float stopLoss = na // Update the highest price and stop loss level if strategy.position_size > 0 highestPrice := math.max(highestPrice, high) stopLoss := highestPrice * (1 - trailStopPercent / 100) // Enter the strategy if enterTrade strategy.entry("Long Entry", strategy.long) highestPrice := high stopLoss := highestPrice * (1 - trailStopPercent / 100) // Exit the strategy if the stop loss is hit if strategy.position_size > 0 and low <= stopLoss strategy.close("Long Entry") // Plotting the stop loss level for reference plot(strategy.position_size > 0 ? stopLoss : na, "Trailing Stop Loss", color=color.red)