Система Double EMA Crossover - это торговая система, основанная на двух экспоненциальных скользящих средних (EMAs). Она использует две EMA с разными периодами, чтобы определить текущее направление тренда и генерировать соответствующие торговые сигналы. Благодаря своей простой логике и простой реализации, эта система может эффективно улавливать рыночные тенденции и подходит для средне- и долгосрочных трейдеров.
Основой этой системы являются две EMA, одна более быстрая EMA и одна более медленная EMA. Когда быстрая EMA выше медленной EMA, она считается быстрой. Когда быстрая EMA ниже медленной EMA, она считается медленной.
На основе отношений цены с двумя EMA, слитки можно разделить на различные торговые зоны:
Когда быстрая EMA выше медленной EMA, а цена выше быстрой EMA (G1), это сильная зона покупки, здесь можно занять длинную позицию.
Когда быстрая EMA ниже медленной EMA и цена ниже быстрой EMA (R1), это сильная зона продажи, здесь можно занять короткую позицию.
При пересечении двух СВМ предупреждающие (желтые) и переходные (оранжевые) зоны определяются на основе взаимосвязи цен с двумя СВМ. Эти зоны указывают на потенциальные сдвиги тренда, и сделки следует проводить с осторожностью с использованием дополнительных показателей.
Торговые сигналы генерируются при движении цены в разных зонах. В сильных зонах G1 и R1 сигналы могут быть получены непосредственно. В зонах предупреждения и перехода требуется дополнительное подтверждение индикатора.
StochRSI также реализован для помощи в выявлении потенциальных точек входа и выхода.
Простая и чистая логика, которую легко понять и реализовать
Эффективно отслеживает среднесрочные и долгосрочные тенденции
Отличает сильные зоны от зон предупреждения/переходного режима, создавая надежные торговые сигналы
Включение StochRSI еще больше улучшает сроки входа и выхода
В качестве чисто тенденционной системы, производительность может пострадать на рынках без тенденций
Ненадлежащие настройки периода EMA могут вызвать ложные сигналы
В зонах предупреждения и переходных зонах имеются более высокие риски торговли и к ним следует относиться с осторожностью.
Отсутствие стоп-лосса может привести к усилению потерь
Риски могут быть уменьшены:
Выбор инструментов с сильным трендом и приостановка торговли при слабом тренде
Оптимизация периодов EMA для минимизации ложных сигналов
Введение дополнительных показателей для подтверждения в зонах предупреждения/переходного периода
Внедрение стоп-лосса для контроля потерь на одну сделку
Система может быть улучшена в следующих областях:
Включить больше индикаторов, таких как MACD, KDJ для подтверждения сигнала
Добавить фильтры, такие как увеличение объема в торговых зонах, чтобы улучшить уровень успешности торговли
Динамически корректировать периоды EMA на основе рыночных условий для оптимизированных параметров
Внедрять стратегии стоп-лосса для выхода из торгов при определенных процентах потерь
Оптимизация размеров позиций и управления деньгами
Испытать и отрегулировать параметры на различных приборах для поиска наилучшей конфигурации
Внедряя больше подтверждения сигнала, оптимизацию динамических параметров, стоп-лосс и правильное управление деньгами, можно улучшить надежность системы и снизить риски для лучших результатов.
Система двойного EMA Crossover - это система отслеживания трендов, основанная на сравнении двух EMA. Она определяет различные торговые зоны на основе отношений цены с EMA для определения направления тренда и генерации торговых сигналов. Как система с четкой логикой и легкой реализацией, она может эффективно улавливать тенденции.
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h 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/ // © Vvaz_ //base-on CDC ActionZone By Piriya a simple 2EMA and is most suitable for use with medium volatility market //@version=4 strategy(title="Vin's Playzone" ,shorttitle="VPz", overlay=true, margin_long=4, margin_short=2) //variable srcf = input(title="Source",type=input.source,defval=close) tffix = input(title="Fixed Timeframe",type=input.bool,defval=true) tfn = input(title="Timeframe in",type=input.resolution,defval="D") ema1 = input(title="Fast EMA",type=input.integer,defval=12) ema2 = input(title="Slow EMA",type=input.integer,defval=26) ema3 = input(title="EMA 100",type=input.bool,defval=true) smooter =input(title="Smoothing period (1 = no smoothing)",type=input.integer,defval=2) fillbar =input(title="Fill Bar Color",type=input.bool,defval=true) emasw = input(title="Show EMA",type=input.bool,defval=true) bssw = input(title="Show Buy-Sell signal",type=input.bool,defval=true) plotmm = input(title="Show Buy-Sell Momentum",type=input.bool,defval=true) plotmmsm = input(title="RSI Smoothing",type=input.integer,defval=0,minval=0,maxval=2) //math xcross =ema(srcf,smooter) efast = tffix ? ema(security(syminfo.tickerid,tfn,ema(srcf,ema1), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema1) eslow = tffix ? ema(security(syminfo.tickerid,tfn,ema(srcf,ema2), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema2) ema3x = ema(xcross,100) //Zone Bull = efast > eslow Bear = efast < eslow G1 = Bull and xcross > efast //buy G2 = Bear and xcross > efast and xcross > eslow //pre-buy1 G3 = Bear and xcross > efast and xcross < eslow //pre-buy2 R1 = Bear and xcross < efast //sell R2 = Bull and xcross < efast and xcross < eslow //pre-sell1 R3 = Bull and xcross < efast and xcross > eslow //pre-sell2 //color bcl = G1 ? color.green : G2 ? color.yellow : G3 ? color.orange :R1 ? color.red :R2 ? color.orange : R3 ? color.yellow : color.black barcolor(color=fillbar ? bcl : na ) //plots line1 = plot(ema3 ? ema3x : na ,"EMA100",color=color.white) line2 = plot(emasw ? efast : na ,"Fast EMA",color=color.green) line3 = plot(emasw ? eslow : na ,"Slow EMA",color=color.red) fillcl = Bull ? color.green : Bear ? color.red : color.black fill(line2,line3,fillcl) //actions buywhen = G1 and G1[1]==0 sellwhen = R1 and R1[1]==0 bullish = barssince(buywhen) < barssince(sellwhen) bearish = barssince(sellwhen) < barssince(buywhen) buy = bearish[1] and buywhen sell = bullish[1] and sellwhen bullbearcl = bullish ? color.green : bearish ? color.red : color.black //plot trend plotshape(bssw ? buy : na ,style=shape.arrowup,title="BUY",location=location.belowbar,color=color.green) plotshape( bssw ? sell : na ,style=shape.arrowdown ,title="Sell",location=location.abovebar,color=color.red) // Momentum Signal using StochRSI smoothK = input(5,"StochRSI smooth K",type=input.integer,minval=1) smoothD = input(4,"StochRSI smooth D",type=input.integer,minval=1) RSIlen = input(14,"RSI length",type=input.integer,minval=1) STOlen = input(14,"Stochastic length",type=input.integer,minval=1) SRsrc = input(close,"Source for StochasticRSI",type=input.source) OSlel = input(20,"Oversold Threshold",type=input.float,minval=0.00) OBlel = input(80,"Oversold Threshold",type=input.float,minval=0.00) rsil = rsi(SRsrc,RSIlen) K = sma(stoch(rsil,rsil,rsil,STOlen),smoothK) D = sma(K,smoothD) buymore = iff( bullish ,iff(D < OSlel and crossover(K,D), 2, iff(D > OSlel and crossover(K,D), 1,0)),0) sellmore = iff( bearish,iff(D > OBlel and crossunder(K,D), 2, iff(D < OBlel and crossunder(K,D), 1,0)),0) //plot momentum plotshape(plotmm ? buymore > plotmmsm ? buymore : na : na ,"Buy More!" ,style=shape.triangleup,location=location.belowbar,color=color.green) plotshape(plotmm ? sellmore > plotmmsm ? sellmore : na : na ,"Sell More!" ,style=shape.triangledown,location=location.abovebar,color=color.red) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2009, title = "From Year", minval = 2009) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2009) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" //stratgy excuter strategy.entry("Long",true,when=window() and buy or buymore) strategy.close("Long",when=window() and sell or sellmore,comment="TP Long") strategy.entry("Short",false,when=window() and sell or sellmore) strategy.close("Short",when=window() and buy or buymore,comment="TP Short")