Количественная торговая стратегия, основанная на сравнении длинных и коротких позиций по цене закрытия K-линии и фильтрации EMA


Дата создания: 2023-12-27 14:38:28 Последнее изменение: 2023-12-27 14:38:28
Копировать: 1 Количество просмотров: 755
1
Подписаться
1623
Подписчики

Количественная торговая стратегия, основанная на сравнении длинных и коротких позиций по цене закрытия K-линии и фильтрации EMA

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

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

2. Принципы стратегии

Основная логика этой стратегии состоит в том, чтобы подсчитать количество K-линий, по которым в течение последнего цикла обзора наблюдается повышение закрытия (upCloseCount) и количество K-линий, по которым наблюдается понижение закрытия (downCloseCount), если количество повышенных закрытий больше, то рассматривается как многоголовый рынок, а если количество пониженных закрытий больше, то рассматривается как пустой рынок. Вместе с тем, в сочетании с индикатором EMA, чтобы определить ценовую тенденцию и в качестве фильтра, учитывается увеличение только тогда, когда цена выше EMA, и уменьшение только тогда, когда цена ниже EMA. Кроме того, стратегия также устанавливает торговые периоды 1 и 2 сессии, в которых торгуются только в течение этих двух периодов времени.

Логика заключается в следующем:

Условия запуска многоголового сигнала: inSession true (в течение периода времени торговли) и upCloseCount > downCloseCount (большее количество верхних закрытых K-линий) и close > ema (закрытая цена выше EMA) и currentSignal не является “long” (ныне нет позиций)

Условия запуска пустого сигнала: inSession истинно и downCloseCount > upCloseCount ((большое количество нижних закрытых K-линий) и close < ema ((закрытая цена ниже EMA) и currentSignal не является “short” ((в настоящее время нет позиций))

Третье, анализ стратегических преимуществ.

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

Анализ стратегических рисков

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

Ответ:

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

Пятое: оптимизация стратегии

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

6. Заключение

Эта стратегия используется для идентификации трендовых сигналов в определенный торговый период, путем статистического определения количества многоголовых и пустых K-линий, образованных ценой закрытия K-линий в течение определенного исторического периода, в сочетании с эффектом фильтрации показателя 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")