Estratégia de negociação quantitativa baseada em OBV e MACD modificados


Data de criação: 2023-11-15 17:58:42 última modificação: 2023-11-15 17:58:42
cópia: 0 Cliques: 858
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa baseada em OBV e MACD modificados

Visão geral

A estratégia baseia-se em mudanças no OBV e no MACD para julgar sinais de negociação e pertence à estratégia de integração quantitativa. Ele combina o índice de ações MACD e o OBV modificado como um sinal de integração quantitativa, com o objetivo de encontrar oportunidades de negociação em que o preço de uma ação é forte ou fraco.

Princípio da estratégia

  1. Calcule a SMA de uma média móvel simples para avaliar a tendência do mercado de ações.

  2. Calculação do OBV alterado. Ele muda a forma de cálculo do OBV de acordo com a relação entre o preço de fechamento e o preço de fechamento do dia anterior, tornando o OBV mais sensível.

  3. O MACD é composto por linhas rápidas, linhas lentas e colunas de MACD, que podem ser encontradas na tendência de variação da quantidade.

  4. Quando o MACD forca e sobe, julga-se um sinal de compra.

  5. Quando o MACD está morto e para baixo, é considerado um sinal de venda.

  6. A decisão do SMA, combinada com a decisão do MAS, evita transações desnecessárias.

Análise de vantagens

  1. A alteração do OBV é mais sensível e pode ser detectada com antecedência.

  2. O MACD pode determinar com clareza as mudanças de tendências e pontos-chave.

  3. O preço do sinal integrado, para melhorar a precisão do sinal.

  4. O SMA ajuda a avaliar a tendência do mercado e a filtrar os sinais errados.

  5. A estratégia é clara e fácil de entender, e há muito espaço para otimização de parâmetros.

Análise de Riscos

  1. A modificação do OBV é propensa a falhas de sinalização e requer filtragem de outros indicadores.

  2. Se os parâmetros do MACD não forem ajustados corretamente, as oportunidades de negociação podem ser perdidas ou os sinais podem ser errados.

  3. É preciso prestar atenção à informação sobre as ações, para evitar perdas por problemas individuais.

  4. A análise do mercado não se aplica a situações especiais.

  5. A análise de dados corre o risco de falhar, e o disco rígido pode ser menos eficaz.

Direção de otimização

  1. Teste diferentes combinações de períodos SMA para otimizar a tendência de mercado.

  2. Teste a configuração dos parâmetros MACD e otimizar a variação da quantidade.

  3. Adicionar outros indicadores para filtrar os sinais de erro, como KDJ, RSI, etc.

  4. Adicionar estratégias de stop loss para controlar as perdas individuais.

  5. Otimizar a estratégia de gestão de fundos e aumentar a eficiência do lucro geral.

  6. Testar a diferença entre os parâmetros de estratégias de ações.

Resumir

A estratégia de fusão altera os indicadores OBV e MACD, permitindo a combinação de quantidade e preço, capaz de capturar antecipadamente as mudanças na tendência de energia quantitativa das ações, gerando assim um sinal de negociação. Em comparação com o uso de OBV ou MACD isoladamente, a estratégia pode fornecer um momento de compra ou venda mais confiável.

Código-fonte da estratégia
/*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)