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


Дата создания: 2023-11-14 14:29:39 Последнее изменение: 2023-11-14 14:29:39
Копировать: 1 Количество просмотров: 667
1
Подписаться
1617
Подписчики

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

Обзор

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

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

  1. Используйте 10-дневную простую скользящую среднюю для определения направления ценовой тенденции. Когда цена пересекает 10-дневную линию, она становится более высокой, а когда она пересекает ее, она становится более низкой.

  2. Используйте положительно-отрицательную двунаправленную MACD для определения динамики. Вычислите разницу между 12 и 21 числами индекса в средних перемещениях, а затем перекрестите быструю и медленную линии на средних разницах, чтобы определить сигнал покупки и продажи.

  3. 14-дневный RSI и его 50-дневная средняя линия рассчитываются, средняя линия на RSI является позитивным сигналом, а низкая - негативным сигналом.

  4. Трендная согласованность подтверждается с помощью 1, 3 и 5-минутных временных рамок.

  5. Сигнал покупки возникает, когда цена пересекает 10-дневную линию выше, среднюю линию выше RSI, медленную линию выше MACD; сигнал продажи возникает, когда цена пересекает 10-дневную линию ниже, среднюю линию ниже RSI, медленную линию ниже MACD.

Стратегические преимущества

  1. Мультииндикаторный портфель идентифицирует тенденции, повышает точность сигнала. 10-дневная средняя линия определяет направление основного тренда, MACD определяет сильную динамику, RSI подтверждает перекуп и перепродажу.

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

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

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

Стратегический риск

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

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

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

  4. Многовременные рамки увеличивают задержку принятия решений.

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

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

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

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

  4. Учитывая фактические затраты на транзакцию, такие как скольжение, можно скорректировать точку купли-продажи, чтобы сигнал был исполнен.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
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/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)

//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)

data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1

bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)     

//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
    
sh = ta.ema(close,sma)  

lon= ta.ema(close,lma) 

ratio = math.min(sh,lon)/math.max(sh,lon)

Mac = ratio - 1
if(sh>lon)
    Mac := 2-ratio - 1
else
    Mac := ratio - 1

MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1

MacNorm2 = MacNorm

if(np<2)
    MacNorm2 := Mac
else
    MacNorm2 := MacNorm
    
Trigger = ta.wma(MacNorm2, tsp)

trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)

//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr

//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)     
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)     
     
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
    strategy.entry("LONG", strategy.long, 1)

if (shortSignal)
    strategy.entry("SHORT", strategy.short, 1)

// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)