Mapa de calor do hub de liquidez multiperíodo estratégia quantitativa

MTF
Data de criação: 2024-12-20 14:20:11 última modificação: 2024-12-20 14:20:11
cópia: 0 Cliques: 433
1
focar em
1617
Seguidores

Mapa de calor do hub de liquidez multiperíodo estratégia quantitativa

Visão geral

A estratégia é um sistema de negociação quantitativa baseado em detecção de pontos de fluidez em múltiplos períodos de tempo. Identifica os principais níveis de suporte e resistência através da análise do comportamento dos preços em três períodos de tempo diferentes (de 15 minutos, 1 hora e 4 horas) e toma decisões de negociação com base nisso. O sistema integra funções de gestão de fundos, incluindo configurações de stop loss de quantidade fixa, ao mesmo tempo em que fornece um feedback visual intuitivo para ajudar os comerciantes a entender melhor a estrutura do mercado.

Princípio da estratégia

O núcleo da estratégia é a detecção de pontos de pivô de preços em vários períodos de tempo através das funções ta.pivothigh e ta.pivotlow. Para cada período de tempo, o sistema usa a linha K de referência esquerda e direita (default 7) para determinar os pontos altos e baixos significativos. Quando um novo ponto de pivô de um período de tempo aparece, o sistema gera um sinal de multiplicação; Quando um novo ponto de pivô de alta aparece, o sistema gera um sinal de vazio.

Vantagens estratégicas

  1. A análise de períodos de tempo múltiplos fornece uma visão mais abrangente do mercado, ajudando a capturar diferentes níveis de oportunidades de negociação
  2. A lógica de transação baseada em hubs tem uma base sólida de análise técnica, facilitando a compreensão e execução
  3. Funções de gestão de fundos integradas para controlar eficazmente o risco de cada transação
  4. A interface visual mostra o estado do negócio, incluindo a posição, o nível de stop loss e as áreas de perda
  5. Parâmetros de estratégia ajustáveis, adaptáveis e otimizáveis para diferentes condições de mercado

Risco estratégico

  1. Sinais de múltiplos períodos de tempo podem conflitar e necessitam de um mecanismo de prioridade de sinal razoável.
  2. O Stop Loss de quantidade fixa pode não ser adequado para todas as condições de mercado e é recomendado que seja ajustado de acordo com a dinâmica de volatilidade.
  3. O atraso na detecção de pontos de conexão pode levar ao atraso no tempo de entrada
  4. Falso sinal de ruptura pode ocorrer durante oscilações fortes
  5. Diferenças de fluidez em diferentes períodos de tempo

Direção de otimização da estratégia

  1. Introdução de indicadores de volatilidade e ajuste dinâmico dos níveis de stop loss
  2. Adição de mecanismos de confirmação de volume de transações para aumentar a confiabilidade dos hubs
  3. Desenvolvimento de um sistema de prioridade de ciclo de tempo para resolver o conflito de sinais
  4. Integração de filtros de tendência para evitar o excesso de negociação no mercado horizontal
  5. Considere adicionar análise de estrutura de preços para melhorar a precisão do tempo de entrada

Resumir

A estratégia de quantificação de calor de um núcleo de fluidez de ciclo múltipla é um sistema de negociação estruturado, com lógica clara. Ela fornece uma estrutura de negociação confiável para os comerciantes por meio de análise de mercado multidimensional e gestão rigorosa de risco. Apesar de alguns riscos e limitações inerentes, a estratégia deve manter um desempenho estável em vários ambientes de mercado por meio de otimização e melhoria contínua.

Código-fonte da estratégia
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © pmotta41
//@version=5
strategy("GPT Session Liquidity Heatmap Strategy", overlay=true)

// Inputs
timeframe1 = input.timeframe("15", title="Intraday Timeframe 1")
timeframe2 = input.timeframe("60", title="Intraday Timeframe 2")
timeframe3 = input.timeframe("240", title="Higher Timeframe")
leftBars = input.int(7, title="Left Bars for Pivot", minval=2, maxval=20)
rightBars = input.int(7, title="Right Bars for Pivot", minval=2, maxval=20)
takeProfitDollar = input(200, title="Take Profit $$")
stopLossDollar = input(100, title="Stop Loss $$")

// Pivot Detection Function
detectPivot(highs, lows, left, right) =>
    pivotHigh = ta.pivothigh(highs, left, right)
    pivotLow = ta.pivotlow(lows, left, right)
    [pivotHigh, pivotLow]

// Get Pivots from Different Timeframes
[pivotHigh1, pivotLow1] = request.security(syminfo.tickerid, timeframe1, detectPivot(high, low, leftBars, rightBars))
[pivotHigh2, pivotLow2] = request.security(syminfo.tickerid, timeframe2, detectPivot(high, low, leftBars, rightBars))
[pivotHigh3, pivotLow3] = request.security(syminfo.tickerid, timeframe3, detectPivot(high, low, leftBars, rightBars))

// Plot Pivots
plotshape(series=pivotHigh1, title="Pivot High 1", location=location.abovebar, color=color.red, style=shape.labeldown, text="H1")
plotshape(series=pivotLow1, title="Pivot Low 1", location=location.belowbar, color=color.green, style=shape.labelup, text="L1")
plotshape(series=pivotHigh2, title="Pivot High 2", location=location.abovebar, color=color.red, style=shape.labeldown, text="H2")
plotshape(series=pivotLow2, title="Pivot Low 2", location=location.belowbar, color=color.green, style=shape.labelup, text="L2")
plotshape(series=pivotHigh3, title="Pivot High 3", location=location.abovebar, color=color.red, style=shape.labeldown, text="H3")
plotshape(series=pivotLow3, title="Pivot Low 3", location=location.belowbar, color=color.green, style=shape.labelup, text="L3")

// Strategy Logic
buyCondition = pivotLow1 or pivotLow2 or pivotLow3
sellCondition = pivotHigh1 or pivotHigh2 or pivotHigh3

if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)

// Function to Convert $$ to Points for Stop Loss and Take Profit
moneyToSLPoints(money) =>
    strategy.position_size != 0 ? (money / syminfo.pointvalue / math.abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(takeProfitDollar)
l = moneyToSLPoints(stopLossDollar)

// Exit Conditions
strategy.exit("Exit Buy", from_entry="Buy", profit=p, loss=l)
strategy.exit("Exit Sell", from_entry="Sell", profit=p, loss=l)

// Visualization for Stop Loss and Take Profit Levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * math.sign(strategy.position_size) * syminfo.mintick

tp = plot(pointsToPrice(p), style=plot.style_linebr, color=color.green, title="Take Profit Level")
sl = plot(pointsToPrice(-l), style=plot.style_linebr, color=color.red, title="Stop Loss Level")
avg = plot(strategy.position_avg_price, style=plot.style_linebr, color=color.blue, title="Entry Price")
fill(tp, avg, color=color.new(color.green, 90), title="Take Profit Area")
fill(avg, sl, color=color.new(color.red, 90), title="Stop Loss Area")

// Background for Gain/Loss
gainBackground = strategy.position_size > 0 and close > strategy.position_avg_price
lossBackground = strategy.position_size > 0 and close < strategy.position_avg_price
bgcolor(gainBackground ? color.new(color.green, 90) : na, title="Gain Background")
bgcolor(lossBackground ? color.new(color.red, 90) : na, title="Loss Background")