
A estratégia de negociação de ruptura de volatilidade é uma estratégia baseada em ações individuais de preços. Ela desencadeia sinais de compra e venda através da análise de mudanças no preço e volume de transações. A estratégia também pode ser usada em combinação com alertas para desencadear ordens em outras bolsas ou sistemas.
A estratégia determina o movimento e a força dos preços através da análise dos preços de fechamento, abertura, máximo e mínimo da linha K.
Especificamente, analisa se o preço de fechamento das 3 linhas K mais recentes está continuamente acima ou abaixo do preço de abertura. Se assim for, indica que o preço está em uma ruptura contínua para cima ou para baixo, produzindo uma tendência.
Além disso, a estratégia também calcula o volume máximo de transações em um determinado período. Se o volume de transações da linha K atual excede o valor máximo do período mais recente, o volume de transações é amplificado, refletindo uma grande força de transação no mercado.
A estratégia gerou um sinal de compra ou venda, ao mesmo tempo em que o preço produziu três rupturas consecutivas da linha K e aumentou o volume de transações.
Esta é uma estratégia simples e eficaz que utiliza a ação dos preços e os sinais de volume de transação.
A estratégia também apresenta alguns riscos potenciais:
Para controlar esses riscos, pode-se considerar a inclusão de stop loss móvel, combinações de parâmetros de otimização ou uso em combinação com outros indicadores ou estratégias.
Esta é uma estratégia básica, mas ainda há muito espaço para otimização, principalmente no sentido de:
Esta estratégia é, em geral, uma estratégia muito prática baseada na ideia de ação de preços. Ela possui vantagens como participação, facilidade de compreensão e baixo custo de implementação.
/*backtest
start: 2022-12-04 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SPAS", overlay=true, pyramiding=5, calc_on_order_fills=true)
int signal_hh = 0
int signal_ll = 0
if close[1] >= open[1] and close[2] >= open[2] and close[3] >= open[3]
signal_hh := 1
if close[1] <= open[1] and close[2] <= open[2] and close[3] <= open[3]
signal_ll := 1
plotchar(signal_hh, char='H', size=size.tiny, location=location.abovebar)
plotchar(signal_ll, char='L', size=size.tiny, location=location.abovebar)
int signal_vol = 0
float max_volume = 0.0
int vol_length = input(title="Volume length", type=input.integer, defval=3)
for i = vol_length to 1
if volume[i] > max_volume
max_volume := volume[i]
if volume[0] > max_volume
signal_vol := 1
plotchar(signal_vol, char='V', size=size.tiny, location=location.bottom)
int signal_buy = 0
int signal_sell = 0
if signal_hh and signal_vol
signal_buy := 1
label.new(bar_index, high, "B", color=color.green)
strategy.entry("buy", strategy.long, 5)//, when=strategy.position_size <= 0)
if signal_ll and signal_vol
signal_sell := 1
label.new(bar_index, low, "S", color=color.red)
strategy.entry("sell", strategy.short, 5)//, when=strategy.position_size > 0)
//plotchar(signal_buy, char='B', color=color.green, size=size.tiny, location=location.abovebar)
plotarrow(signal_buy, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)
//plotchar(signal_sell, char='S', color=color.red, size=size.tiny, location=location.abovebar)
plotarrow(signal_sell * -1, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)