주말 거래 전략

저자:차오장, 날짜: 2023-11-14 11:29:12
태그:

img

전반적인 설명

이 전략은 비트코인의 주말 거래량을 10배의 레버리지를 사용하여 증가시키는 단기 거래 전략이다. 주제는 금요일 종료 가격을 기록하고 토요일과 일요일의 일일 종료 가격을 금요일 종료 가격과 비교하고 임계값을 초과하면 길거나 짧게하는 것입니다. 포지션은 월요일에 종료됩니다.

전략 논리

전략은 먼저 금요일 종료 가격을 기록하고, 그 다음 금요일 이후의 날 수를 계산합니다. 토요일과 일요일, 매일 종료 가격이 금요일 종료 가격보다 4.5% 이상 높으면, 단축; 매일 종료 가격이 금요일 종료 가격보다 4.5% 이상 낮다면, 길게 이동합니다. 각 거래는 10x 레버리지를 사용합니다. 이익이 초기 자본의 10%에 도달하면 모든 포지션을 닫습니다. 월요일, 모든 포지션을 상관없이 닫습니다.

구체적으로, 전략은 금요일의 폐쇄 가격을 얻고, 그 다음 현재 폐쇄 가격을 토요일과 일요일의 금요일과 비교합니다. 현재 폐쇄 가격이 금요일보다 4.5% 이상 높다면,strategy.short■ 현재 종료 가격이 금요일보다 4.5% 이상 낮다면,strategy.long레버리지는 10x로 설정됩니다.leverage이윤이 초기 자본의 10%에 도달하면strategy.close_all()월요일,strategy.close_all().

이점 분석

  • 비트코인의 주말 거래량이 증가한 것을 단기 거래에 활용하여 주말 트렌드를 포착합니다.
  • 10배의 레버리지는 수익을 증대시킵니다.
  • 이윤을 취하는 조건은 이윤을 차단하고 손실이 확대되는 것을 방지합니다.
  • 월요일 포지션 폐쇄는 월요일 오프닝의 변동성으로부터 위험을 피합니다.

위험 분석

  • 비트코인 가격은 주말에 변동적이며 손실 위험이 있습니다.
  • 10배의 레버리지는 손실을 증폭시킵니다.
  • 잘못된 스톱 로스 배치로 인해 큰 손실이 발생할 수 있습니다.
  • 변동적인 월요일 오픈은 전체 수익을 얻을 수 없습니다

위험을 줄이기 위한 잠재적 개선:

  1. 트레이드당 스톱 로스를 제어 로스로 설정합니다.
  2. 리스크를 줄이기 위해 레버리지를 조정합니다.
  3. 수익점을 최적화하고, 특정 수익 수준에 도달한 후 대량으로 수익을 취합니다.
  4. 월요일 개장 전에 수익을 취하는 시간 또는 시간을 설정하여 변동성을 피합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 더 나은 입력 시기를 위해 다른 지표를 추가하십시오. 입력 필터를 필터하고 정확성을 향상시키기 위해 이동 평균, RSI 등을 포함하십시오.

  2. 손실을 멈추고 이익을 취하는 전략을 최적화하십시오. 수익을 차단하고 위험을 제어하기 위해 후속 중지, 단계적 인 이익 취득 등을 사용하십시오.

  3. 리버리지 크기를 조정하여 위험을 줄이세요. 동적 리버리지 조정을 실행하고, 마감 기간 동안 리버리지를 낮추세요.

  4. 다른 암호화폐를 추가합니다. 멀티 자산 중재를 위해 주말 패턴으로 추가 암호화폐를 거래합니다.

  5. 매개 변수를 최적화하기 위해 머신러닝을 사용하세요. 큰 역사 데이터 세트를 수집하고 동적 매개 변수 조정을 자동으로 최적화하기 위해 ML을 사용하세요.

요약

이 전략은 비트코인의 주말 거래량을 활용한 일반적인 단기 거래 전략이다. 토요일과 일요일의 트렌드를 판단하여 주말 거래량을 활용하고, 장기 또는 단기적으로 거래한다. 이 전략은 수익 증폭 및 위험 통제와 같은 장점이 있지만, 또한 몇 가지 위험도 있다. 다음 단계는 전략이 더 견고하고 지능적으로 되기 위해 엔트리, 스톱 로스, 레버리지 관리, 자산 확충 등과 같은 영역을 최적화하는 것이다.


/*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()
 






더 많은