
Двойная торговая система EMA - это система для отслеживания тенденций, основанная на двухмесячных скользящих средних. Система использует средние значения EMA двух разных периодов, чтобы оценить направление текущего тренда и принять торговое решение в зависимости от отношения цены к средним значениям EMA. Система проста в логике, проста в использовании, хорошо улавливает рыночные тенденции и подходит для использования инвесторами средней и длинной линии.
Стратегия основывается на двух средних линиях EMA: средней скорости EMA и средней скорости EMA. Быстрая EMA считается быстрой, когда она выше медленной EMA, и медленной, когда она ниже медленной EMA.
В зависимости от отношения цены к двум средним линиям EMA, можно разделить K-линию на различные торговые зоны:
Когда быстрая ЭМА находится выше медленной ЭМА, а цена выше быстрой ЭМА (G1), можно купить зону для сильных покупок.
Когда быстрая ЭМА находится ниже быстрой ЭМА, а цена ниже быстрой ЭМА, то можно продать зону для сильного.
При пересечении быстрых и медленных ЭМА, в зависимости от отношения цены к двум ЭМА, можно разделить зоны желтого ((предупреждение) и оранжевого ((посмотр)). Эти две зоны представляют собой вероятность изменения тренда, которые необходимо объединить с другими зонами и другими показателями для принятия решения о сделке.
В зависимости от изменения цены в различных торговых зонах, стратегия посылает сигналы покупки и продажи. В сильных зонах G1 и R1, стратегия напрямую генерирует сигналы; в предупредительных и наблюдательных зонах требуется подтверждение других показателей.
Кроме того, в стратегии также вводится StochRSI, чтобы помочь определить, когда стоит купить или продать. Сверхпокупки и перепродажи StochRSI могут служить дополнительным сигналом о покупке и продаже.
Стратегическая логика проста и понятна, легко понятна и реализуема.
Это позволяет эффективно отслеживать средние и длинные тенденции.
Различают сильные зоны и зоны предупреждения/наблюдения, которые противоречат тренду, а торговые сигналы более надежны;
В сочетании со StochRSI можно более точно определить, когда стоит купить или продать.
Чисто трендовые системы, которые могут быть неэффективными на рынках, где нет четкой тенденции;
Неправильная настройка цикла EMA может привести к ложному сигналу;
В зоне предупреждения и наблюдения имеется высокий риск для торговли, поэтому следует относиться к ней с осторожностью.
Не учитывается риск увеличения убытков в результате прекращения убытков.
Для снижения риска можно использовать следующие методы:
Выбирайте виды с заметной тенденцией и приостанавливайте торговлю, если тенденция слабая.
Оптимизация параметров цикла EMA для снижения вероятности ложного сигнала;
Введение других показателей в зонах предупреждения и наблюдения для подтверждения и снижения риска торговли;
Установка стоп-стоп для контроля одиночных убытков
Эта стратегия может быть оптимизирована в следующих аспектах:
Внедрение новых признаков подтверждения, таких как MACD, KDJ и т.д., для улучшения качества сигналов;
Введение фильтров в торговых зонах, которые увеличивают объемы торгов и повышают вероятность успешных сделок;
Динамическая корректировка параметров EMA в зависимости от рыночных условий, настройка параметров оптимизации;
Увеличение стратегии остановки убытков, при которой убытки остановляются, когда они достигают определенной пропорции;
Оптимизация управления капиталом, создание разумного управления позициями;
Тестирование оптимизации на различных породах, чтобы найти оптимальное сочетание параметров.
Повышение стабильности системы, снижение рисков с точки зрения управления капиталом и т. Д. С помощью внедрения дополнительных показателей суждения, оптимизации динамических параметров, стратегии остановки убытков, и т. Д. Эта стратегия может обеспечить лучшую эффективность торговли.
Двойная торговая система EMA Yellow-Green является торговой системой для отслеживания тенденций, основанной на сравнении двух средних 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")