Количественная торговая стратегия с прорывом двойной скользящей средней


Дата создания: 2024-02-04 16:06:46 Последнее изменение: 2024-02-04 16:06:46
Копировать: 0 Количество просмотров: 606
1
Подписаться
1617
Подписчики

Количественная торговая стратегия с прорывом двойной скользящей средней

Обзор

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

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

Основная логика стратегии “двойного прорыва”Использование движущихся средних разных циклов, чтобы захватить тенденции цены и дать торговый сигнал, когда цена переходит через движущуюся среднюю

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

В коде принятоta.crossoverиta.crossunderДля определения того, будет ли цена преодолевать или опускаться ниже определенного скользящего среднего значения. Когда происходит прорыв, высылаются указания на увеличение или уменьшение позиции.

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

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

  1. Концепция проста, легко понять и реализовать.
  2. Это позволяет эффективно отслеживать рыночные тенденции и избегать влияния шума.
  3. Политические параметры меньше, их легче оптимизировать.
  4. Гибкость в выборе циклов движущихся средних, адаптация чувствительности к рынку.

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

Однако есть и другие риски, связанные с двусторонним прорывом:

  1. Когда рынок находится в шокирующем тренде, может возникать несколько ошибочных сигналов. Это может быть смягчено увеличением периода удержания позиции.
  2. Нельзя эффективно ловить быстро меняющийся рынок. Можно использовать другие показатели в качестве фильтров.
  3. Движущаяся средняя inherently lagging, не способна заранее реагировать на изменения цен.

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
basePeriod: 15m
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/
// © Astorhsu

//@version=5
strategy("Astor SMA20/60", overlay=true)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31)  //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)  //回測開始的時間函數

//Indicators
sma10 = ta.sma(close,10)
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")

//進場條件
// trend1 = sma60 > sma20 //假設目前趨勢為60>20
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) 
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) 
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) 
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) 
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     
    
// longCondition2 = ta.crossover(close, ta.sma(close, 10))
// if (longCondition2) 
//     strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多")


// shortCondition2 = ta.crossunder(close, ta.sma(close, 10))
// if (shortCondition2)
//     strategy.close("open long10",comment="跌破m10平倉", qty=1)