3-минутный короткий только экспертный советник стратегия

Автор:Чао Чжан, Дата: 2023-11-24 15:58:01
Тэги:

img

Обзор

Это 3-минутная краткосрочная стратегия экспертного советника для фьючерсов E-mini S&P500 (ES). Он генерирует торговые сигналы путем расчета ряда экспоненциальных скользящих средних и сочетания конкретных условий паттерна.

Принципы

Основным показателем этой стратегии является средняя линия T3. T3 сначала рассчитывает набор экспоненциальных скользящих средних xe1 ~ x6 на основе определенного пользователем параметра T3. Затем он рассчитывает взвешенное среднее значение этих EMA с использованием конкретных коэффициентов в качестве окончательной средней линии T3.

При условии, что цена закрытия находится ниже средней линии T3, генерируется сигнал покупки. При условии, что цена закрытия находится выше средней линии T3, генерируется сигнал продажи. Кроме того, стратегия также рассматривает конкретные шаблоны свечей в качестве дополнительных условий входа. Торговые ордера будут отправлены только тогда, когда одновременно появляются условия шаблона и сигналы T3.

Сильные стороны

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

По сравнению с простыми скользящими средними, тройной механизм сглаживания индикатора T3 эффективен в фильтрации шума рынка и выявлении точек переворота тренда.

Риски и решения

Основные риски этой стратегии возникают из-за ненадлежащей настройки параметров и чрезмерного периода удержания. Если параметр T3 установлен слишком большой, индикаторы отстанут от рынка; если установлен слишком маленький, это увеличивает вероятность шумных сделок. Кроме того, 3-минутные операции могут иметь огромные потери без своевременной остановки потери.

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

Улучшения

Для улучшения стратегии существует несколько направлений:

  1. Оптимизировать параметр T3 для поиска оптимального диапазона для различных торговых инструментов

  2. Улучшить логику оценки шаблонов для повышения точности распознавания шаблонов

  3. Добавьте более продвинутые механизмы остановки потери, такие как отслеживание остановки потери

  4. Добавить модуль управления деньгами на основе коэффициента прибыли или максимального привлечения

  5. Добавить модуль автоматического обучения

Благодаря этим улучшениям стабильность и рентабельность стратегии могут постепенно повышаться.

Заключение

Как краткосрочная стратегия внутридневного трейдинга, эта стратегия имеет такие преимущества, как огромное пространство оптимизации, несколько фильтров и быстрое исполнение ордеров.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ES 3m Short Only (Triple RED)", overlay=true)
// Alert Message '{{strategy.order.alert_message}}'
//3min
T3 = input(150)//to 600

xPrice3 = close
xe1 = ta.ema(xPrice3, T3)
xe2 = ta.ema(xe1, T3)
xe3 = ta.ema(xe2, T3)
xe4 = ta.ema(xe3, T3)
xe5 = ta.ema(xe4, T3)
xe6 = ta.ema(xe5, T3)

b3 = 0.7
c1 = -b3*b3*b3
c2 = 3*b3*b3+3*b3*b3*b3
c3 = -6*b3*b3-3*b3-3*b3*b3*b3
c4 = 1+3*b3+b3*b3*b3+3*b3*b3
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3

// Buy Signal - Price is below T3 Average
buySignal3 = xPrice3 < nT3Average
sellSignal3 = xPrice3 > nT3Average

//NinjaTrader Settings.
acct = "Sim101"
ticker = "ES 12-23"
qty = 1
takeProfitTicks = 4
stopLossTicks = 16
tickSize = 0.25

takeProfitShort = close - takeProfitTicks * tickSize
stopLossShort = close + stopLossTicks * tickSize

OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }'
CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }'

IsUp = close > open
IsDown = close < open
PatternPlot = IsDown[2] and IsDown[1] and IsDown and close[1] <= high[0] and close[1] > close[0] and low[1] > low[0] and high[2] > high[1] and low[2] <= low[1]
if (PatternPlot and sellSignal3)
    strategy.entry('Short', strategy.short, alert_message=OCOMarketShort)
    strategy.exit('Close Short', 'Short', profit=takeProfitTicks, loss=stopLossTicks, alert_message=CloseAll)

//plotshape(PatternPlot, title="Custom Pattern", style=shape.circle, location=location.abovebar, color=color.red, size=size.small)


Больше