Эта стратегия объединяет RSI, MACD, полосы Боллинджера и ограничивает факторы вверх/вниз для реализации многофакторной ротационной торговли импульсом. Стратегия сначала оценивает, дают ли несколько технических индикаторов сигналы покупки или продажи одновременно. Если да, то будут выполнены соответствующие операции покупки или продажи. Между тем стратегия принимает движущиеся стоп-прибыль и стоп-затраты для блокировки прибыли и контроля рисков.
Основными составляющими этой стратегии являются:
Факторное суждение
Вход и выход
Оптимизация стратегии
Многочисленные факторы улучшают точность ввода
Стратегия учитывает несколько факторов, таких как 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)