Стратегия перекрестного использования двойной SMA

Автор:Чао Чжан, Дата: 2023-11-23 16:42:58
Тэги:

img

Обзор

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

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

Эта стратегия использует два набора параметров SMA,smaB1, smaB2для сигналов покупки, иsmaS1, smaS2для сигналов продажи, представляющих более медленные и более быстрые скользящие средние соответственно.smaB1кресты сверхуsmaB2, сигнал покупки генерируется.smaS2кресты внизуsmaS1Это позволяет гибко регулировать условия входа и выхода, чтобы адаптироваться к изменяющейся рыночной среде.

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

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

Основными преимуществами этой стратегии являются:

  1. Использование двойной системы скрещивания скользящих средних позволяет гибко настраивать критерии входа и выхода для адаптации к изменениям рынка
  2. Сами линии SMA могут отфильтровать шум и генерировать более надежные торговые сигналы
  3. Настраиваемые комбинации параметров SMA позволяют оптимизировать параметры для разных продуктов

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

Существуют также некоторые риски, связанные с этой стратегией:

  1. Сигналы пересечения SMA могут отставать и не генерировать своевременные сигналы вокруг поворотных точек
  2. Неправильный выбор параметров SMA может привести к слишком многому ложных сигналов
  3. Сигналы, генерируемые в условиях волатильности рынка, могут не работать хорошо

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

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

Некоторые направления оптимизации для этой стратегии:

  1. Проверьте больше комбинаций параметров SMA для поиска оптимальных параметров
  2. Добавить подтверждение объема, чтобы избежать ошибочных сигналов во время сильных колебаний цен
  3. Комбинировать другие индикаторы (например, MACD, RSI) для фильтрации перекрестных сигналов SMA
  4. Добавьте стратегии стоп-лосса для закрепления прибыли и сокращения потерь

Резюме

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


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
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/
// © melihtuna

//@version=4
strategy("SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent)

smaB1 = input(title="smaB1",defval=377)
smaB2 = input(title="smaB2",defval=200)
smaS1 = input(title="smaS1",defval=377)
smaS2 = input(title="smaS2",defval=200)
smawidth = 2

plot(sma(close, smaB1), color = #EFB819, linewidth=smawidth, title='smaB1')
plot(sma(close, smaB2), color = #FF23FD, linewidth=smawidth, title='smaB2')
plot(sma(close, smaS1), color = #000000, linewidth=smawidth, title='smaS1')
plot(sma(close, smaS2), color = #c48dba, linewidth=smawidth, title='smaS2')

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => time >= start and time <= finish ? true : false 

longCondition = crossover(sma(close, smaB1),sma(close, smaB2))

if (window() and longCondition)
    strategy.entry("BUY", strategy.long)

shortCondition = crossover(sma(close, smaS2),sma(close, smaS1))

if (window() and shortCondition)
    strategy.entry("SELL", strategy.short)
    
    
    

Больше