Стратегия двойного движущегося среднего является типичным трендом после количественной торговой стратегии. Она генерирует торговые сигналы путем расчета простых движущихся средних различных периодов и проверки, пробивается ли цена через них для определения позиций. Эта стратегия использует 20-дневные и 60-дневные движущиеся средние в качестве торговых сигналов.
Основная логика стратегии двойного маркетинга заключается в том, чтобыиспользовать скользящие средние различных периодов для фиксации ценовых тенденций и генерировать торговые сигналы, когда цена прорывается через скользящие средние.
В частности, эта стратегия использует 20-дневные и 60-дневные простые скользящие средние. Эти две скользящие средние могут рассматриваться как инструменты для улавливания краткосрочных и средне-долгосрочных тенденций соответственно. Когда краткосрочная цена прорывается через средне-долгосрочную цену, это сигнализирует о том, что рынок находится в восходящей тенденции и, следовательно, должен идти на длинный. Когда краткосрочная цена падает ниже средне-долгосрочной цены, это сигнализирует о том, что рынок находится в нисходящей тенденции, и, следовательно, позиции должны быть сокращены.
Код используетta.crossover
иta.crossunder
для определения того, прорвалась ли цена или опустилась ниже скользящей средней.
Стратегия двойного прорыва скользящей средней имеет следующие преимущества:
В этой стратегии есть и некоторые риски:
Стратегия может быть расширена из следующих аспектов:
Стратегия двойного движущегося среднего является простой и практичной стратегией следования трендам. Она может эффективно улавливать средне-долгосрочные тенденции, избегая краткосрочного рыночного шума. Кроме того, простая в понимании логика и ограниченные параметры делают ее очень подходящей для количественной торговли. Конечно, есть возможности для улучшений, таких как настройка параметров, фильтрация сигналов и стоп-лосс, чтобы сделать ее более стабильной и прибыльной.
/*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)