
La estrategia utiliza el promedio móvil EMA, el indicador RSI relativamente fuerte y el indicador CCI del canal de mercancías, los tres indicadores principales combinados, para identificar la tendencia de los precios a través de la EMA para ver si la media se invierte, y luego utiliza el indicador RSI y CCI de compras y ventas para realizar un juicio auxiliar y formar una señal de negociación.
Se cruzan las líneas medias de EMA de 4 y 8 períodos para determinar la tendencia de los precios, 4 períodos para determinar rápidamente y 8 períodos para determinar lentamente.
Cuando la línea media EMA se vuelve hacia arriba, es decir, la línea de 4 períodos a través de la línea de 8 períodos, y luego ayuda a juzgar el indicador RSI superior a 65 (la zona de sobreventa relativa) y el indicador CCI superior a 0 (que significa que no hay sobreventa), la satisfacción genera señales de hacer más;
Cuando la EMA promedio retrocede hacia abajo, es decir, la línea de 4 períodos cruza la línea de 8 períodos, y luego ayuda a juzgar el indicador RSI por debajo de 35 (la zona de sobreventa relativa) y el indicador CCI por debajo de 0 (que representa que no hay sobreventa), la satisfacción genera una señal de corto plazo;
Después de la formación de la señal, el precio de parada y parada se establece en función de la distancia de parada y parada de la entrada.
En general, la estrategia tiene en cuenta las tendencias de los precios a corto y mediano plazo y los indicadores a corto plazo para evitar el exceso de compras y ventas, y es relativamente estable, mientras que la configuración de un stop loss también controla eficazmente la pérdida máxima de una sola transacción.
La combinación de varios indicadores evita las estrategias de negociación de un solo indicador que tienen una mayor probabilidad de error.
La EMA utiliza la media para juzgar la tendencia principal y evitar ser engañados por las fluctuaciones a corto plazo; el RSI y el CCI evitan las zonas de sobrecompra y sobreventa y aumentan las probabilidades de ganar.
La configuración automática de los paros y paradas para controlar el riesgo de una sola transacción evita que las pérdidas aumenten debido a situaciones extremas.
La estrategia es una estrategia de trading técnica, no influenciada por lo fundamental, puede usarse en cualquier ciclo de unidad del mercado y es fácil de usar en el mercado real.
Los indicadores técnicos son susceptibles a perder su eficacia ante una brecha de ganancias o noticias positivas.
En caso de una fuerte fluctuación en el precio de las acciones, el stop loss puede ser superado y el stop loss debe ser liberado adecuadamente;
Esta estrategia es parte de la estrategia de comercio de frecuencia de línea corta, y los costos de transacción tienen un cierto impacto en las ganancias, y es adecuada para la estrategia de alta frecuencia con ventajas de costos.
La introducción de algoritmos de aprendizaje automático para ajustar los parámetros automáticamente en función de los fundamentos de las acciones.
Se añade un mecanismo de detención de daños adaptativo, en lugar de una distancia de detención fija.
La estrategia de negociación integra varios indicadores de juicio, bajo la configuración de parámetros razonables, se puede obtener una ganancia de negociación a corto y medio plazo relativamente estable, es una estrategia técnica fácil de implementar. Pero también debe tener en cuenta la prevención de la emergencia de noticias básicas importantes, la liberación adecuada de medidas de protección contra el riesgo, como la distancia de detención de pérdidas, que es la dirección que se puede optimizar aún más en el futuro.
/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 45m
basePeriod: 5m
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/
// © SoftKill21
//@version=4
strategy(title="Moving Average Exponential", shorttitle="EMA", overlay=true)
len4 = input(4, minval=1, title="Length_MA4")
src4 = input(close, title="Source")
offset4 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out4 = ema(src4, len4)
plot(out4, title="EMA", color=color.blue, offset=offset4)
len8 = input(8, minval=1, title="Length_MA8")
src8 = input(close, title="Source")
offset8 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out8 = ema(src8, len8)
plot(out8, title="EMA", color=color.blue, offset=offset8)
//rsioma
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(ema(src, len)), 0), len)
down = rma(-min(change(ema(src, len)), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//plot(rsi, color=color.blue)
//band1 = hline(80)
//band0 = hline(20)
//fill(band1, band0, color=color.purple, transp=90)
//hline(50, color=color.gray, linestyle=plot.style_line)
sig = ema(rsi, 21)
//plot(sig, color=color.purple)
//woodie
cciTurboLength = input(title="CCI Turbo Length", type=input.integer, defval=6, minval=3, maxval=14)
cci14Length = input(title="CCI 14 Length", type=input.integer, defval=14, minval=7, maxval=20)
source = close
cciTurbo = cci(source, cciTurboLength)
cci14 = cci(source, cci14Length)
last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
histogramColor = last5IsUp ? color.green : last5IsDown ? color.red : cci14 < 0 ? color.green : color.red
// Exit Condition
// Exit Condition
a = input(12)*10
b = input(15)*10
c = a*syminfo.mintick
d = b*syminfo.mintick
longCondition = crossover(out4, out8) and (rsi >= 65 and cci14>=0)
shortCondition = crossunder(out4, out8) and (rsi <=35 and cci14<=0)
long_stop_level = float(na)
long_profit_level1 = float(na)
long_profit_level2 = float(na)
long_even_level = float(na)
short_stop_level = float(na)
short_profit_level1 = float(na)
short_profit_level2 = float(na)
short_even_level = float(na)
long_stop_level := longCondition ? close - c : long_stop_level [1]
long_profit_level1 := longCondition ? close + d : long_profit_level1 [1]
//long_profit_level2 := longCondition ? close + d : long_profit_level2 [1]
//long_even_level := longCondition ? close + 0 : long_even_level [1]
short_stop_level := shortCondition ? close + c : short_stop_level [1]
short_profit_level1 := shortCondition ? close - d : short_profit_level1 [1]
//short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1]
//short_even_level := shortCondition ? close + 0 : short_even_level [1]
//ha
// === Input ===
//ma1_len = input(1, title="MA 01")
//ma2_len = input(40, title="MA 02")
// === MA 01 Filter ===
//o=ema(open,ma1_len)
//cc=ema(close,ma1_len)
//h=ema(high,ma1_len)
//l=ema(low,ma1_len)
// === HA calculator ===
//ha_t = heikinashi(syminfo.tickerid)
//ha_o = security(ha_t, timeframe.period, o)
//ha_c = security(ha_t, timeframe.period, cc)
//ha_h = security(ha_t, timeframe.period, h)
//ha_l = security(ha_t, timeframe.period, l)
// === MA 02 Filter ===
//o2=ema(ha_o, ma2_len)
//c2=ema(ha_c, ma2_len)
//h2=ema(ha_h, ma2_len)
//l2=ema(ha_l, ma2_len)
// === Color def ===
//ha_col=o2>c2 ? color.red : color.lime
// === PLOTITING===
//plotcandle(o2, h2, l2, c2, title="HA Smoothed", color=ha_col)
tp=input(120)
sl=input(96)
strategy.entry("long", strategy.long, when = longCondition)
//strategy.close("long", when = o2>c2 , comment="ha_long")
strategy.entry("short", strategy.short , when =shortCondition )
//strategy.close("short", when = o2<=c2 , comment = "ha_short" )
//strategy.close("long",when=long_profit_level1 or long_stop_level , comment="tp/sl")
//strategy.close("short",when=short_profit_level1 or short_stop_level , comment="tp/sl")
strategy.exit("x_long","long",profit = tp, loss = sl) //when = o2>c2)
strategy.exit("x_short","short",profit = tp, loss = sl) //when = o2<c2)