
Эта стратегия позволяет отслеживать тренд на SPX500, используя в комбинации несколько показателей, таких как средняя линия, MACD и RSI, для определения направления тенденции в течение нескольких временных рамок.
Используйте 10-дневную простую скользящую среднюю для определения направления ценовой тенденции. Когда цена пересекает 10-дневную линию, она становится более высокой, а когда она пересекает ее, она становится более низкой.
Используйте положительно-отрицательную двунаправленную MACD для определения динамики. Вычислите разницу между 12 и 21 числами индекса в средних перемещениях, а затем перекрестите быструю и медленную линии на средних разницах, чтобы определить сигнал покупки и продажи.
14-дневный RSI и его 50-дневная средняя линия рассчитываются, средняя линия на RSI является позитивным сигналом, а низкая - негативным сигналом.
Трендная согласованность подтверждается с помощью 1, 3 и 5-минутных временных рамок.
Сигнал покупки возникает, когда цена пересекает 10-дневную линию выше, среднюю линию выше RSI, медленную линию выше MACD; сигнал продажи возникает, когда цена пересекает 10-дневную линию ниже, среднюю линию ниже RSI, медленную линию ниже MACD.
Мультииндикаторный портфель идентифицирует тенденции, повышает точность сигнала. 10-дневная средняя линия определяет направление основного тренда, MACD определяет сильную динамику, RSI подтверждает перекуп и перепродажу.
Подтверждение многократных временных рамок, чтобы избежать заблуждения от рыночного шума. Двойная проверка 1-минутных, 3-минутных и 5-минутных временных рамок, чтобы гарантировать синхронизацию сигналов, фильтрация ложных сигналов.
В сочетании с графическими формами оценки, интуитивно надежная. Графики помогают определить ценовые характеристики, избежать крайних районов точек купли-продажи и снизить риск потери.
Частота торгов является умеренной и соответствует характеристикам индексных торгов. Используя 10-дневную среднюю линию в качестве основного индикатора оценки, частота торгов не будет слишком высокой, чтобы избежать чрезмерных затрат на торговлю, связанных с повторными сделками.
Невозможность распознать трещины, вызванные внезапными событиями. Нерациональные события могут нарушить оценку модели, в этом случае следует снизить риск уклонения от позиции.
Параметры устанавливаются фиксированно, без учета изменений рыночной среды. В реальной жизни параметры должны быть скорректированы в соответствии с динамикой окружающей среды большого города, чтобы стратегия адаптировалась к различным ситуациям.
Пункты купли-продажи слишком идеализированы, их реализация затруднительна. Для более эффективной реализации сигналов следует использовать такие факторы, как стоимость скольжения, для настройки пунктов купли-продажи.
Многовременные рамки увеличивают задержку принятия решений.
Дополнительные механизмы по удержанию убытков, такие как перемещение убытков, процентные убытки и т. д., для контроля одиночных убытков.
Оптимизация параметров, позволяющая динамично адаптироваться к рыночной среде и повышать устойчивость стратегии.
В сочетании с контролем за ветром событий в горячих точках рынка, чтобы избежать серьезных событий, которые могут повлиять на стратегию.
Учитывая фактические затраты на транзакцию, такие как скольжение, можно скорректировать точку купли-продажи, чтобы сигнал был исполнен.
Тестирование различных методов получения значений, таких как K-линия, как источник подтверждения сигнала, богатый средствами проверки многократных временных рамок.
Добавление алгоритмов машинного обучения, модели обучения с использованием больших данных, автоматическая оптимизация параметров стратегии.
Эта стратегия позволяет отслеживать тренды на 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)