Стратегия динамического идеологического разворота тренда


Дата создания: 2023-12-13 16:52:34 Последнее изменение: 2023-12-13 16:52:34
Копировать: 0 Количество просмотров: 635
1
Подписаться
1621
Подписчики

Стратегия динамического идеологического разворота тренда

Обзор

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

Стратегический принцип

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

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

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

  • Использование линейной регрессии для прогнозирования ценовых тенденций повышает точность сигналов
  • Идеология, объединенная с подвижными средними, чтобы уловить обратный курс
  • Линейная регрессия, основанная на количестве сделок, имеет больше экономического смысла
  • Многократное подтверждение в сочетании с MACD и другими показателями, уменьшает количество ложных сигналов

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

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

Направление оптимизации

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-12 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)