
La estrategia utiliza principalmente el cruce de los indicadores de Stoch en las zonas de sobreventa y sobreventa como señal de entrada, mientras que en combinación con los indicadores de EMA para determinar la dirección de la tendencia actual, solo realiza operaciones múltiples en la tendencia de la EMA que continúa subiendo, y realiza operaciones en blanco en la tendencia de la EMA que continúa bajando, es una estrategia típica de seguimiento de tendencias.
La estrategia tiene tres partes principales:
Utilizando dos parámetros diferentes de EMA rápido y lento, se determina como una tendencia al alza cuando el EMA rápido está por encima del EMA lento y como una tendencia a la baja cuando el EMA rápido está por debajo del EMA lento.
El indicador de Stoch está formado por la línea %K y la línea %D. La línea %K produce una señal de compra cuando el oro se cruza con la línea %D por encima de la zona de sobreventa, y la línea %K produce una señal de venta cuando el oro se cruza con la línea %D por debajo de la zona de sobreventa. Esta estrategia solo emite una señal de negociación cuando el cruce del indicador de Stoch ocurre en la zona de sobreventa.
La estrategia establece un mecanismo de stop loss y stop-loss simultáneamente. Al tener una posición de más de una posición, si el precio cae por debajo del stop loss establecido, se detiene la posición de equilibrio; si el precio rompe el stop stop establecido, se detiene la posición de equilibrio.
En general, esta estrategia es una estrategia de comercio cuantitativa más típica, que utiliza una combinación de indicadores para determinar la dirección de la tendencia y las señales de negociación, y se complementa con reglas estrictas de gestión de riesgos para reducir el riesgo de negociación.
La estrategia tiene las siguientes ventajas:
Utiliza la EMA para evaluar las tendencias en los subniveles principales y evitar ser atrapado en mercados con incertidumbre.
La característica del indicador Stoch es que puede reflejar muy bien si se encuentra actualmente en una zona de sobreventa o de sobreventa, por lo que la generación de señales cruzadas puede llevar a una operación de zona de sobreventa o de sobreventa.
La estrategia define el entorno en el que pueden producirse excesos y deficiencias, lo que permite que la generación de señales se filtre aún más, reduciendo la probabilidad de señales erróneas y evitando posiciones ciegas en mercados complejos.
Un estricto mecanismo de gestión de riesgos ayuda a controlar las pérdidas de una sola operación, tanto para controlar el máximo retiro en general, como para dejar suficiente espacio para operaciones rentables.
La estrategia también tiene ciertos riesgos:
Los indicadores EMA, Stoch, etc., tienen un cierto retraso, lo que hace que la estrategia sea difícil y que se aproveche la oportunidad de que el mercado se vuelva hacia atrás.
La mera dependencia de los indicadores puede dar lugar a juicios preconcebidos sobre el mercado y, por lo tanto, perderse las oportunidades de negociación que realmente ofrece el mercado.
El mecanismo de gestión de riesgos en sí mismo también puede ser un límite al espacio de ganancias de la estrategia, por lo que la configuración de suspensiones de pérdidas y paradas de posiciones en grandes tendencias debe ser especialmente cuidadosa.
Esta estrategia también tiene ciertos riesgos en la selección de parámetros, ya que el impacto de los diferentes parámetros en los resultados requiere una gran cantidad de retroalimentación y optimización para obtener la combinación óptima de parámetros.
La estrategia puede ser optimizada en los siguientes aspectos:
Pruebe diferentes tipos de EMA, como el promedio móvil ponderado, el MA de Hull y otros indicadores para determinar tendencias y realizar análisis comparativos.
Intenta combinar otros indicadores para generar señales de negociación, como MACD, KDJ, etc., para construir un sistema de negociación de múltiples indicadores.
Optimización de los parámetros de stop loss y stop, para adaptarlos mejor a las fluctuaciones reales del mercado. Se pueden establecer parámetros de stop loss más flexibles y parámetros de stop loss más estrictos.
Prueba la variabilidad en el rendimiento de la estrategia en diferentes variedades y períodos para encontrar la combinación óptima de variedades y períodos.
Considere la inclusión de modelos de aprendizaje automático o redes neuronales para ayudar a determinar la dirección de las tendencias y las señales de negociación, para lograr la inteligencia de la estrategia.
En general, la estrategia utiliza indicadores comunes para combinar y construir un conjunto de estrategias de comercio de seguimiento de tendencias más maduras. Considera tanto el juicio de tendencias como la generación de señales de comercio específicas, y establece un mecanismo de gestión de riesgos.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//by Wugamlo
//Strategy combining Stochastic Crosses in the Overbought/Oversold Area with a trend determined by two EMAs
//Default setup seems to work best on 4HR timeframe for BTC
strategy(title = "Strategy Stoch/EMA Cross", shorttitle = "Strategy Stoch/EMA Cross", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, commission_value=0.01,commission_type=strategy.commission.percent, initial_capital=1000)
// === GENERAL INPUTS ===
SectionInd = input(defval = true ,title = "════════════ INDICATORS ════════════")
maFastLength = input(defval = 55, title = "Fast MA Period", minval = 1)
maSlowLength = input(defval = 89, title = "Slow MA Period", minval = 1)
StochLength = input(defval = 14, title = "Stochastic Length", minval=1)
smoothK = input(defval = 6, title = "%K Smooth", minval=1)
smoothD = input(defval = 3, title = "%D Smooth", minval=1)
overbought = 80
oversold = 20
HighlightOBOS = input(defval = true, title = "Highlight Stoch Cross?")
HighlightTrend = input(defval = true, title = "Highlight Trend?")
//DATE AND TIME
SectionFrom = input(defval = true ,title = "═══════════════ FROM ═══════════════")
fromDay = input(defval = 01, title = "From day", minval=1)
fromMonth = input(defval = 1, title = "From month", minval=1)
fromYear = input(defval = 2019, title = "From year", minval=2014)
SectionTo = input(defval = true, title = "════════════════ TO ════════════════")
toDay = input(defval = 31, title = "To day", minval=1)
toMonth = input(defval = 12, title = "To month", minval=1)
toYear = input(defval = 2020, title = "To year", minval=2014)
// === STRATEGY RELATED INPUTS ===
SectionStra = input(defval = true ,title = "═════════════ STRATEGY ═════════════")
// Include Shorts or only trade Long Positions?
includeShorts = input(defval = true, title = "Include Short Positions?")
// Risk Management inputs
useTakeProfit = input(defval = true, title = "User Take Profit?")
inpTakeProfit = input(defval = 8, title = "Take Profit (%)", minval = 0)
useStopLoss = input(defval = false, title = "User Stop Loss?")
inpStopLoss = input(defval = 2, title = "Stop Loss (%)", minval = 0)
StopLossPerc = inpStopLoss * 0.01
TakeProfitPerc = inpTakeProfit * 0.01
// === EMA SERIES SETUP ===
maFast = ema(close, maFastLength)
maSlow = ema(close, maSlowLength)
diff = maFast - maSlow
// === STOCHASTIC SETUP ===
k = sma(stoch(close, high, low, StochLength), smoothK)
d = sma(k, smoothD)
// Stochastic Long/Short Entry determination
stochLong = crossover(k,d) and (k < oversold)
stochShort = crossunder(k,d) and (k > overbought)
// Stochastic Long/Short Exit determination
stochLongEx = crossover (k, overbought)
stochShortEx = crossunder(k, oversold)
// === PLOTTING EMAs ===
fast = plot(maFast, title = "Fast MA", color = yellow, linewidth = 1, style = line, transp = 10)
slow = plot(maSlow, title = "Slow MA", color = white, linewidth = 1, style = line, transp = 10)
// === Vertical Coloring for Crosses in Overbought/Oversold zone and for MA Trend Zones ===
b_color = stochLong ? green : stochShort ? red : na
bgcolor(HighlightOBOS ? b_color : na, title="Overbought / Oversold", transp=65) //Highlight the Overbought/Oversold Stoch Crossings
t_color = diff>=0 ? green : diff<0 ? red : na
bgcolor(HighlightTrend ? t_color : na, title="Trend up / Trend down", transp=75) //Highlight the EMA Trend
// === STRATEGY LOGIC ===
// Time Restriction
timeInRange = true
// === STRATEGY - LONG POSITION EXECUTION ===
if stochLong and (diff >=0) and timeInRange //Open Long when Stoch crossing in Oversold area and EMATrend is up
strategy.entry(id = "Long", long = true)
if stochLong and (diff <0) and timeInRange //Close Long when another Long Stoch cross signal is given after Trend has changed to down (avoid fake signals)
strategy.close(id = "Long")
if stochLongEx and timeInRange //Close Long when Stoch is getting Overbought
strategy.close(id = "Long")
// === STRATEGY - SHORT POSITION EXECUTION ===
if stochShort and (diff <0) and timeInRange and includeShorts //Open Short when Stoch crossing in Overbought area and EMA Trend is down
strategy.entry(id = "Short", long = false)
if stochShort and (diff >=0) and timeInRange //Close Short when another Short Stoch cross signal is given after Trend has changed to up (avoid fake signals)
strategy.close(id = "Short")
if stochShortEx and timeInRange //Close Short when Stoch is getting Oversold
strategy.close(id = "Short")
// === STRATEGY RISK MANAGEMENT EXECUTION ===
//Stop Loss
if useStopLoss //Exit when Stop Loss is hit
strategy.exit("Exit Long SL", from_entry = "Long", loss = close * StopLossPerc / syminfo.mintick )
strategy.exit("Exit Short SL", from_entry = "Short", loss = close * StopLossPerc / syminfo.mintick )
//Take Profit
if useTakeProfit //Exit when Take Profit Limit is hit
strategy.exit("Exit Long TP", from_entry = "Long", profit = close * TakeProfitPerc / syminfo.mintick)
strategy.exit("Exit Short TP", from_entry = "Short", profit = close * TakeProfitPerc / syminfo.mintick)