Стратегия отслеживания золотой тенденции на основе периодических инвестиций

Автор:Чао Чжан, Дата: 31-10-2023 15:09:22
Тэги:

img

Обзор

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

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

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

  1. Использование линий EMA для определения направления тренда на рынке. Когда быстрая линия EMA пересекает медленную линию EMA, она рассматривается как бычий тренд и готовится к выходу на длинные позиции.

  2. Когда MACD переходит от положительного к отрицательному, это указывает на то, что покупательная способность начинает ослабевать, поэтому пора входить в длинные позиции.

  3. Ограничьте вход только один раз в месяц, чтобы избежать погони за максимумами.

  4. Позвольте установить дату начала и дату окончания, чтобы ограничить период обратного тестирования.

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

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

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

  1. Использование линий EMA для определения основного тренда является простым и практичным.

  2. Индикатор MACD может определить поворотный момент, когда покупательная способность начинает ослабевать относительно точно, что делает записи более безопасными.

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

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

  5. Backtest может быть использован для оценки эффективности стратегии путем установления даты начала и окончания.

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

Риски и способы их смягчения

Существуют некоторые потенциальные риски этой стратегии:

  1. Определение тренда с помощью скользящих средних может упустить возможности во время временных отступлений или медленно реагировать на изменение тренда. Период может быть сокращен или могут быть добавлены дополнительные показатели.

  2. Подумайте о том, чтобы ослабить частоту или добавить еще одну запись, когда вы превысите последние максимумы.

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

  4. Существует риск преследования импульса и перекупки.

Возможности для расширения

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

  1. Добавьте логику стоп-лосса, чтобы активно сокращать убытки при появлении медвежьей реверсии.

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

  3. Введите сравнение нового максимума текущего месяца с предыдущим месяцем для оценки силы импульса.

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

  5. Оцените влияние различных комбинаций MA и параметров MACD. Найдите оптимальный набор параметров.

  6. Добавьте последующий стоп-лосс, который следует за ценой на определенном расстоянии после достижения новых максимумов, позволяя прибыли работать.

Резюме

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 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/
// © runescapeyttanic

//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)

//INPUTS##################################################################################################################

maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)

endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################

fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma

//EMA Distance CALC########################################################################################################

ma1 =ema(close,emalength)
distFromMean = close - ma1

inDateRange = true

longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false

if(longCondition and strategy.position_size == 0)
    strategy.entry("My Long Entry Id", strategy.long)
    longnow:=true

if(longCondition and strategy.position_size > 0)
    longnow:=true
    

if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
    strategy.entry("My Long Entry Id", strategy.long)

plotchar(minute, "Minuten", "", location = location.top)

plotchar(hour, "Stunden", "", location = location.top)    

plotchar(dayofmonth, "Tage", "", location = location.top)

plotchar(month, "Monat", "", location = location.top)

plotchar(year, "Jahr", "", location = location.top)

plotchar(strategy.position_size, "Positionen", "", location = location.top)

plotchar(longCondition, "Long Condition", "", location = location.top)

if true
    strategy.close_all()

//#########################################################################################################################

plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
    1
else
    0
    
plotarrow(series=plotArrow)



Больше