
This is a short-term trading strategy that utilizes Bitcoin’s increased weekend trading volume using 10x leverage. The main idea is to record the Friday closing price, compare the daily closing prices on Saturday and Sunday with the Friday closing price, and go long or short if the threshold is exceeded. Positions will be closed on Monday.
The strategy first records the Friday closing price, then calculates the number of days since Friday. On Saturday and Sunday, if the daily closing price is more than 4.5% above the Friday closing price, go short; if the daily closing price is more than 4.5% below the Friday closing price, go long. Each trade uses 10x leverage. If the profit reaches 10% of the initial capital, close all positions. On Monday, close all positions regardless.
Specifically, the strategy gets Friday’s closing price, then compares the current closing price with Friday’s on Saturday and Sunday. If the current closing price is more than 4.5% higher than Friday’s, go short via strategy.short; if the current closing price is more than 4.5% lower than Friday’s, go long via strategy.long. Leverage is set to 10x via the leverage parameter. If profit reaches 10% of initial capital, close all positions via strategy.close_all(). On Monday, close all positions via strategy.close_all().
Potential improvements to mitigate risks:
The strategy can be improved in the following aspects:
Add other indicators for better entry timing. Incorporate moving averages, RSI etc to filter entries and improve accuracy.
Optimize stop loss and take profit strategies. Use trailing stops, staged profit taking etc to lock in profits and control risk.
Adjust leverage size to reduce risk. Implement dynamic leverage adjustment, lowering leverage during drawdowns.
Add other cryptocurrencies. Trade additional cryptos with weekend patterns for multi-asset arbitrage.
Use machine learning to optimize parameters. Collect large historical datasets and use ML to automatically optimize dynamic parameter adjustment.
This is a typical short-term trading strategy utilizing Bitcoin’s increased weekend volume. It capitalizes on weekend volume by judging trends on Saturday and Sunday, going long or short. The strategy has advantages like profit amplification and risk control, but also has some risks. Next steps are to optimize areas like entry, stop loss, leverage management, asset expansion etc to make the strategy more robust and intelligent.
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Copyright Boris Kozak
strategy("XBT Weekend Trade Strategy", overlay=false)
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 = request.security(syminfo.tickerid,'D',close[days_since_friday])
plot(fridaycloseprice)
strategy.initial_capital = 50000
// 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
strategy.entry("Long Entry",strategy.long,leverage)
// On Monday, if we have any open positions, close them
if (dayofweek==2.0)
strategy.close_all()