Стратегия торговли с двойной перемещающейся средней реверсией

Автор:Чао Чжан, Дата: 2023-11-10 11:18:38
Тэги:

img

Обзор

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

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

Стратегия использует экспоненциальную скользящую среднюю (EMA) для расчета быстрой и медленной линий. Длина быстрой MA составляет 10 периодов, а длина медленной MA - 30 периодов. Стратегия сначала рассчитывает быструю EMA и медленную EMA, затем выставляет линии и показывает разные цветные фоны для указания направления тренда.

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

В восходящем тренде, если есть красная свеча (закрытие ниже открытия) и вчера также была красная свеча, делайте длинный ход. Установите стоп-лосс на 300 пунктов и получите прибыль, закрыв короткую позицию.

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

После открытия позиции в каждом направлении, если время ожидания превышает 1008000000 миллисекунд (около 2 недель), закройте позицию силой, чтобы избежать тупика.

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

  • Двойная система EMA может эффективно отфильтровать рыночный шум и выявлять моменты изменения тренда
  • Быстрые и медленные МА в сочетании с цветами свечей обеспечивают надежные сигналы входа
  • Стратегии остановки потерь и получения прибыли уменьшают потери для отдельных сделок
  • Механизм принудительного закрытия позволяет избежать больших потерь от тупиков

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

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

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

  • Проверка рентабельности систем EMA при различных параметрах для оптимизации быстрых и медленных длин MA
  • Подумайте о добавлении других индикаторов, таких как MACD для подтверждения, чтобы улучшить точность сигнала
  • Связь стоп-потери с ежедневными изменениями объема
  • Динамическая корректировка времени принудительного закрытия на основе волатильности рынка

Заключение

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


/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
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/
// © yeainshukla

//@version=5


strategy('BuyRedSellGreen4H', overlay = true)
greenCandle = close > open
redCandle = open > close

start  = timestamp(2023,9,18,0,00)
end = timestamp(2023,12,31,0,00)


fastLength = input.int(10, title="Fast Average Length")
slowLength = input.int(30, title="Slow Average Length")

averageData = input.source(close, title="Average Data Source")

// Calculate exponential moving averages
fastAverage = ta.ema(averageData, fastLength)
slowAverage = ta.ema(averageData, slowLength)

// Plot averages
plot(fastAverage, color=color.navy, title="Fast EMA")
plot(slowAverage, color=color.fuchsia, linewidth=2, title="Slow EMA")

// Show the moving average trend with a coloured background
backgroundColor = if close > fastAverage and fastAverage > slowAverage
    color.new(color.green, 85)
else if close < fastAverage and fastAverage < slowAverage
    color.new(color.red, 85)
else
    color.new(color.orange, 90)

bgcolor(backgroundColor, title="EMA Background")


if time >= start and time < end
    if(close < open) 
        if(close[1] < open[1])
            strategy.entry("Enter Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Enter Long")
            strategy.close("Enter Short")

    else
        if(close[1] > open[1])
            strategy.entry("Enter Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Enter Short")
            strategy.close("Enter Long")
    if strategy.position_size < 0 or strategy.position_size > 0// short and long is opened.
        if((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) > 1008000000)
            strategy.close("Enter Short")
            strategy.close("Enter Long")

Больше