Многофакторная стратегия ротации импульса

Автор:Чао Чжан, Дата: 2023-10-25 11:52:19
Тэги:

img

Обзор

Эта стратегия объединяет RSI, MACD, полосы Боллинджера и ограничивает факторы вверх/вниз для реализации многофакторной ротационной торговли импульсом. Стратегия сначала оценивает, дают ли несколько технических индикаторов сигналы покупки или продажи одновременно. Если да, то будут выполнены соответствующие операции покупки или продажи. Между тем стратегия принимает движущиеся стоп-прибыль и стоп-затраты для блокировки прибыли и контроля рисков.

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

Основными составляющими этой стратегии являются:

  1. Факторное суждение

    • RSI: рассчитывать 14-периодный RSI и судить, если он ниже линии покупки или выше линии продажи
    • Последовательность TD: вычислить количество дней лимита вверх/вниз и судить, соответствует ли он условиям покупки/продажи
    • MACD: рассчитывать MACD и MACD гистограмму для оценки условий покупки/продажи
    • Болинджерские полосы: рассчитывать 20-периодные BB и судить о том, касается ли цена верхней или нижней полосы BB
  2. Вход и выход

    • Условия покупки: RSI, MACD, TD Sequence дают сигналы покупки вместе
    • Условия продажи: RSI, MACD, TD Sequence дают сигналы продажи вместе
    • Стоп-прибыль: использовать фиксированные точки или процентные показатели в качестве остаточного стоп-прибыли
    • Стоп-потеря: установить максимально допустимые точки потери для стоп-потерь
  3. Оптимизация стратегии

    • Настройка параметров RSI: оптимизация параметра периода RSI
    • Корректировка периода MA: оптимизация параметра периода скользящих средних
    • Корректировка условий входа: добавление или уменьшение сигналов входа
    • Добавить другие факторы: включить больше технических показателей и статистических факторов

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

  • Многочисленные факторы улучшают точность ввода

    Стратегия учитывает несколько факторов, таких как RSI и MACD, а не только один индикатор. Это снижает ложные сигналы и улучшает точность входа.

  • Характеристика импульса отражает тенденции

    Показатели, такие как RSI и MACD, имеют очевидную характеристику импульса, которая фиксирует изменения тренда цен. Они более чувствительны, чем индикаторы, следующие за трендом, такие как MAs.

  • Механизм остановки прибыли/убытка контролирует риски

    Перемещение стоп-прибыли может блокировать прибыль динамически следуя за рынком.

  • Простая и понятная логика

    Стратегия сочетает в себе общие технические показатели и обладает определенной универсальностью.

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

  • Слабые результаты на бычьем рынке

    Стратегия ориентирована на торговлю с средней реверсией, которая может привести к частым стоп-лосс на бычьем рынке.

  • Потенциально слишком высокая частота торговли

    Если параметры устанавливаются слишком чувствительно, частота торговли может быть слишком высокой, увеличивая затраты и скольжение.

  • Риск расхождения между показателями

    Стратегия опирается на последовательные сигналы по всем показателям, но иногда могут возникать расхождения, что приводит к неправильным сигналам.

  • Проникновение стоп-потери

    Фиксированные точки остановки потери могут быть проникнуты.

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

  • Оптимизировать параметры для сокращения частоты торговли

    Проверьте параметры RSI и периоды MA, чтобы найти комбинации с более низкой частотой торговли.

  • Добавление статистических факторов для повышения эффективности

    Включите статистику, связанную с конкретными акциями, например, волатильность и ликвидность, чтобы установить параметры и повысить эффективность.

  • Комбинировать показатели рыночного уровня, такие как VIX

    Корректируйте параметры стратегии на основе показателей паники на рынке, таких как VIX, чтобы уменьшить частоту торговли во время обвала рынка.

  • Испытать различные периоды хранения

    Проверьте долгосрочное владение в сравнении с краткосрочной ротацией, чтобы увидеть их влияние на эффективность стратегии.

  • Оптимизировать и протестировать остановку прибыли/убытка

    Исследуйте более продвинутые динамические методы остановки прибыли/убытка и проверьте их.

Резюме

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


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("RSI, TD Seq, MACD, BB Strategy - Calculation Trailing Profit",overlay=true)


RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") 


TD = close > close[4] ?nz(TD[1])+1:0
TS = close < close[4] ?nz(TS[1])+1:0
TDUp = TD - valuewhen(TD < TD[1], TD , 1 )
TDDn = TS - valuewhen(TS < TS[1], TS , 1 )
TDcheckUP = iff(TD == 2, true, false)
TDCheckDOWN = iff(TS == 2, true, false)

[_, _, histLine] = macd(close, 12, 26, 9)
MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0  and histLine[4] > 0, true, false)
MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false)

RSICal = rsi(close, 14)
RSICalNewUp = 50 + RSIDifference
RSICalNewDown = 50 - RSIDifference
RSICheckUp = iff(RSICal <= RSICalNewUp, true, false)
RSICheckDown = iff(RSICal >= RSICalNewDown, true, false)

basis = sma(close, 20)
dev = 2 * stdev(close, 20)
upperBB = basis + dev
lowerBB = basis - dev
BBCheckUp = iff(close > upperBB, true, false)
BBCheckDown = iff(close < lowerBB, true, false)
//BBCheckUp = false
//BBCheckDown = false


BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false)
SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false)


ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) 
ProfitTrailingA = input(10, minval=0, maxval=10000, title="Profit", step=0.5) 
useStopLoss = input(false, title="Use Stop Loss?")
LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) 
colB = input(100, minval=0, maxval=100, title="0-show / 100-hide Strategy", step=100) 

ProfitStrat = ProfitStratA * 10
ProfitTrailing = ProfitTrailingA * 10
Lossstrat = useStopLoss ? LossstratA * 10 : 1000000

if (strategy.position_size > 0)
    strategy.exit("BuyClose", "Buy", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat)
    
    
if (strategy.position_size < 0)   
    strategy.exit("SellClose", "Sell", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) 
    

if (BuyCheck == true and strategy.position_size == 0)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    


if (SellCheck == true and strategy.position_size == 0)
    strategy.entry("Sell", strategy.short, comment="Short Entry")
    


plotshape(BuyCheck, color=blue, transp=colB, style=shape.arrowup, text="Buy\n", location=location.belowbar)
plotshape(SellCheck, color=orange, transp=colB, style=shape.arrowdown, text="Sell\n", location=location.abovebar)













Больше