Strategi ini secara khusus memperdagangkan turun naik harga hujung minggu dengan menentukan arah panjang / pendek berdasarkan band peratusan yang telah ditetapkan.
Logik Strategi:
Tetapkan rentang peratusan berdasarkan penutupan Jumaat sebelumnya, contohnya 4.5% naik / turun.
Masuk pendek jika harga melebihi band upside, masuk panjang jika di bawah band downside.
Tambah kedudukan apabila mencapai jalur baru dalam arah yang sedia ada.
Ambil keuntungan apabila keuntungan terkumpul mencapai ambang, seperti 10%.
Biarkan maksimum dua kedudukan serentak, satu di setiap arah.
Kelebihan:
Band peratusan tetap membolehkan perdagangan mekanikal.
Entri berbilang peringkat mencapai asas kos yang lebih baik.
Periodicity adalah stabil, tidak dipengaruhi oleh asas.
Risiko:
Tidak dapat mengehadkan saiz kerugian perdagangan tunggal, risiko kehilangan perdagangan besar.
Parameter tetap gagal menyesuaikan perubahan turun naik dari tempoh ke tempoh.
Periodicity boleh berubah dari masa ke masa, membatalkan model.
Ringkasnya, strategi ini sering berdagang dalam kitaran hujung minggu tetapi menghadapi cabaran mengunci keuntungan secara konsisten.
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-12 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //Copyright Boris Kozak // strategy("XBT Weekend Trade Strategy", overlay=true, default_qty_type=strategy.percent_of_equity,) strategy.initial_capital=50000 leverage = input(10,"Leverage") profitTakingPercentThreshold = input(0.10,"Profit Taking Percent Threshold") //****Code used for setting up backtesting.****/// testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(12, "Backtest Start Month") testStartDay = input(10, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2025, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FFFF : na bgcolor(testPeriodBackgroundColor, transp=50) testPeriod() => true //****END Code used for setting up backtesting.****/// //*** Main entry point is here***// // Figure out how many days since the Friday close days_since_friday = if dayofweek == 6 0 else if dayofweek == 7 1 else if dayofweek == 1 2 else if dayofweek == 2 3 else if dayofweek == 3 4 else if dayofweek == 4 5 else 6 // Grab the Friday close price fridaycloseprice = security(syminfo.ticker,'D',close[days_since_friday]) plot(fridaycloseprice) // Only perform backtesting during the window specified if testPeriod() // If we've reached out profit threshold, exit all positions if ((strategy.openprofit/strategy.initial_capital) > profitTakingPercentThreshold) strategy.close_all() // Only execute this trade on saturday and sunday (UTC) if (dayofweek == 7.0 or dayofweek == 1.0) // Begin - Empty position (no active trades) if (strategy.position_size == 0) // If current close price > threshold, go short if ((close>fridaycloseprice*1.045)) strategy.entry("Short Entry", strategy.short, leverage) else // If current close price < threshold, go long if (close<(fridaycloseprice*0.955)) strategy.entry("Long Entry",strategy.long, leverage) // Begin - we already have a position if (abs(strategy.position_size) > 0) // We are short if (strategy.position_size < 0) if ((close>strategy.position_avg_price*1.045)) // Add to the position strategy.entry("Adding to Short Entry", strategy.short, leverage) else if ((close<strategy.position_avg_price*0.955)) strategy.entry("Adding to Long Entry",strategy.long,leverage) // On Monday, if we have any open positions, close them if (dayofweek==2.0) strategy.close_all()