
La estrategia se basa en el cambio en el indicador de la marea de energía (OBV) y el MACD para determinar las señales de negociación, y pertenece a la estrategia de integración de precios. Combina el índice de precios de las acciones (MACD) y el cambio en el OBV como una señal de integración de precios, con el objetivo de encontrar oportunidades de negociación en las que los precios de las acciones son fuertes o débiles.
Calcula el SMA de las medias móviles simples para determinar la tendencia de las grandes bolsas.
Cálculo de la modificación del OBV. Modifica la forma de calcular el OBV en función de la relación entre el precio de cierre y el precio de cierre del día anterior, lo que hace que el OBV sea más sensible.
El MACD se compone de líneas rápidas, lentas y columnas de MACD, donde se puede ver la tendencia de variación de la cantidad.
Cuando el MACD está en su horquilla y en alza, se trata de una señal de compra.
Cuando el MACD está muerto y hacia abajo, se considera una señal de venta.
La combinación de los criterios de la SMA para evitar transacciones innecesarias.
La modificación del OBV es más sensible y capta los cambios en la cantidad de energía con anticipación.
El MACD es un indicador de tendencias y puntos clave.
La combinación de precios y señales mejora la precisión de las señales.
El SMA ayuda a evaluar la tendencia de las grandes acciones y a filtrar las señales falsas.
La estrategia es clara y fácil de entender, y hay mucho espacio para optimizar los parámetros.
La modificación del OBV es propensa a generar señales erróneas y requiere un filtrado de otros indicadores.
Si los parámetros del MACD están mal configurados, se pueden perder oportunidades de negociación o generar señales falsas.
Se debe prestar atención a la información sobre las acciones mismas para evitar pérdidas por problemas individuales.
La atención se debe a la situación del mercado y no se aplica a situaciones especiales.
El análisis de los datos corre el riesgo de que los discos duros sean menos efectivos.
Prueba de diferentes combinaciones de períodos SMA para optimizar el juicio de tendencias de la bolsa mayor.
Prueba de la configuración de los parámetros MACD para optimizar la variabilidad de los juzgados.
Añadir otros indicadores para filtrar las señales de error, como KDJ, RSI, etc.
Añadir estrategias de stop loss para controlar las pérdidas individuales.
Optimizar las estrategias de gestión de fondos y mejorar la rentabilidad general.
Prueba de la diferencia entre los parámetros de las diferentes estrategias de acciones.
La estrategia combina el cambio de los indicadores OBV y MACD, lo que permite la combinación de los precios cuantitativos y la captura anticipada de los cambios en la situación de la energía cuantitativa de las acciones, lo que genera señales de negociación. En comparación con el uso de OBV o MACD solo, la estrategia puede proporcionar una oportunidad de compra y venta más confiable.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-14 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/
// © stocktechbot
//@version=5
strategy("Altered OBV On MACD", overlay=true, margin_long=100, margin_short=100)
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
//SMA Tredline
out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)
//sma plot
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200", offset=offset)
plot(outf, color=color.maroon, title="MA50", offset=offset)
plot(outn, color=color.orange, title="MA90", offset=offset)
plot(outt, color=color.olive, title="MA21", offset=offset)
plot(outthree, color=color.fuchsia, title="MA9", offset=offset)
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
chng = 0
obv = ta.cum(math.sign(ta.change(close)) * volume)
if close < close[1] and (open < close)
chng := 1
else if close > close[1]
chng := 1
else
chng := -1
obvalt = ta.cum(math.sign(chng) * volume)
//src = input(title="Source", defval=close)
src = obvalt
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
//hline(0, "Zero Line", color=color.new(#787B86, 50))
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
//plot(macd, title="MACD", color=col_macd)
//plot(signal, title="Signal", color=col_signal)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
//BUY Signal
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macd,2)
macdlong = ta.crossover(macd, signal)
longCondition=false
if macdlong and macdrise
longCondition := true
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macd,1)
macdsell = macd < signal
shortCondition = false
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
shortCondition := true
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)