Estratégia Silver Bullet Baseada em Box Breakout


Data de criação: 2024-01-15 12:06:32 última modificação: 2024-01-15 12:06:32
cópia: 1 Cliques: 801
1
focar em
1617
Seguidores

Estratégia Silver Bullet Baseada em Box Breakout

Visão geral

A estratégia determina a direção e a intensidade do mercado, principalmente monitorando a ruptura do caixão formado pelos pontos altos e baixos da linha K. Quando ocorre uma ruptura do caixão para cima, a estratégia define um ponto de entrada positivo perto do ponto de ruptura; Quando ocorre uma ruptura do caixão para baixo, a estratégia define um ponto de entrada inverso perto do ponto de ruptura.

Princípio da estratégia

  1. A estratégia define um período de tempo de negociação e só opera dentro desse período para procurar oportunidades de negociação.

  2. A estratégia determina se há uma ruptura significativa nos preços mais altos e mais baixos das duas primeiras linhas de K após a formação de cada linha K.

2.1 Se o preço mínimo da segunda linha K for maior que o preço máximo da primeira linha K, ocorre uma ruptura de caixa para cima.

2.2 Se o valor máximo da segunda linha K for inferior ao valor mínimo da primeira linha K, ocorre uma ruptura de caixa para baixo.

  1. Após a confirmação do sinal de ruptura do caixão, a estratégia define um ponto de entrada positivo ou inverso perto do preço mais alto ou mais baixo da linha K.

  2. Uma vez que uma posição é formada, a estratégia faz um parâmetro de parada de acordo com o dobro da amplitude da ruptura, para capturar a aceleração da tendência.

  3. A estratégia também define um ponto de parada no preço mínimo ou máximo da linha K da segunda linha, reduzindo o risco de perda.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O princípio é simples, fácil de entender e de aplicar.

  2. O uso de K-line box breakthroughs para determinar a direção e a força do mercado é de alta precisão.

  3. A configuração do nível de parada permite capturar as chances de aceleração da tendência. O multiplicador de parada é ajustável.

  4. Há uma lógica de stop-loss clara que permite controlar perdas individuais.

  5. A estratégia é flexível e pode ser personalizada de acordo com o estilo individual.

Análise de Riscos

No entanto, a estratégia também apresenta alguns riscos:

  1. O sinal de ruptura pode ser falso e não pode evitar completamente a ocorrência de perdas.

  2. A posição de stop loss perto do ponto de entrada pode ser facilmente desencadeada por mercados radicais.

  3. A falta de um padrão de tendência pode ser frequentemente a causa de uma perda de suspensão em situações de turbulência.

  4. Não se tem em conta o impacto das diferenças de tipos e períodos de tempo nas transações.

Direção de otimização

Para otimizar ainda mais esta estratégia, podemos começar por:

  1. Configure o parâmetro de suspensão de perda de adaptabilidade de acordo com diferentes variedades e períodos de tempo.

  2. Aumentar os indicadores técnicos para avaliar as tendências e evitar ser apanhado em situações de turbulência.

  3. A partir de agora, você pode fazer uma lista de posicionamentos para acompanhar a tendência.

  4. A quantidade de combinação pode ser usada como um indicador para avaliar a veracidade ou falsidade de uma ruptura, filtrando o sinal.

  5. A adição de algoritmos de aprendizagem de máquina para auxiliar na direção das tendências.

Resumir

A estratégia baseia-se em um design simples de princípios de ruptura, para obter ganhos extras capturando a operação acelerada após a ruptura. O risco é controlado com o uso de configurações de stop loss e stop loss. A estratégia é fácil de entender e implementar, pode ser ajustada e otimizada de acordo com as necessidades individuais e o ambiente de mercado, e tem uma forte praticidade.

Código-fonte da estratégia
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
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/
// © Dvitash

//@version=5
strategy("Casper SMC Silver Bullet", shorttitle = "Casper SB", overlay=true, calc_on_order_fills = true)

startTime = input(defval = "1000", title = "Start Time")
endTime = input(defval = "1600", title = "End Time")
contractAmt = input.int(defval = 2, title = "Contract Amount")
fvgCol = input.color(defval = color.rgb(63, 61, 179, 41), title = "FVG Color")
borderCol = input.color(defval = color.rgb(35, 33, 172, 41), title = "FVG Border Color")
fvgExtendLength = input.int(defval = 0, minval = 0, title = "FVG Extend Length")

allowedTime = not na(time(timeframe.period, startTime + "-" + endTime +":23456", "America/New_York"))
newDay = bool(ta.change(time('D')))
h = hour(time('1'), "America/New_York")

var bool fvgDrawn = na
var float entryPrice = na 
var float stopPrice = na 
var float tpPrice = na 

if newDay
    fvgDrawn := false
    // a_allBoxes = box.all
    // if array.size(a_allBoxes) > 0
    //     for i = 0 to array.size(a_allBoxes) - 1
    //         box.delete(array.get(a_allBoxes, i))

if allowedTime and barstate.isconfirmed and h <= 16
    //Long FVG
    if high[2] < low and not fvgDrawn
        // box.new(bar_index[2], low, bar_index + fvgExtendLength, high[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := low[2]
        entryPrice := low
        tpPrice := entryPrice + (math.abs(low[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("long", strategy.long, contractAmt, limit = entryPrice, comment = "Long Entry")
        fvgDrawn := true

    if low[2] > high and not fvgDrawn
        // box.new(bar_index[2], high, bar_index + fvgExtendLength, low[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := high[2]
        entryPrice := high
        tpPrice := entryPrice - (math.abs(high[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("short", strategy.short, contractAmt, limit = entryPrice, comment = "Short Entry")
        fvgDrawn := true
if h >= 16
    strategy.close_all()
    strategy.cancel_all()

strategy.exit("long exit", from_entry = "long", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Long Exit")
strategy.exit("short exit", from_entry = "short", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Short Exit")