Стратегия тройного импульса EMA

Автор:Чао Чжан, Дата: 2023-09-27 17:19:26
Тэги:

Обзор

Эта стратегия модифицирована от Amazing scalper SoftKill21 для крупных компаний с управлением рисками, используя тройные экспоненциальные скользящие средние вместо простых скользящих средних для уменьшения задержки. Она подходит для основных валютных пар на 1-минутный временной промежуток, принимая подход, основанный на золотом кресте и смертном кресте быстрой EMA, стандартной EMA и медленной EMA. Она также включает в себя Лондонскую и Нью-Йоркскую сессии и принципы управления рисками для определения размеров позиций.

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

Стратегия использует три EMA с различными периодами: 25-периодный быстрый EMA, 50-периодный стандартный EMA и 100-периодный медленный EMA. Когда быстрый EMA пересекает стандартную EMA и медленную EMA, он генерирует сигнал покупки. Когда быстрый EMA пересекает стандартную EMA и медленную EMA, он генерирует сигнал продажи. Чтобы уменьшить задержку, EMA рассчитываются с использованием метода двойного экспоненциального сглаживания. Стратегия также проверяет, соответствуют ли часы открытия рынка сессий Лондона или Нью-Йорка условиям входа. Кроме того, размер позиции каждого ордера определяется динамически с использованием фиксированного процента акций счета для контроля риска.

В частности, стратегия сначала рассчитывает три линии EMA, а затем проверяет, формирует ли быстрая EMA золотой крест или смертельный крест со стандартной EMA и медленной EMA. Если условие также соответствует времени открытого рынка Лондона или Нью-Йорка, генерируются сигналы купли или продажи. При определении размера позиции стратегия рассчитывает фиксированный процент собственного капитала счета как рисковое воздействие, затем преобразует его в размер контракта и круглые лоты для динамической корректировки позиции для каждого заказа.

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

Стратегия имеет следующие преимущества:

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

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

  3. Включение основных торговых сессий позволяет избежать вводящих в заблуждение сигналов в непиковое время.

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

  5. Логика проста и понятна, легко понять и реализовать, подходит для новичков.

  6. Стратегия может быть оптимизирована и скорректирована для различных валютных пар и временных рамок с широкой применимостью.

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

Стратегия также сопряжена с некоторыми потенциальными рисками:

  1. EMA не могут эффективно отфильтровать краткосрочные ложные прорывы, вызванные внезапными событиями, которые могут генерировать неправильные сигналы.

  2. Фиксированное процентное размещение позиций не может динамически адаптироваться к волатильности рынка, что приводит к чрезмерному или недостаточному размещению позиций.

  3. Рассматриваются только две основные сессии, которые могут упустить торговые возможности в других сессиях.

  4. Отсутствие механизма стоп-лосса приводит к невозможности эффективного контроля односторонних потерь.

  5. Снижение периодов EMA или включение ведущих индикаторов может помочь.

  6. На эффективность могут повлиять затраты на транзакции.

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

Стратегия может быть оптимизирована в следующих аспектах:

  1. Проверить различные параметры периода EMA, чтобы найти оптимальные комбинации.

  2. Добавьте другие индикаторы фильтрации, такие как RSI, Bollinger Bands, чтобы улучшить качество сигнала.

  3. Ввести динамическое распределение позиций на основе волатильности рынка и рентабельности.

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

  5. Проверяйте различные торговые сессии, чтобы найти оптимальные времена.

  6. Оптимизируйте уровни получения прибыли и остановки убытков, чтобы сбалансировать размер прибыли и уровень выигрыша.

  7. Попробуйте изменить расчет EMA как линейную взвешенную EMA, чтобы уменьшить задержку.

  8. Используйте машинное обучение для поиска оптимальных параметров.

  9. Модель затрат на транзакции и система корректировки для максимальной чистой прибыли.

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

Резюме

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


/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// original author SoftKill21
//@version=4
//@capam 

strategy(title="Triple EMA Scalper low lag strat", shorttitle="3EMA scalper", overlay=true)
strategy.initial_capital = 50000
len1 = input(25, minval=1, title="Length")
len2 = input(50, minval=1, title="Length")
len3 = input(100, minval=1, title="Length")

src = input(close, title="Source")
tmp1 = ema(src, len1)
tmp2 = ema(src, len2)
tmp3 = ema(src, len3)
fastemaOut = 2*tmp1 - ema(tmp1, len1)
standardemaOut = 2*tmp2 - ema(tmp2, len2)
slowemaOut = 2*tmp3 - ema(tmp3, len3)
//fastemaOut = sma(src, len1)
//standardemaOut = sma(src, len2)
//slowemaOut = sma(src, len3)

plot(fastemaOut, color=color.black, title="First EMA")
plot(standardemaOut, color=color.yellow, title="Second EMA")
plot(slowemaOut, color=color.blue, title="Third EMA")


timeinrange(res, sess) => time(res, sess) != 0


londopen = timeinrange(timeframe.period, "0300-1100") 
nyopen = timeinrange(timeframe.period, "0800-1600") 

longCondition = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and londopen //or nyopen)
shortCondition = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and londopen// or nyopen)

longCondition2 = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and nyopen
shortCondition2 = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and nyopen
tp = input(50,title="TP")
sl = input(100, title="SL")

tradeLondon =  input(title="Trade london session?", type=input.bool, defval=true)
tradeNewyork = input(title="Trade new york session?", type=input.bool, defval=true)

//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(1,type=input.float,title="Risk % of equity ")/100           //risk % per trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
    size := 1000        

if(tradeLondon==true)
    strategy.entry("long",1,when=longCondition)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

if(tradeNewyork==true)
    strategy.entry("long",1,when=longCondition2)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition2)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

// strategy.risk.max_intraday_filled_orders(2) 

Больше