Стратегия двойной торговли через ЕМА

Автор:Чао Чжан, Дата: 2023-10-17 13:56:54
Тэги:

img

Обзор

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

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

Преимущества этой стратегии включают:

  1. Логика проста и интуитивно понятна, легко понять и реализовать.

  2. EMA сглаживает колебания рынка и эффективно фильтрует ложные сигналы.

  3. Золотой крест и крест смерти - сильные торговые сигналы для контроля риска.

  4. Гибкие периоды EMA подходят для различных рыночных условий.

  5. Легко комбинируется с другими техническими показателями.

  6. Параметры EMA могут быть оптимизированы для получения лучших результатов.

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

Риски этой стратегии включают:

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

  2. Отставание EMA может привести к потере краткосрочных возможностей.

  3. Только перекрестное использование EMA не может определить изменение тенденции, ограничивающее потенциал прибыли.

  4. Фиксированные периоды EMA не могут адаптироваться к изменениям рынка.

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

  6. Требуется строгая стоп-лосс, иначе однократная потеря может быть огромной.

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

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

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

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

  3. Добавьте индикаторы оценки тренда, такие как ATR, ADX, чтобы уменьшить неэффективные сделки.

  4. Включить анализ нескольких временных рамок для определения направления тренда.

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

  6. Оптимизируйте размер позиций для контроля риска.

  7. Оптимизируйте стратегии стоп-лосса, чтобы ограничить однократные потери.

Резюме

Эта стратегия использует двойной золотой крест 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)

Больше