Долгосрочная скользящая средняя кроссоверная стратегия Ренко

Автор:Чао Чжан, Дата: 2024-01-24 10:55:57
Тэги:

img

Обзор

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

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

Основным источником сигналов этой стратегии является золотой крест и смертный крест краткосрочного индикатора TEMA и индикатора SMA.

Когда краткосрочная TEMA пересекает кратковременную SMA, идет длинный; когда краткосрочная TEMA пересекает ниже краткосрочной SMA, закрыть позиции.

Кроме того, стратегия также устанавливает два дополнительных параметра avg_protection и gain_protection для корректировки логики входа и остановки потерь:

  • При avg_protection>0 покупать только тогда, когда цена закрытия ниже текущей средней цены держания, что может снизить стоимость;

  • При gain_protection>0 продавать можно только тогда, когда цена закрытия превышает цену входа на определенный процент, чтобы получить прибыль.

Наконец, стратегия также использует долгосрочный индикатор SMMA в качестве фильтра тренда.

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

Основными преимуществами этой стратегии являются:

  1. Основанный на диаграммах Renko, он может эффективно фильтровать шум и идентифицировать тенденции;
  2. Использовать индикатор TEMA для создания сигналов с высокой чувствительностью и возможностью отслеживания;
  3. Параметры регулируемые богаты, чтобы контролировать стратегию входа;
  4. Комбинация долгосрочных и краткосрочных скользящих средних может использовать возможности в тенденциях.

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

Эта стратегия также сопряжена с некоторыми рисками:

  1. У самого Ренко неравномерная временная линия, которая не может контролировать время интервала;
  2. Высокая чувствительность TEMA также приводит к увеличению количества ложных сигналов;
  3. Неправильное настройка параметров может привести к отсутствию сделок.

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

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

Основными направлениями оптимизации этой стратегии являются:

  1. Испытать различные комбинации параметров для определения оптимальных параметров;
  2. Добавить стратегии стоп-потери, такие как стоп-потеря задержки, стоп-потеря диапазона и т.д., чтобы уменьшить DD;
  3. Комбинировать другие индикаторы для фильтрации сигналов с целью уменьшения ложных сигналов;
  4. Эффективность параметров испытания для различных продуктов.

Заключение

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


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TEMA Cross", overlay = true)

tema(src, len) =>
    3*ema(src, len) - 3*ema(ema(src, len), len) + ema(ema(ema(src, len),len),len)

smma(src, len) =>
    sa = 0.0
    sa := na(sa[1]) ? sma(src, len) : (sa[1] * (len - 1) + src) / len
    sa

temaLength = input(5)
smaLength = input(3)
smmaLength = input(30)
tema1 = tema(close, temaLength)
sma1 = sma(tema1, smaLength)
smma1 = smma(close,smmaLength)


plot(tema1, color = green, title = "TEMA")
plot(sma1, color = orange, title = "SMA")
plot(smma1, color = red, title = "SMMA")
minGainPercent = input(2)
gainMultiplier = minGainPercent * 0.01 + 1

avg_protection = input(1)
gain_protection = input(1)

longCondition = crossover(tema1, sma1) and tema1 < smma1
shortCondition = crossunder(tema1, sma1)

strategy.entry("Buy", strategy.long, when = longCondition and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

Больше