Стратегия отслеживания тенденций в разные периоды времени

Автор:Чао Чжан, Дата: 2023-11-14 14:29:39
Тэги:

img

Обзор

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

Логика стратегии

  1. 10-дневная простая скользящая средняя оценивает тенденцию цены.

  2. MACD оценивает силу импульса. Он рассчитывает разницу между 12- и 21-дневными экспоненциальными скользящими средними, и перекресток между линией MACD и линией сигнала генерирует торговые сигналы. Пересечение линии MACD выше линии сигнала указывает на рост, а пересечение ниже указывает на спад.

  3. 14-дневный RSI и его 50-дневный MA рассчитываются.

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

  5. Когда цена пересекает 10-дневный MA, RSI пересекает его MA, а линия MACD пересекает линию сигнала, генерируется сигнал покупки.

Преимущества

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

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

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

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

Риски

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

  2. Фиксированные параметры без учета изменяющихся рыночных условий.

  3. Слишком идеализированные точки входа с трудностями выполнения на практике.

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

Улучшение

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

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

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

  4. Учет затрат на торговлю, таких как скольжение, и корректировка точек входа/выхода для лучшего исполнения.

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

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

Заключение

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


/*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)

Больше