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

Автор:Чао Чжан, Дата: 2023-11-08 11:36:51
Тэги:

img

Обзор

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

Принципы

Эта стратегия использует функцию sma для расчета быстрых и медленных скользящих средних. fast_SMA - это быстрая скользящая средняя с длиной периода fast_SMA_input. slow_SMA - это медленная скользящая средняя с длиной периода slow_SMA_input.

Стратегия использует функции перекрестка и перекрестка для определения перекрестка между быстрыми и медленными скользящими средними. Когда быстрая скользящая средняя пересекает поверх медленной скользящей средней, переменная LONG является истинной и генерируется сигнал покупки. Когда быстрая скользящая средняя пересекает ниже медленной скользящей средней, переменная SHORT является истинной и генерируется сигнал продажи.

Преимущества

Эта стратегия имеет следующие преимущества:

  1. Простой принцип, легко понять и реализовать.
  2. Настраиваемые скользящие средние периоды, адаптируемые к различным рыночным условиям.
  3. Фильтрует рыночный шум и генерирует относительно надежные торговые сигналы.
  4. Захватывает как начало, так и поворотные моменты тенденций.

Риски

Эта стратегия также сопряжена со следующими рисками:

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

Управление рисками:

  1. Установка соответствующих скользящих средних параметров для сбалансированного эффекта фильтрации и чувствительности.
  2. Добавьте фильтры индикаторов тренда, чтобы избежать ложных сигналов.
  3. Установите точки остановки потери для контроля потери по сделке.

Оптимизация

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

  1. Добавить условия фильтрации по объему или волатильности при прорыве, чтобы избежать ложных прорывов.
  2. Включить индикаторы тренда для определения направления и силы тренда.
  3. Добавьте модели машинного обучения для автоматической оптимизации параметров скользящей средней.
  4. Комбинировать с поддержкой/сопротивлением и полосами Боллинджера для определения диапазонов торговли и улучшения точности входа.

Резюме

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


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)

Больше