Стратегия торговли в выходные

Автор:Чао Чжан, Дата: 2023-11-14 11:29:12
Тэги:

img

Обзор

Это краткосрочная торговая стратегия, которая использует увеличенный объем торгов в выходные дни Bitcoin с использованием 10-кратного рычага. Основная идея заключается в том, чтобы записать цену закрытия в пятницу, сравнить ежедневные цены закрытия в субботу и воскресенье с ценой закрытия в пятницу и пойти длинным или коротким, если порог превышен.

Логика стратегии

Стратегия сначала записывает цену закрытия в пятницу, а затем вычисляет количество дней с пятницы. В субботу и воскресенье, если ежедневная цена закрытия более чем на 4,5% выше цены закрытия в пятницу, перейдите на короткий; если ежедневная цена закрытия более чем на 4,5% ниже цены закрытия в пятницу, перейдите на длинный. Каждая сделка использует 10-кратный рычаг. Если прибыль достигает 10% от первоначального капитала, закрывайте все позиции. В понедельник закрывайте все позиции независимо.

В частности, стратегия получает цену закрытия пятницы, затем сравнивает текущую цену закрытия с пятницами в субботу и воскресенье.strategy.short; если текущая цена закрытия более чем на 4,5% ниже, чем в пятницу,strategy.long. Денежный рычаг установлен на 10x черезleverageЕсли прибыль достигает 10% от начального капитала, закрыть все позиции черезstrategy.close_all()В понедельник, закрыть все позиции черезstrategy.close_all().

Анализ преимуществ

  • Использует увеличенный объем торгов в выходные дни Биткойна для краткосрочной торговли, фиксируя тенденции в выходные дни
  • 10-кратный рычаг увеличивает доходность
  • Условие получения прибыли помогает зафиксировать прибыль и предотвратить увеличение потерь
  • Закрытие позиций в понедельник позволяет избежать рисков волатильных открытий в понедельник

Анализ рисков

  • Цены на биткоин волатильны по выходным, риск потерь
  • Десятикратный рычаг увеличивает убытки
  • Неправильное размещение стоп-лосса может привести к большим потерям
  • Волатильность открытий в понедельник может помешать получению полной прибыли

Потенциальные улучшения для снижения рисков:

  1. Установка стоп-лосса на контроль по сделке.
  2. Настраивайте рычаги для снижения риска.
  3. Оптимизируйте точки получения прибыли, получайте прибыль по партиям после достижения определенного уровня прибыли.
  4. Установите объем или время получения прибыли до открытия в понедельник, чтобы избежать волатильности.

Руководство по оптимизации

Стратегия может быть улучшена в следующих аспектах:

  1. Добавьте другие индикаторы для улучшения сроков входа.

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






Больше