Количественная стратегия торговли на основе SMA и EMA

Автор:Чао Чжан, Дата: 2023-12-12 12:31:25
Тэги:

img

I. Обзор стратегии

Эта стратегия называется Квантитативная торговая стратегия на основе SMA и EMA.

II. Принцип стратегии

  1. Вычислить SMA9, SMA50, SMA180 цены закрытия и EMA20.

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

  3. При покупке сигнальных триггеров выполняйте стратегию длинной позиции; при продаже сигнальных триггеров закрывайте длинную позицию.

  4. При продаже сигнальных триггеров, выполните стратегию короткой позиции; при покупке сигнальных триггеров, закрывайте короткую позицию.

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

  1. Объединение нескольких скользящих средних для формирования торговых сигналов повышает точность и стабильность.

  2. Расчет динамической поддержки и сопротивления делает торговые сигналы более надежными.

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

  4. Поддержка как длинных, так и коротких позиций может принести прибыль на трендовых и боковых рынках.

IV. Анализ рисков

  1. SMA имеет эффект отставания, который может задержать сигналы покупки и продажи и повлиять на эффективность стратегии.

  2. Без механизма остановки потерь, убытки могут расшириться.

  3. Недостаточные данные об обратном тестировании, параметры должны быть скорректированы в соответствии с рынком.

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

Решения:

  1. Правильно корректируйте периоды SMA.
  2. Установите разумный стоп-лосс.
  3. Увеличить размер выборки для обратного тестирования, скорректировать параметры.
  4. Улучшить механизмы контроля рисков.

V. Оптимизация

  1. Добавить стоп-лосс на основе волатильности для контроля одиночных потерь.

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

  3. Добавить анализ ключевых цен для улучшения точности поддержки и сопротивления.

  4. Испытывайте различные комбинации параметров, чтобы найти лучшие параметры.

VI. Резюме

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

]


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-11 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//SMA and EMA code
smaInput1 = input(9, title="SMA1")
smaInput2 = input(50, title="SMA2")
smaInput3 = input(180, title="SMA3")
emaInput1 = input(20, title="EMA1")
sma1 = sma(close, smaInput1)
sma2 = sma(close, smaInput2)
sma3 = sma(close, smaInput3)
EMA1 = ema(close, emaInput1)
plot(sma1, color= color.red , title="SMA1")
plot(sma2, color = color.blue, title="SMA2")
plot(sma3, color= color.white, title="SMA3")
plot(EMA1, color = color.yellow, title="EMA1")

no=input(3,title="BUY/SELL Swing")
Barcolor=input(false,title="BUY/SELL Bar Color")
Bgcolor=input(false,title="BUY/SELL Background Color")
res=highest(high,no)
sup=lowest(low,no)
avd=iff(close>res[1],1,iff(close<sup[1],-1,0))
avn=valuewhen(avd!=0,avd,0)
tsl=iff(avn==1,sup,res)

// Buy/sell signals
BuySignal = crossover(close, tsl)
SellSignal = crossunder(close, tsl)

// Enter long position
strategy.entry("Buy", strategy.long, when=BuySignal)

// Exit long position
strategy.exit("Sell", "Buy", when=SellSignal)

// Enter short position
strategy.entry("Sell", strategy.short, when=SellSignal)

// Exit short position
strategy.exit("Buy", "Sell", when=BuySignal)

colr = close>=tsl ? color.green : close<=tsl ? color.red : na
plot(tsl, color=colr)


Больше