
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.
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.
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.
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.
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.
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.
A estratégia tem as seguintes vantagens:
O princípio é simples, fácil de entender e de aplicar.
O uso de K-line box breakthroughs para determinar a direção e a força do mercado é de alta precisão.
A configuração do nível de parada permite capturar as chances de aceleração da tendência. O multiplicador de parada é ajustável.
Há uma lógica de stop-loss clara que permite controlar perdas individuais.
A estratégia é flexível e pode ser personalizada de acordo com o estilo individual.
No entanto, a estratégia também apresenta alguns riscos:
O sinal de ruptura pode ser falso e não pode evitar completamente a ocorrência de perdas.
A posição de stop loss perto do ponto de entrada pode ser facilmente desencadeada por mercados radicais.
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.
Não se tem em conta o impacto das diferenças de tipos e períodos de tempo nas transações.
Para otimizar ainda mais esta estratégia, podemos começar por:
Configure o parâmetro de suspensão de perda de adaptabilidade de acordo com diferentes variedades e períodos de tempo.
Aumentar os indicadores técnicos para avaliar as tendências e evitar ser apanhado em situações de turbulência.
A partir de agora, você pode fazer uma lista de posicionamentos para acompanhar a tendência.
A quantidade de combinação pode ser usada como um indicador para avaliar a veracidade ou falsidade de uma ruptura, filtrando o sinal.
A adição de algoritmos de aprendizagem de máquina para auxiliar na direção das tendências.
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.
/*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")