Стратегия подъема против падения с фильтром EMA и временными рамками сеанса

Автор:Чао Чжан, Дата: 2023-12-27 14:38:28
Тэги:

img

1. Обзор стратегии

Эта стратегия называется Up versus Down Close Candles Strategy с EMA фильтром и Session Timeframes. Она подсчитывает количество близких и близких свечей в определенный период для определения настроения рынка, в сочетании с EMA фильтром и торговлей в конкретных сессиях, чтобы определить длинные и короткие сигналы.

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

Основная логика заключается в том, чтобы подсчитать количество свечей с подъемом (upCloseCount) и с понижением (downCloseCount) в последнее время. Если upCloseCount больше, это указывает на бычий рынок. Если downCloseCount больше, это указывает на медвежий рынок. Индикатор EMA используется в качестве фильтра, рассматривая только длинный, когда цена > EMA, и короткий, когда цена < EMA. Он также устанавливает сессию1 и сессию2 как торговые сессии.

Подробная логика:

Долгий сигнал запускается, когда: inSession true (в торговых сессиях) и upCloseCount > downCloseCount (более близкие свечи) и close > ema (цена закрытия выше EMA) и currentSignal не long (нет существующей позиции).

Короткий сигнал запускается, когда: inSession true и downCloseCount > upCloseCount (более вниз закрыть свечи) и закрыть < ema (цена закрытия ниже EMA) и currentSignal не short (нет существующей позиции).

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

  1. Захватывает настроение и тенденцию рынка путем сравнения истории закрытия/закрытия свечей
  2. Использование фильтра EMA для избежания торговли на рыночных диапазонах
  3. Избегайте шума в не основные часы торговли, устанавливая сеансы
  4. Баланс между последовательностью тренда и частотой торговли

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

  1. Можно ввести в заблуждение на боковых рынках
  2. Неправильный параметр EMA может привести к неэффективному фильтру
  3. Пропущенные возможности при неправильном настройке сеанса
  4. Невозможно зафиксировать разрыв, вызванный событиями.

Решения:

  1. Оптимизировать параметр EMA
  2. Оптимизировать торговые сессии
  3. Добавить стоп-лосс на основе ATR
  4. Определите события, избегайте пробелов

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

  1. Оптимизировать торговые сессии
  2. Оптимизировать параметры EMA
  3. Добавить стоп-лосс на основе ATR
  4. Определите события, избегайте пробелов
  5. Сочетание с другими показателями для улучшения фильтрации
  6. Испытание и настройка по всем продуктам

6. Резюме

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


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")


Больше