Эта стратегия использует золотой крест и смертельный крест двойных линий EMA для определения времени входа и выхода. В частности, когда быстрая линия EMA пересекает линию медленной EMA снизу, для длинного входа генерируется сигнал золотого креста. Когда быстрая линия EMA пересекает линию медленной EMA сверху, для короткого входа генерируется сигнал смертельного креста. Эта стратегия проста и проста в реализации и является очень распространенной торговой стратегией.
Основной код этой стратегии таков:
fast = input(25, title="Fast")
slow = input(75, title="Slow")
matype1=ema(source, fast)
matype2=ema(source, slow)
longCondition = crossover(matype1, matype2)
shortCondition = crossunder(matype1, matype2)
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
Эта стратегия сначала устанавливает две линии EMA, с быстрым периодом EMA в 25 и медленным периодом EMA в 75. Затем она вычисляет значения двух линий EMA. Когда быстрая EMA пересекает более медленной EMA, longCondition становится правдой. Когда быстрая EMA пересекает ниже медленной EMA, shortCondition становится правдой. После того, как соответствующие условия являются правдой, она становится длинной или короткой.
Эта стратегия использует функцию сглаживания EMA для фильтрации рыночного шума, одновременно способная быстро улавливать изменения тренда.
Преимущества этой стратегии включают:
Логика проста и интуитивно понятна, легко понять и реализовать.
EMA сглаживает колебания рынка и эффективно фильтрует ложные сигналы.
Золотой крест и крест смерти - сильные торговые сигналы для контроля риска.
Гибкие периоды EMA подходят для различных рыночных условий.
Легко комбинируется с другими техническими показателями.
Параметры EMA могут быть оптимизированы для получения лучших результатов.
Риски этой стратегии включают:
Частые неэффективные сигналы на рынках с ограниченным диапазоном, поскольку EMA часто пересекается.
Отставание EMA может привести к потере краткосрочных возможностей.
Только перекрестное использование EMA не может определить изменение тенденции, ограничивающее потенциал прибыли.
Фиксированные периоды EMA не могут адаптироваться к изменениям рынка.
Требует значительного капитала, в противном случае увеличивает риск.
Требуется строгая стоп-лосс, иначе однократная потеря может быть огромной.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизировать периоды EMA для различных рыночных условий.
Добавьте другие фильтры, такие как MACD, Bollinger Bands, чтобы улучшить качество сигнала.
Добавьте индикаторы оценки тренда, такие как ATR, ADX, чтобы уменьшить неэффективные сделки.
Включить анализ нескольких временных рамок для определения направления тренда.
Используйте машинное обучение для динамической оптимизации периодов EMA.
Оптимизируйте размер позиций для контроля риска.
Оптимизируйте стратегии стоп-лосса, чтобы ограничить однократные потери.
Эта стратегия использует двойной золотой крест EMA и крест смерти в качестве торговых сигналов, формируя классическую следующую стратегию тренда. Она проста и проста в реализации и может быть объединена с другими индикаторами, что подходит для инвесторов с относительно низкими требованиями к оценке тренда. Но она также имеет лимиты прибыли и риски, требующие надлежащей оптимизации для различных рыночных условий. В целом, она обеспечивает отличную основу для разработки стратегии и углубленного исследования.
/*backtest start: 2023-09-16 00:00:00 end: 2023-10-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars //@version=4 strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true) matype = input("ema") hidema = input(false) sourcetype = input(close, title="Source Type") source=close // STEP 1: // Configure backtest start date with inputs startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=231) startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12) startYear = input(title="Start Year", type=input.integer, defval=2020, minval=1800, maxval=2100) // STEP 2: // See if this bar's time happened on/after start date afterStartDate = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) fast = input(25, title="Fast") slow = input(75, title="Slow") matype1=ema(source, fast) matype2=ema(source, slow) signalcolor = source > matype2 ? color.blue : color.red signal = cross(fast, slow) hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA") yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA") //kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme") longCondition = crossover(matype1, matype2) if (afterStartDate and longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(matype1, matype2) if (afterStartDate and shortCondition) strategy.entry("Short", strategy.short) //-------------------------------------------------------- //volume based color bars length=input(21, "length", minval=1) avrg=sma(volume,length) vold1 = volume > avrg*1.5 and close<open vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open vold3 = volume < avrg *0.5 and close<open volu1 = volume > avrg*1.5 and close>open volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open volu3 = volume< avrg*0.5 and close>open cold1=#800000 cold2=#FF0000 cold3=color.orange colu1=#006400 colu2=color.lime colu3=#7FFFD4 ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na barcolor(ac)