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

Автор:Чао Чжан, Дата: 2024-02-04 16:06:46
Тэги:

img

Обзор

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

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

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

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

Код используетta.crossoverиta.crossunderдля определения того, прорвалась ли цена или опустилась ниже скользящей средней.

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

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

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

Риски

В этой стратегии есть и некоторые риски:

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

Области улучшения

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

  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)   


Больше