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

Автор:Чао Чжан, Дата: 2024-02-22 17:34:09
Тэги:

img

Обзор

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

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

Основная логика этой стратегии заключается в отслеживании ценового перекрестка с 21-дневной простой скользящей средней (SMA).

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

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

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

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

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

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

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

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

Руководство по оптимизации

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

  1. Тестируйте и выбирайте оптимальные комбинации параметров SMA. Отслеживайте разные длины SMA, чтобы найти лучшие периоды.

  2. Добавьте другие индикаторы для фильтрации Сигнала подтверждения, такие как 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")


Больше