Количественная торговая стратегия, основанная на пересечении цены и SMA


Дата создания: 2024-02-22 17:34:09 Последнее изменение: 2024-02-22 17:34:09
Копировать: 0 Количество просмотров: 572
1
Подписаться
1617
Подписчики

Количественная торговая стратегия, основанная на пересечении цены и SMA

Обзор

Эта стратегия называется количественной торговой стратегией, основанной на пересечении цены и SMA, и генерирует торговые сигналы, в основном, путем расчета SMA в разные циклы и отслеживания пересечения цены и SMA. Когда цена снизу вверх нарушает SMA, генерирует сигнал покупки; когда цена снизу вниз нарушает SMA, генерирует сигнал продажи.

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

Центральная логика стратегии заключается в том, чтобы отслеживать пересечение цены с 21-дневной простой скользящей средней (SMA). В то же время, стратегия также рассчитывает 50-дневную SMA и 200-дневную SMA, что помогает определить общую тенденцию.

В частности, стратегия запрашивает закрытие акций в пределах установленного диапазона дат, а затем вычисляет различные SMA на основе входящих циклов SMA. Если цена снизу вверх превышает 21-ю SMA, устанавливается сигнал покупки; если цена снизу вниз превышает 21-ю SMA, устанавливается сигнал продажи.

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

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

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

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

Риски и решения

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

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

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

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

  1. Тестировать и выбирать оптимальные комбинации параметров SMA. Можно отслеживать различные длины SMA, чтобы найти наиболее подходящий период.

  2. Добавить другие индикаторы FilterSignal confirmation, такие как RSI, MACD и т. Д. │ Это может отфильтровать некоторые ошибочные сигналы │

  3. Добавление логики остановки. Установка максимально допустимых потерь или перемещение остановки позволяет контролировать риск.

  4. Оптимизация времени входа. Можно рассмотреть вход вблизи важных прорывных точек, а не строго следить за пересечением SMA.

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

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

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

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

//@version=5
strategy("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true)

// Define start and end year inputs
start_year = input.int(2022, title="Start Year")
end_year = input.int(2022, title="End Year")

// Define start and end month inputs
start_month = input.int(1, title="Start Month", minval=1, maxval=12)
end_month = input.int(12, title="End Month", minval=1, maxval=12)

// Define SMA length inputs
sma_length = input.int(21, title="SMA Length")
sma_length_50 = input.int(50, title="50 SMA Length")
sma_length_200 = input.int(200, title="200 SMA Length")

// Filter data within the specified date range
filter_condition = true
filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on)

// Define SMAs using the input lengths
sma = ta.sma(filtered_close, sma_length)
sma_50 = ta.sma(filtered_close, sma_length_50)
sma_200 = ta.sma(filtered_close, sma_length_200)

// Initialize position
var bool in_position = false

// Condition for a price cross above SMA within the date range
cross_above = filter_condition and ta.crossover(filtered_close, sma)

// Condition for a price cross below SMA within the date range
cross_below = filter_condition and ta.crossunder(filtered_close, sma)

// Buy condition
if cross_above
    in_position := true

// Sell condition
if cross_below
    in_position := false

// Strategy entry and exit
if cross_above
    strategy.entry("Buy", strategy.long)
if cross_below
    strategy.close("Buy")

// Plot the SMAs on the chart
plot(sma, color=color.blue, title="21 SMA")
plot(sma_50, color=color.red, title="50 SMA")
plot(sma_200, color=color.orange, title="200 SMA")

// Plot the Buy and Sell signals with "tiny" size
plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal")
plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")