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

Автор:Чао Чжан, Дата: 2023-11-16 10:53:01
Тэги:

img

Обзор

Эта стратегия устанавливает длинные и короткие условия входа на основе цены закрытия в пятницу, и идет длинным или коротким после открытия в субботу и воскресенье, выходя из всех позиций до открытия в понедельник.

Принципы

  1. Запись цены закрытия в пятницу в качестве базовой
  2. В субботу и воскресенье:
    • Если цена превышает 105% от закрытия в пятницу, перейдите на короткий.
    • Если цена ниже 95% от закрытия в пятницу, делайте длинный выбор.
  3. Приобретение прибыли установлено на уровне 3% от начального капитала
  4. Закрыть все позиции до открытия в понедельник

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

  1. Торговля в выходные дни с низким объемом и волатильностью для снижения рыночного риска
  2. Ясные правила входа и выхода упрощают исполнение стратегии
  3. Стремиться к стабильной небольшой прибыли с краткосрочными сделками
  4. Высокий оборот капитала с коротким циклом

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

  1. Колебания цен в выходные могут быть меньше, чем ожидалось, и невозможно открыть позиции.
  2. Чрезмерная волатильность может привести к остановке потерь
  3. Значительные события в понедельник могут вызвать ценовые разрывы, не в состоянии остановить потерю вовремя.

Решения рисков:

  1. Настройка диапазона колебаний для записей
  2. Установите правильные точки остановки потерь
  3. Закрыть позиции раньше, избегать хранения в выходные дни

Руководящие принципы оптимизации

  1. Корректировка пороговых значений ввода на основе различных характеристик продукции
  2. Оптимизировать правила получения прибыли на основе результатов обратных тестов
  3. Выбирать рычаги воздействия на основе размера капитала
  4. Добавление фильтров показателей, таких как скользящая средняя, к временным записям

Резюме

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


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






Больше