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

Автор:Чао Чжан, Дата: 2023-12-08 15:23:33
Тэги:

img

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

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

  1. Расчет 20-дневной простой скользящей средней и 60-дневной простой скользящей средней
  2. Пройти длинный курс, когда цена закрытия превышает 20-дневный MA
  3. Закрытие позиции при прорыве цены закрытия ниже 20-дневного MA
  4. Пройти длинный курс, когда цена закрытия превышает 60-дневный MA
  5. Закрытие позиции при прорыве цены закрытия ниже 60-дневного MA

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

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

  1. Принятие двойных МА делает стратегию более устойчивой. 20-дневный МА быстрее захватывает краткосрочные возможности, в то время как 60-дневный МА фильтрует некоторые рыночные шумы и блокировки в среднесрочной долгосрочной тенденции.
  2. Обратная проверка начинается с 2018 года и выбирает тайваньский фондовый рынок, который имеет более развитую торговую систему по сравнению с китайским рынком A-акций, что лучше отражает эффективность стратегии.
  3. Он устанавливает правильную стоп-лосс и размещение позиций, максимально контролируя риск.

Риски

  1. Стратегия основана исключительно на индикаторе MA. Она может вызвать больше волнений, когда на рынке нет очевидной тенденции.
  2. Стратегия не оптимизирует размер и позицию покупки/продажи, не позволяя максимизировать использование капитала.
  3. Стратегия реагирует симметрично на подъемы и падения цен, не способная адаптироваться к различным рыночным условиям.

Решения рисков:

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

Руководство по оптимизации

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

Резюме

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


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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 TW", overlay=true, margin_long=100, margin_short=100)
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
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)")

//進場條件
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) and time >= start_time
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


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


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) and time >= start_time
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     

Больше