Стратегия следования за трендом, основанная на скользящих средних


Дата создания: 2023-12-20 14:23:49 Последнее изменение: 2023-12-20 14:23:49
Копировать: 0 Количество просмотров: 771
1
Подписаться
1621
Подписчики

Стратегия следования за трендом, основанная на скользящих средних

Обзор

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

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

Эта стратегия основана на следующих условиях, которые дают сигнал покупки, когда они выполняются одновременно:

  1. Текущие цены на акции выше 150- и 200-дневных скользящих средних
  2. 150-дневная подвижная средняя выше, чем 200-дневная
  3. 200-дневная скользящая средняя в течение последнего месяца находится на подъеме
  4. 50-дневная скользящая средняя выше, чем 150- и 200-дневная скользящая средняя
  5. Нынешние цены на акции выше 50-дневного скользящего среднего
  6. Акции выросли более чем на 25% по сравнению с 52-недельным минимумом
  7. Акции близки к 52-недельному максимуму

Когда вышеуказанные условия выполняются, стратегия определяет, что цена акций находится в стадии роста, что вызывает сигнал покупки.

Кроме того, стратегия одновременно устанавливает линию стоп-лосса, когда цена акций отступает от максимума на 5% или повышается на 10% для прекращения или остановки.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Pure Mark Minervini 10%TP 5%CL", pyramiding = 0, commission_type=strategy.commission.percent, commission_value=0.08, overlay=true)

ma50 = sma(close,50)
ma150 = sma(close,150)
ma200 = sma(close,200)
ma200_22 = ma200[22]

high_loopback = input(260, "High Lookback Length")
low_loopback = input(260, "Low Lookback Length")
highest_price = highest(high, high_loopback)
lowest_price = lowest(low, low_loopback)
above52lo = ((close/lowest_price)-1)*100
below52hi = (1-(close/highest_price))*100
ep = strategy.position_avg_price

trigger = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
var label maLabel = na
if (trigger)
    yLocation = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
         yloc.abovebar :
         yloc.belowbar

    // labelStyle = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
    //      label.style_labeldown :
    //      label.style_labelup

buy = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
sell = close>ep*1.1 or close<ep*0.95

strategy.entry("TF", strategy.long, when = buy)
strategy.close("TF", when = sell)