Эта стратегия использует скользящие средние модели для определения направления тренда рынка. Когда выявляется бычья тенденция, она периодически открывает длинные позиции с фиксированными суммами, чтобы отслеживать восходящий тренд золотого креста на рынке.
Стратегия основывается главным образом на следующих технических принципах:
Использование линий EMA для определения направления тренда на рынке. Когда быстрая линия EMA пересекает медленную линию EMA, она рассматривается как бычий тренд и готовится к выходу на длинные позиции.
Когда MACD переходит от положительного к отрицательному, это указывает на то, что покупательная способность начинает ослабевать, поэтому пора входить в длинные позиции.
Ограничьте вход только один раз в месяц, чтобы избежать погони за максимумами.
Позвольте установить дату начала и дату окончания, чтобы ограничить период обратного тестирования.
В частности, стратегия сначала вычисляет линию быстрой EMA и линию медленной EMA и обнаруживает золотой крест между ними, чтобы определить тенденцию рынка. В то же время, она вычисляет индикатор MACD для определения конкретной точки входа. Когда оба критерия выполняются, генерируется длинный сигнал. Согласно правилу входа только один раз в месяц, фактические заказы входа определяются. Сумма капитала для каждой записи может быть предварительно установлена. Когда завершается бэкстест, стратегия будет активно закрывать все позиции.
Это простая и прямая тенденция, следующая стратегии с следующими преимуществами:
Использование линий EMA для определения основного тренда является простым и практичным.
Индикатор MACD может определить поворотный момент, когда покупательная способность начинает ослабевать относительно точно, что делает записи более безопасными.
Ограничиваясь только преследованием восходящего тренда один раз в месяц, можно избежать преследования максимумов и уничтожения восходящего тренда на бычьем рынке.
Разрешение на настройку входной суммы каждый месяц обеспечивает гибкость в размещении позиций.
Backtest может быть использован для оценки эффективности стратегии путем установления даты начала и окончания.
Он автоматически закрывает все позиции после завершения обратного теста, избегая неудобных остальных позиций.
Существуют некоторые потенциальные риски этой стратегии:
Определение тренда с помощью скользящих средних может упустить возможности во время временных отступлений или медленно реагировать на изменение тренда. Период может быть сокращен или могут быть добавлены дополнительные показатели.
Подумайте о том, чтобы ослабить частоту или добавить еще одну запись, когда вы превысите последние максимумы.
Существуют риски, связанные с настройкой кривой. Должно быть предоставлено больше пространства для настройки параметров и должна быть проверена надежность на разных рынках и периодах времени.
Существует риск преследования импульса и перекупки.
Эта периодическая инвестиционная тенденция в соответствии со стратегией может быть расширена и улучшена из следующих аспектов:
Добавьте логику стоп-лосса, чтобы активно сокращать убытки при появлении медвежьей реверсии.
Подумайте о добавлении еще одной покупки, когда гистограмма MACD показывает бычье расхождение, чтобы получить больше воздействия на восходящий тренд.
Введите сравнение нового максимума текущего месяца с предыдущим месяцем для оценки силы импульса.
Добавьте логику размещения позиций. Ежемесячная сумма входа может быть адаптирована на основе процента, а не фиксированного значения.
Оцените влияние различных комбинаций MA и параметров MACD. Найдите оптимальный набор параметров.
Добавьте последующий стоп-лосс, который следует за ценой на определенном расстоянии после достижения новых максимумов, позволяя прибыли работать.
Эта стратегия представляет собой простой и чистый подход к тренду с использованием периодических инвестиций и скользящих средних. Она проста в понимании и реализации, служа хорошей отправной точкой для обучения алгоритмической торговле.
/*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)