Name
周末波动交易策略Weekend-Volatility-Trading-Strategy
Author
ChaoZhang
Strategy Description
该策略根据周五收盘价设定长仓和空仓的入场条件,在周六和周日开盘时做多做空,周一开盘前平仓。策略通过捕捉周五收盘价附近的价格波动来实现盈利。
- 记录周五的收盘价作为参考价
- 周六周日开盘时:
- 如果价格高于周五收盘价的4.5%,做空
- 如果价格低于周五收盘价的4.5%,做多
- 止盈设置为初始资金的3%
- 周一开盘前平仓所有头寸
- 利用周六周日的低交易量导致的价格波动进行交易,降低市场风险
- 明确的入场和出场条件,降低策略实施难度
- 短线操作,追求稳定的小盈利
- 周期短,资金周转快
- 周六周日价格波动可能小于预期,无法打开仓位
- 波动过大导致止损
- 周一重大事件导致价格跳空,无法及时止损
风险解决方案:
- 调整入场条件的波动幅度
- 合理设置止损点
- 提前平仓,不持仓过周末
- 根据不同品种的特点调整入场幅度
- 根据回测结果优化止盈条件
- 根据资金规模选择不同的杠杆
- 结合均线指标过滤入场时机
该策略作为一个短线交易策略,具有非常明确的交易逻辑和风险控制措施。通过合理的参数设置和不断测试优化,可以获得稳定的投资收益。同时也需要注意周未价格波动过大导致的亏损风险,通过风险管理来控制损失。
||
This strategy sets long and short entry conditions based on Friday's closing price, and goes long or short after Saturday's and Sunday's opening, exiting all positions before Monday's opening. The strategy aims to profit from price fluctuations around Friday's closing price over the weekend.
- Record Friday's closing price as the reference price
- On Saturday and Sunday's opening:
- If price is above 105% of Friday's close, go short
- If price is below 95% of Friday's close, go long
- Take profit is set at 3% of initial capital
- Close all positions before Monday's opening
- Trade on weekend's low volume and volatility to reduce market risk
- Clear entry and exit rules simplify strategy execution
- Pursue steady small profits with short-term trades
- High capital turnover with short cycle
- Weekend price fluctuation may be smaller than expected, unable to open positions
- Excessive volatility may cause stop loss
- Significant events on Monday may cause price gaps, unable to stop loss in time
Risk Solutions:
- Adjust fluctuation range for entries
- Set proper stop loss points
- Close positions early, avoid holding over weekends
- Adjust entry thresholds based on different products' characteristics
- Optimize take profit rules based on backtest results
- Select leverage based on capital size
- Add indicator filters such as moving average to time entries
This short-term trading strategy has very clear logic and risk control measures. With proper parameter tuning and continuous testing and optimization, it can generate steady investment returns. At the same time, the risk of large weekend losses due to excessive volatility needs to be managed via proper risk control.
[/trans]
Strategy Arguments
Argument | Default | Description |
---|---|---|
v_input_1 | true | Leverage |
v_input_2 | 0.03 | Profit Taking Percent Threshold |
v_input_3 | 2017 | Backtest Start Year |
v_input_4 | 12 | Backtest Start Month |
v_input_5 | 10 | Backtest Start Day |
v_input_6 | 2025 | Backtest Stop Year |
v_input_7 | 12 | Backtest Stop Month |
v_input_8 | 30 | Backtest Stop Day |
v_input_9 | true | Color Background? |
Source (PineScript)
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 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=true, default_qty_type=strategy.percent_of_equity,initial_capital=20000)
leverage = input(1,"Leverage")
profitTakingPercentThreshold = input(0.03,"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()
Detail
https://www.fmz.com/strategy/432304
Last Modified
2023-11-16 10:53:01