На основе стратегии относительного импульса


Дата создания: 2024-01-29 08:38:04 Последнее изменение: 2024-01-29 08:38:04
Копировать: 0 Количество просмотров: 722
1
Подписаться
1617
Подписчики

На основе стратегии относительного импульса

Обзор

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

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

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

  1. Расчет доходности акции за определенный период времени как динамика акции
  2. Индекс рассчитывает доходность за тот же период времени как динамику индекса
  3. Сглаживание скользящих средних для расчета движения акций и движения индекса
  4. Когда движущаяся средняя движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движущейся средней движу
  5. Когда движущаяся средняя движущейся средней движущейся средней движущейся средней движущейся средней движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины движущейся величины

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

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

Стратегия относительной динамики имеет следующие преимущества:

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

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

Однако есть и риски, связанные со стратегией относительной динамики:

  1. После пика роста акций может произойти обратная корректировка, существует риск недостаточного сдерживания
  2. Относительная динамика может давать ошибочные сигналы, идентифицированный пик роста не является истинным пиком
  3. Необходимо установить стоп-лосс, чтобы контролировать максимальные потери

Эти риски можно контролировать с помощью таких методов, как разумное остановка и остановка, а также соответствующая корректировка параметров.

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 15m
basePeriod: 5m
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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("Relative Returns Strategy", overlay=false, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

index_ticker=input("BTC_USDT:swap")
Loopback = input(40, step=20)
useStopAndIndexReturns = input(true)
useStopAndIndexReturnsMa = input(true)

useDifference = not useStopAndIndexReturns

MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
MALength = input(10, minval=10,step=10)

i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Backtest Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "Backtest End Time", type = input.time)
inDateRange = true

f_secureSecurity(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on)
f_getMovingAverage(source, MAType, length)=>
    ma = sma(source, length)
    if(MAType == "ema")
        ma := ema(source,length)
    if(MAType == "hma")
        ma := hma(source,length)
    if(MAType == "rma")
        ma := rma(source,length)
    if(MAType == "vwma")
        ma := vwma(source,length)
    if(MAType == "wma")
        ma := wma(source,length)
    ma

index = f_secureSecurity(index_ticker, '1D', close, 0)
stock_return = (close - close[Loopback])*100/close
index_return = (index - index[Loopback])*100/index

stock_return_ma = f_getMovingAverage(stock_return, MAType, MALength)
index_return_ma = f_getMovingAverage(index_return, MAType, MALength)
relativeReturns = stock_return - index_return
relativeReturns_ma = f_getMovingAverage(relativeReturns, MAType, MALength)

plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma : stock_return : na, title="StockReturn", color=color.green, linewidth=1)
plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? index_return_ma : index_return : na, title="IndexReturn", color=color.red, linewidth=1)

plot(useDifference?relativeReturns:na, title="Relative-Returns", color=color.blue, linewidth=1)
plot(useDifference?relativeReturns_ma:na, title="MA", color=color.red, linewidth=1)

buyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma > index_return_ma : stock_return > index_return : relativeReturns > relativeReturns_ma)
closeBuyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma < index_return_ma : stock_return < index_return : relativeReturns < relativeReturns_ma)
strategy.entry("Buy", strategy.long, when=buyCondition and inDateRange, oca_name="oca")
strategy.close("Buy", when=closeBuyCondition)