Files
strategies/周末交易策略Weekend-Trading-Strategy.md
2024-03-03 22:27:55 +08:00

10 KiB

Name

周末交易策略Weekend-Trading-Strategy

Author

ChaoZhang

Strategy Description

IMG [trans]

概述

该策略是一个利用比特币在周末进行短线交易的策略,使用10倍杠杆进行交易。策略的主要思路是在周五收盘时记录价格,然后在周六和周日比较当日收盘价和周五收盘价的涨跌幅,如果超过阈值则做多或做空,周一平仓。

策略原理

该策略首先记录下周五的收盘价,然后计算当前日期距离周五的天数。在周六和周日时,如果当日收盘价较周五收盘价上涨超过4.5%,则做空;如果当日收盘价较周五收盘价下跌超过4.5%,则做多。每次交易使用10倍杠杆,如果盈利达到初始资金的10%则平仓所有头寸。在周一时无论是否有头寸,全部平仓。

具体来说,策略通过获取周五的收盘价,然后在周六日比较当前收盘价与周五收盘价的涨跌幅。如果当前收盘价较周五收盘价上涨超过4.5%,则通过strategy.short做空;如果当前收盘价较周五收盘价下跌超过4.5%,则通过strategy.long做多。通过leverage参数设置杠杆为10倍。如果利润达到初始资金的10%,则通过strategy.close_all()平仓所有头寸。在周一时,通过strategy.close_all()平掉所有头寸。

优势分析

  • 利用比特币周末交易量增大的特点,在周末进行短线交易,可以捕捉周末的短期趋势
  • 使用10倍杠杆进行交易,可以放大收益
  • 设置止盈条件,有利于及时止盈,避免亏损扩大
  • 周一平仓,避免周一开盘的大幅波动带来的风险

风险分析

  • 比特币周末价格波动大,存在亏损风险
  • 10倍杠杆会放大亏损
  • 停止止损设置不当可能造成较大亏损
  • 周一开盘价格剧烈波动,可能无法全部止盈

针对风险,可以考虑以下优化措施:

  1. 设置止损点,控制单笔损失。
  2. 调整杠杆倍数,降低风险。
  3. 优化止盈点设置,在盈利达到一定比例时分批止盈。
  4. 在周一开盘前设置成交量或时间止盈,避免周一开盘的剧烈波动。

优化方向

该策略可以从以下几个方面进行优化:

  1. 增加其他指标判断,优化入场点选取。可以结合移动均线,RSI等指标过滤入场时机,提高入场准确率。

  2. 优化止损止盈策略,通过移动止损、分批止盈等方式锁定利润,控制风险。

  3. 调整杠杆大小,降低风险。可以设置动态调整杠杆比例,在回撤时降低杠杆。

  4. 增加多品种交易。可以增加其他常见加密货币,利用它们周末交易特点,进行多品种套利交易。

  5. 使用机器学习算法优化参数。可以收集大量历史数据,使用机器学习算法自动优化参数,实现参数的动态调整。

总结

该策略是一个典型的利用比特币周末交易量放大的短线交易策略。策略利用比特币周末交易量放大的特点,在周六日进行趋势判断,做多或做空。策略具有收益放大,风险控制等优势,但也存在一定的风险。下一步可以从入场、止损止盈、杠杆管理、品种扩展等方面进行优化,使策略更稳健、智能。

||

Overview

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.

Strategy Logic

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().

Advantage Analysis

  • Utilizes Bitcoin's increased weekend trading volume for short-term trading, capturing weekend trends
  • 10x leverage amplifies returns
  • Take profit condition helps lock in profits and prevent losses from expanding
  • Closing positions on Monday avoids risks from volatile Monday openings

Risk Analysis

  • Bitcoin prices are volatile on weekends, risk of losses
  • 10x leverage amplifies losses
  • Improper stop loss placement could lead to large losses
  • Volatile Monday openings may prevent full profit taking

Potential improvements to mitigate risks:

  1. Set stop loss to control loss per trade.
  2. Adjust leverage to reduce risk.
  3. Optimize take profit points, take profits in batches after reaching certain profit levels.
  4. Set volume or time take profits before Monday opening to avoid volatility.

Optimization Directions

The strategy can be improved in the following aspects:

  1. Add other indicators for better entry timing. Incorporate moving averages, RSI etc to filter entries and improve accuracy.

  2. Optimize stop loss and take profit strategies. Use trailing stops, staged profit taking etc to lock in profits and control risk.

  3. Adjust leverage size to reduce risk. Implement dynamic leverage adjustment, lowering leverage during drawdowns.

  4. Add other cryptocurrencies. Trade additional cryptos with weekend patterns for multi-asset arbitrage.

  5. Use machine learning to optimize parameters. Collect large historical datasets and use ML to automatically optimize dynamic parameter adjustment.

Summary

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.

[/trans]

Strategy Arguments

Argument Default Description
v_input_1 10 Leverage
v_input_2 0.1 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-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()
 





Detail

https://www.fmz.com/strategy/432078

Last Modified

2023-11-14 11:29:12