
Эта стратегия определяет рыночные тенденции, рассчитывая пересечение средней линии EMA двух разных периодов, и, соответственно, генерирует торговый сигнал. Когда краткосрочная EMA пересекает долгосрочную EMA, считая, что рынок входит в восходящую тенденцию, стратегия открывает больше позиций; когда краткосрочная EMA пересекает долгосрочную EMA, считая, что рынок входит в нисходящую тенденцию, стратегия выходит из равной позиции.
Эта стратегия основывается на теории двойных средних значений EMA. Двойные средние знаки EMA разделены на длинные и короткие EMA. Параметры коротких EMA установлены на 10 дней, а длинных - на 21 день.
Когда короткая линия EMA пересекает длинную линию EMA, создается сигнал покупки; когда короткая линия EMA пересекает длинную линию EMA, создается сигнал продажи. Эта стратегия одновременно устанавливает порог роста, открывая позиции только тогда, когда рост превышает порог, и закрывая позиции только тогда, когда падение превышает порог.
В частности, условие покупки - короткая линия EMA выше, чем длинная линия EMA, и рост цен на акции превышает установленную положительную отметку; условие ликвидации - короткая линия EMA ниже, чем длинная линия EMA, и рост цен на акции ниже установленной отрицательной отметки.
Эта стратегия в целом является более простой и надежной, она определяет ценовые тенденции с помощью двойного пересечения ЭМА и устанавливает порог роста, чтобы отправить торговый сигнал. По сравнению с одним пересечением средней линии, можно отфильтровать некоторые ложные сигналы. Однако сама средняя линия ЭМА имеет проблемы с отсталостью, и в сочетании с другими показателями или динамическими коэффициентами можно еще больше повысить эффективность стратегии.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)
useTimeLimit = input(defval = false, title = "Use Start Time Limiter?")
startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1)
startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1)
startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1)
startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1)
startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1)
startTimeOk() => true
lenght0 = input(10)
lenght1 = input(21)
source = close
EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)
growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)
if( startTimeOk() )
buy_condition = EmaShort > EmaLong and growth > thresholdUp
buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
strategy.close(id='buy', when=buy_exit_condition)