Эта стратегия основана на стратегии Amazing scalper for majors with risk management, разработанной SoftKill21, и была изменена, чтобы уменьшить задержку за счет использования тройной скользящей средней вместо первоначальной простой скользящей средней. Эта стратегия применяется для 1-минутного цикла основных валютных пар, используя метод отслеживания тенденций, чтобы покупать и продавать операции в соответствии с золотым крестом и крестом быстрого EMA, стандартного EMA и медленного EMA. При этом в сочетании с торговыми часами в Лондоне и Нью-Йорке и принципами управления рисками определяется размер позиции.
В этой стратегии используются индексные подвижные средние с тремя различными периодами: 25-циклическая быстрая EMA, 50-циклическая стандартная EMA и 100-циклическая медленная EMA. При прохождении стандартной EMA и медленной EMA вверх по быстрой EMA создается сигнал покупки; при прохождении стандартной EMA и медленной EMA вниз по быстрой EMA создается сигнал продажи.
В частности, стратегия сначала рассчитывает три линии EMA, а затем определяет, образует ли быстрая EMA золотой перекресток или мертвую вилку со стандартной EMA и медленной EMA. Если одновременно удовлетворяются условия, соответствующие времени открытия рынка в Лондоне или Нью-Йорке, это создает сигнал покупки или продажи.
Эта стратегия имеет следующие преимущества:
Использование тройной EMA, чтобы эффективно сгладить данные о ценах и определить направление тренда. Быстрая EMA чувствительна к изменениям цены, стандартная EMA стабильно отслеживает, медленная EMA фильтрует шум.
Использование технологии вторичного индексального сглаживания для вычисления EMA, снижение задержки и повышение чувствительности сигнала.
Вместе с основными торговыми часами, чтобы избежать ошибочных сигналов во время не основных торговых часов.
Используйте принципы управления рисками, чтобы скорректировать позиции в соответствии с интересами и правами счета. Избегайте слишком больших потерь, которые могут вызвать удар по счету.
Логика стратегии проста, понятна, легко понятна, и подходит для начинающих.
Оптимизируется для различных валютных пар и временных циклов, широко применяется.
Однако есть и риски, связанные с этой стратегией:
EMA не может эффективно отфильтровывать кратковременные ложные прорывы, вызванные внезапными событиями, которые могут привести к ошибочному сигналу. Рекомендуется анализировать фильтрацию в сочетании с другими показателями.
Фиксированные процентные позиции не могут динамически корректироваться в зависимости от рыночных колебаний, существуют проблемы с слишком большими или слишком маленькими позициями. Можно рассмотреть возможность введения динамически корректируемых позиций по таким показателям, как волатильность.
Принимая во внимание только два основных торгового времени, можно пропустить торговые возможности в другие времена. Можно проверить эффективность различных периодов времени.
Нет механизма остановки убытков, не может эффективно контролировать односторонние убытки. Можно установить движущуюся остановку или временную остановку.
EMA-пересечение имеет определенную отсталость и может пропустить лучший момент входа. Можно рассмотреть возможность снижения цикла EMA или в сочетании с другими предварительными показателями.
Эффективность может зависеть от стоимости сделки. Рекомендуется соответствующая корректировка стоп-лосса и стоп-позиции.
Эта стратегия может быть оптимизирована в следующих аспектах:
Тестирование различных параметров цикла EMA для поиска оптимального сочетания параметров. Можно вводить такие технологии, как адаптивное EMA и динамическая оптимизация цикла EMA.
Добавление других фильтрующих показателей, таких как RSI, Брин-банды и т.д., повышает качество сигнала.
Внедрение механизма управления динамическими позициями для корректировки позиций в зависимости от рыночной волатильности и прибыльности.
Для ограничения убытков добавляется мобильный стоп, временный стоп.
Проверка различных торговых периодов, чтобы найти оптимальное время для торгов.
Оптимизация уровня остановок и убытков, балансировка размера выигрыша и выигрышной ставки. Внедрение умных убытков, таких как парализованная линия.
Попытка улучшить методы расчета EMA, такие как линейное взвешивание EMA, чтобы уменьшить задержку.
Поиск оптимальных параметров в сочетании с методами автоматического машинного обучения.
Моделирование затрат на транзакции, адаптация системы для максимизации чистой прибыли.
С помощью вышеуказанной оптимизации можно повысить прибыльность системы, контролировать отступление, расширить сферу применения, что позволяет получить более мощную и стабильную торговую стратегию.
Общая идея этой стратегии ясна, она использует тройную 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)