Стратегия кроссовера-прорыва


Дата создания: 2023-10-12 16:47:55 Последнее изменение: 2023-10-12 16:47:55
Копировать: 0 Количество просмотров: 584
1
Подписаться
1617
Подписчики

Обзор

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

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

Стратегия основана на движущейся средней линии, чтобы определить время покупки и продажи.upOrDownиlongOrShortДва булевых входных параметра для определения лишнего заготовки; использованиеpercentInputВвод параметров для установки процента отклонения от изменения цены акции; использованиеclosePositionDaysВведите параметры, чтобы установить количество дней, в течение которых вы будете держать позицию.

Центральная логика стратегии заключается в следующем: рассчитывая сегодняшний обвал по отношению к вчерашнему, если достигнут процент от ввода обвала, то посылается торговый сигнал. Если это позыв, то сделайте больше, когда сегодняшний обвал по отношению к вчерашнему превышает обвал; если это позыв, то сделайте нуль, когда сегодняшний обвал по отношению к вчерашнему превышает обвал.

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

Стратегические преимущества

  • Использование движущейся равнолинейной форки для определения рыночных тенденций является проверенным и надежным методом.
  • Логика стратегии проста, ясна и понятна
  • Частота стратегии может быть регулирована с помощью параметров
  • Автоматические механизмы остановки убытков позволяют эффективно контролировать риски

Стратегический риск

  • Мобильная средняя имеет отсталость и может упустить момент быстрого изменения цены
  • В ближайшее время могут произойти сильные колебания цен на акции, что приведет к ненужным перекрестным сигналам.
  • Неправильная настройка параметров ParameterSet также может повлиять на эффективность стратегии
  • Неспособность эффективно реагировать на воздействие внезапных событий

Меры контроля риска:

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

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

  • Можно рассмотреть возможность перехода от скользящей средней к скользящей средней индексов, таких как EMA, DMA, чтобы сделать их более чувствительными к изменениям цен
  • Увеличение механизма остановки убытков, например, немедленная остановка убытков при прорыве средней линии
  • Добавление других технических показателей для комбинации, таких как MACD, KDJ и т. д., повышает вероятность успеха стратегии
  • Можно попробовать методы машинного обучения для автоматической оптимизации параметров.
  • Оптимизация времени входа и выхода, например, breakout entrada

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

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

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

//@version=3
//  Created by Leon Ross

strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)
  
//Inputs
longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false
upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day
percentInput = input(title="Percent", type=float, defval=4.5)
closePositionDays = input(title="How Many Days to Close Position", defval=4)

//Conditions
//percentUpValue = (close / close[1]) - 1
//percentUp = percentUpValue >= (percentInput/100.0)
//upConditions = percentUp
//percentDownValue = 1- (close / close[1])
//percentDown = percentDownValue >= (percentInput/100.0)
//downConditions = percentDown
upValue = (close / close[1]) - 1
downValue = 1 - (close / close[1])
allConditions = if(upOrDown)
    upValue >= (percentInput/100.0)
else
    downValue >= (percentInput/100.0)
    
//Plots
bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70)
bgcolor(allConditions ? silver : na, transp=70, offset=1)
bgcolor(allConditions ? silver : na, transp=70, offset=2)
bgcolor(allConditions ? silver : na, transp=70, offset=3)
bgcolor(allConditions ? silver : na, transp=70, offset=4)
//bgcolor(downConditions == 1 ? red : na, transp=70)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4)

//Entires
if(longOrShort)
    strategy.entry(id = "Long", long = true, when = allConditions) 
else
    strategy.entry(id = "Short", long = false, when = allConditions)

//Exits
if (barssince(allConditions) == closePositionDays)
    if(longOrShort)
        strategy.close("Long")
    else
        strategy.close("Short")