Стратегия комбинирования перехватов с обратным и линейным регрессом

Автор:Чао Чжан, Дата: 2023-09-26 15:56:48
Тэги:

Обзор

Эта стратегия сочетает в себе стратегию 123 реверсии и стратегию линейного регрессионного перехвата для реализации многофакторной комбинированной стратегии торговли. Стратегия 123 реверсии оценивает ценовую связь между последними двумя торговыми днями и объединяет индикатор Stoch для определения обратного сигнала. Стратегия линейного регрессионного перехвата использует линейный регрессионный анализ для оценки связи между ценой и линией тренда и генерации торговых сигналов. Две стратегии проверяют друг друга и могут эффективно фильтровать ложные сигналы.

Принцип стратегии

123 Стратегия отмены

Стратегия основана на следующих принципах:

  1. Если соотношение цены закрытия между последними двумя торговыми днями сегодняшняя цена закрытия выше, чем вчерашняя, и быстрая линия Stoch ниже медленной линии, считается, что существует сигнал обворота.

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

Правила вынесения приговора следующие:

  • Если сегодняшняя цена закрытия > вчерашняя цена закрытия и параметр Stoch fast line < Stoch slow line и Stoch fast line > установлен, генерируется сигнал покупки

  • Если сегодняшняя цена закрытия < вчерашняя цена закрытия и быстрая линия Stoch > медленная линия Stoch и быстрая линия Stoch < установленный параметр, генерируется сигнал продажи

Стратегия должна устанавливать параметры индикатора Stoch, в том числе: длина цикла линии K для расчета Stoch, длина цикла сглаживания KS сглаживание для Stoch быстрой линии, длина цикла сглаживания D для Stoch медленной линии, пороговый уровень для решения Stoch быстрой линии.

Стратегия перехвата линейной регрессии

Стратегия основана на линейном регрессионном анализе для оценки взаимосвязи между ценой и линейной регрессионной линией тренда.

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

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

Стратегия должна устанавливать линейный регрессионный цикл LengthLRI и источник данных линейной регрессии xSeria.

Стратегия комбинирования

Комбо-стратегия требует одновременных сигналов покупки/продажи как от стратегии 123 реверсии, так и от стратегии линейной регрессии перехвата для получения фактических торговых ордеров, что эффективно фильтрует ложные сигналы и улучшает результативность торговли.

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

Стратегия имеет следующие преимущества:

  1. Многофакторная система эффективного фильтрации ложных сигналов и улучшения качества сигнала

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

  1. Наблюдение за ценовыми и трендовыми отношениями в режиме реального времени позволяет избежать ловушки

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

  1. Принимать во внимание торговые возможности как для тенденций, так и для перемен

Стратегия линейной регрессии лучше определяет точки покупки и продажи тренда. В то время как стратегия 123 реверсии фокусируется на определении точек реверсии. Обе стратегии могут объединять преимущества торговли трендом и реверсией.

  1. Настраиваемая оптимизация параметров стратегий

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

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

Стратегия также имеет следующие риски:

  1. Водители, работающие с несколькими факторами, могут упустить некоторые возможности

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

  1. Линейная регрессия имеет задержку

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

  1. Необходима разумная оптимизация параметров

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

Риски могут быть уменьшены следующими методами:

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

  2. Комбинировать индикаторы тренда для замены линейной регрессии для получения более реального времени суждений о тренде

  3. Использование методов машинного обучения для оптимизации параметров и улучшения выбора параметров

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

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

  1. Использование методов машинного обучения для оптимизации параметров

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

  1. Добавить механизм стоп-лосса

Правила стоп-лосса могут устанавливаться на основе ATR, индикаторов тренда и т.д. для контроля максимальных потерь на одну сделку.

  1. Оптимизировать логику входа и выхода

На основе торговых сигналов могут быть добавлены вспомогательные условия, такие как фильтры скользящих средних и полосы Боллинджера, чтобы уменьшить частоту корректировки позиции и избежать ловушки.

  1. Комбинированный анализ настроений

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

  1. Добавить модуль прогнозирования машинного обучения

Использовать модели глубокого обучения, такие как LSTM и GRU, для прогнозирования цен в качестве важной ссылки для принятия стратегических решений.

Резюме

Эта стратегия сочетает в себе стратегию 123 реверсии и стратегию линейного регрессионного перехвата для реализации многофакторной количественной торговли. Механизм проверки может эффективно отфильтровывать ложные сигналы и захватывать возможности для реверсии и тренда. Но есть также определенные риски задержки в стратегии, которые требуют внимания к оптимизации параметров и расширению механизмов контроля рисков для дальнейшего улучшения стабильности стратегии. Сочетание машинного обучения и других технологий для оптимизации параметров и расширения функций является полезным дальнейшим направлением оптимизации для стратегии.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-19 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/01/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Linear Regression Intercept is one of the indicators calculated by using the 
// Linear Regression technique. Linear regression indicates the value of the Y 
// (generally the price) when the value of X (the time series) is 0. Linear 
// Regression Intercept is used along with the Linear Regression Slope to create 
// the Linear Regression Line. The Linear Regression Intercept along with the Slope 
// creates the Regression line.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

LRI(Length,xSeria) =>
    pos = 0.0
    xX = Length * (Length - 1) * 0.5
    xDivisor = xX * xX - Length * Length * (Length - 1) * (2 * Length - 1) / 6
    xXY = 0.0
    for i = 0 to Length-1
    	xXY := xXY + (i * xSeria[i])
    xSlope = (Length * xXY - xX * sum(xSeria, Length)) / xDivisor
    xLRI = (sum(xSeria, Length) - xSlope * xX) / Length
    pos:= iff(close > xLRI, 1,
           iff(close < xLRI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Line Regression Intercept", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Line Regression Intercept ----")
LengthLRI = input(14, minval=1)
xSeria = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLRI = LRI(LengthLRI,xSeria)
pos = iff(posReversal123 == 1 and posLRI == 1 , 1,
	   iff(posReversal123 == -1 and posLRI == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Больше