Прорыв импульса стратегии 200-дневной скользящей средней в конце месяца


Дата создания: 2023-12-08 16:02:08 Последнее изменение: 2023-12-08 16:02:08
Копировать: 1 Количество просмотров: 795
1
Подписаться
1621
Подписчики

Прорыв импульса стратегии 200-дневной скользящей средней в конце месяца

Обзор

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

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

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

Анализ преимуществ

  1. Преимущество стратегии в том, что она проста, эффективна, легко понятна и реализуема.
  2. Использование точек в конце месяца позволяет снизить частоту сделок, снизить затраты на сделку и влияние скольжения
  3. 200-дневная средняя линия является очень распространенным среднесрочным и долгосрочным трендовым индикатором, действенным для большинства акций
  4. Стратегическое отступление и максимальное падение были небольшими, а риск - контролируемым.

Анализ рисков

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

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

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

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

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

Исходный код стратегии
/*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/
// © muscleriot
//200 dma
//2000-2016 backtested 
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of  equity always

dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)

to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)

time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and 
   time < timestamp(to_year, to_month, to_day, 23, 59)



xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)    
plotchar(xSell, "Sell","S", color=color.red)    
if (xLong == true) and time_cond
    strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
    strategy.close("long")