
Esta estratégia é chamada de estratégia de ruptura de dupla linha de equilíbrio de estratégia de negociação de quantificação. A principal idéia da estratégia é usar o sinal cruzado de médias móveis rápidas e médias móveis lentas para julgar a tendência dos preços e, em seguida, tomar decisões de compra e venda.
Os indicadores centrais da estratégia são as médias móveis rápidas e médias móveis lentas. A estratégia usa a relação cruzada entre as médias móveis rápidas e médias móveis lentas para determinar a tendência dos preços e, com isso, tomar decisões de compra e venda.
Especificamente, o parâmetro da média móvel rápida é definido como 24 ciclos e o parâmetro da média móvel lenta é definido como 100 ciclos. Quando a média móvel rápida cruza a média móvel lenta de baixo para cima, o preço entra em uma tendência ascendente e a estratégia emite um sinal de compra. Quando a média móvel rápida cruza a média móvel lenta de cima para baixo, o preço entra em uma tendência descendente e a estratégia emite um sinal de venda.
Assim, através da determinação da direção da interseção das médias móveis rápidas e lentas, é possível capturar de forma eficaz as mudanças na tendência dos preços, auxiliando na tomada de decisões de compra e venda.
A estratégia tem as seguintes vantagens:
Os princípios são simples e fáceis de entender e de implementar. A translação linear dupla é um dos indicadores tecnológicos mais básicos, fácil de entender e de aplicar.
Os parâmetros são ajustáveis e adaptáveis. Os parâmetros das médias móveis rápidas e médias móveis lentas podem ser ajustados de acordo com a situação real, tornando a estratégia mais flexível.
A capacidade de capturar mudanças de tendência é muito forte. Os cruzamentos de duplas equações são frequentemente usados para capturar os pontos de viragem dos preços da consolidação para a tendência.
Pode filtrar oscilações de forma eficaz, reduzindo as transações inválidas. A dupla linha de equilíbrio pode ser usada para identificar os intervalos de oscilação e evitar a abertura de posições repetidas durante os tremores.
A estratégia também apresenta alguns riscos:
Os sinais de cruzamento de duplas equações podem ser atrasados. Os sinais de cruzamento de duplas equações, como indicadores de tendência, geralmente são atrasados por um período determinado. Isso pode causar um certo custo de oportunidade.
Falso sinal pode ser produzido em um mercado de turbulência. O melhor cenário para o desempenho de uma linha de equilíbrio dupla é quando há uma tendência evidente no preço. Mas, em um mercado de turbulência, é fácil produzir falsos sinais frequentes.
Se o parâmetro de configuração não for apropriado, pode afetar o desempenho da estratégia. Se o parâmetro de configuração de linha média rápida e lenta for incorreto, isso afetará a sensibilidade de captura de tendências cruzadas.
Resolução:
Reduzir adequadamente o ciclo de linha média e aumentar a sensibilidade do sinal de cruzamento.
Adicionar volatilidade ou volume de transação para filtragem, reduzindo transações inválidas em mercados de turbulência.
Optimização de parâmetros, busca de combinações de parâmetros ótimas. Optimização automática de métodos como a adição de aprendizado de máquina.
A estratégia pode ser melhorada em:
O uso de indicadores de média móvel mais avançados, como a média móvel linear ponderada, em vez da média móvel simples, aumenta a capacidade de rastreamento e previsão dos indicadores.
Adicionar mais indicadores auxiliares, como indicadores de volume de transação, indicadores de taxa de flutuação, etc. para filtragem conjunta, reduzindo os sinais inativos.
Otimizar os parâmetros de linha média lenta e rápida, aumentando a adaptabilidade dos parâmetros. Pode-se adotar métodos de aprendizagem de máquina, otimização aleatória e outros para encontrar os parâmetros ótimos.
A estratégia de entrada pode projetar pontos de stop loss e stop loss móvel para controlar perdas individuais. Ao mesmo tempo, a adição de técnicas de otimização de lucros garante a obtenção de lucros suficientes.
Novas tecnologias, como a aprendizagem profunda, podem ser usadas para identificar padrões de preços mais complexos e auxiliar a decisão de compra e venda de cruzamentos lineares, com o objetivo de obter melhores resultados.
Esta estratégia é, em geral, mais clássica e simples, baseada em indicadores de dupla equilíbrio para avaliar a tendência dos preços, para detectar oportunidades de mudança de preço de turbulência para tendência. A vantagem é a clareza de pensamento, a simplicidade prática e a adequação para o acompanhamento de comportamentos de tendência.
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=100000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
//OBV
src = close
obv = ta.cum(math.sign(ta.change(src)) * volume)
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 20, minval = 1, maxval = 100, group="Smoothing")
Limit = input.float(title = "Limit", defval = 1, minval = 0.1, maxval = 10, group="Smoothing")
smoothingLine_ma = ma(obv,smoothingLength, typeMA)
obv_diff = (obv-smoothingLine_ma)*100/obv
//PVT
var cumVolp = 0.
cumVolp += nz(volume)
if barstate.islast and cumVolp == 0
runtime.error("No volume is provided by the data vendor.")
srcp = close
vt = ta.cum(ta.change(srcp)/srcp[1]*volume)
smoothingLine_map = ma(vt,smoothingLength, typeMA)
pvt_diff = (vt-smoothingLine_map)*100/vt
// plot(obv_diff+close+100 ,title="OBV_DIFF", color = color.rgb(255, 118, 54))
// plot(pvt_diff+close+80 ,title="PVT_DIFF", color = color.rgb(223, 61, 255))
indicator = (pvt_diff+obv_diff)/2
goLongCondition1 = ta.crossover(indicator,Limit)
timePeriod = time >= timestamp(syminfo.timezone, 2023,1, 1, 0, 0) // Backtesting Time
notInTrade = strategy.position_size <= 0
if goLongCondition1 and timePeriod and notInTrade
stopLoss = low * 0.99 // -2%
takeProfit = high * 1.05 // +5%
strategy.entry('long', strategy.long )
strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 100)
// goLongCondition1 = ta.crossover(fastEMA, slowEMA)
// timePeriod = time >= timestamp(syminfo.timezone, 2018, 12, 15, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
// stopLoss = low * 0.97
// takeProfit = high * 1.12
// strategy.entry('long', strategy.long)
// strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// plot(fastEMA, color=color.new(color.blue, 0))
// plot(slowEMA, color=color.new(color.yellow, 0))