Fala galera!!
Hoje iremos analisar o funcionamento do Setup Preço de Fechamento de Reversão.
O setup preço de fechamento de reversão (PFR) é uma estratégia desenvolvida pelo Trader brasileiro Alexandre Wolwacz, mas conhecido como Stormer do mercado.
Este setup configura uma reversão de tendência e possui as seguintes regras de construção;
Quando a mínima do candle atual for menor do que a mínima dos dois últimos candles prévios e o fechamento do candle atual for maior do que o fechamento do candle anterior, tem-se o padrão de formação do setup. Como mostra a imagem abaixo.
O stop pode ser calculado de duas maneiras:
1 - Na mínima do candle atual - Com esse stop fica mais fácil de ser violinado. Porém, é um stop mais conservador.
2 - Calculando a projeção do candle anterior uma vez para baixo / duas vezes para baixo (este é o stop utilizado nessa estratégia). Este stop é mais agressivo. Porém, violina menos.
O alvo fica sendo duas vezes o risco ou duas vezes o tamanho do candle anterior.
Como filtro utilizamos nesse post a média móvel aritmética de vinte períodos. Mas, pode utilizar também, como filtro, o estocástico lento, o IFR ou outro oscilador de preferência.
Vejam no gráfico a baixo como foi a curva de capital na ação TRPL4.
Disclaimer: Esta estratégia não configura garantia de rentabilidade. Utilize-o este posta para fins de estudo e testes.
Boas operações.
Komen:
Código para versão 4 Pine (evita alguns erros da versão 5).
//@version=4
strategy("PRF", overlay = true)
var candle = 0
var tamanho = 0.00
var alvo = 0.00
var stop = 0.00
var quantidadeAcoes = 0.0
//É só colocar aqui as suas condições de compra e venda
condicoes_de_compra = (close > close) and (lowest(low,2)sma(close,20))
condicoes_de_venda = (close < close) and (highest(high,2)>highest(high,2)) and (close0)
candle := candle + 1
tamanho := high - low
alvo := (tamanho * 2) + high // Esse é o seu alvo
stop := abs( (tamanho * 2) - low )// Esse é o seu stop
//Abaixo temos o envio da ordem contendo definição do alvo e stop
strategy.exit("saída_da_compra", "entrada_na_compra", qty = quantidadeAcoes*100, limit = alvo, stop = stop)
if (strategy.position_size<0)
candle := candle + 1
tamanho := high - low
alvo := abs( ( tamanho * 2 ) - low ) // Esse é o seu alvo
stop := ( tamanho * 2 ) + high // Esse é o seu stop
//Envio da ordem contendo o alvo e o stop
strategy.exit("saída_da_venda", "entrada_na_venda", qty = quantidadeAcoes*100, limit = alvo, stop = stop)
plot(sma(close,20))
//@version=4
strategy("PRF", overlay = true)
var candle = 0
var tamanho = 0.00
var alvo = 0.00
var stop = 0.00
var quantidadeAcoes = 0.0
//É só colocar aqui as suas condições de compra e venda
condicoes_de_compra = (close > close) and (lowest(low,2)sma(close,20))
condicoes_de_venda = (close < close) and (highest(high,2)>highest(high,2)) and (close0)
candle := candle + 1
tamanho := high - low
alvo := (tamanho * 2) + high // Esse é o seu alvo
stop := abs( (tamanho * 2) - low )// Esse é o seu stop
//Abaixo temos o envio da ordem contendo definição do alvo e stop
strategy.exit("saída_da_compra", "entrada_na_compra", qty = quantidadeAcoes*100, limit = alvo, stop = stop)
if (strategy.position_size<0)
candle := candle + 1
tamanho := high - low
alvo := abs( ( tamanho * 2 ) - low ) // Esse é o seu alvo
stop := ( tamanho * 2 ) + high // Esse é o seu stop
//Envio da ordem contendo o alvo e o stop
strategy.exit("saída_da_venda", "entrada_na_venda", qty = quantidadeAcoes*100, limit = alvo, stop = stop)
plot(sma(close,20))
//@version=5
strategy('PFR', overlay=true)
var candle = 0
var tamanho = 0.00
var alvo = 0.00
var stop = 0.00
var quantidadeAcoes = 0.0
condicoes_de_compra = close > close and ta.lowest(low, 2) < ta.lowest(low, 2) and close > ta.sma(close, 20)
condicoes_de_venda = close < close and ta.highest(high, 2) > ta.highest(high, 2) and close < ta.sma(close, 20)
strategy.cancel('entrada_na_compra')
strategy.cancel('entrada_na_venda')
if strategy.position_size == 0
candle := 0
quantidadeAcoes := math.round(100000 / close / 100)
if condicoes_de_compra
strategy.entry('entrada_na_compra', strategy.long, qty=quantidadeAcoes * 100, stop=high)
// if (condicoes_de_venda)
// strategy.entry("entrada_na_venda", false, qty = quantidadeAcoes*100, stop = low)
if strategy.position_size > 0
candle += 1
tamanho := high - low
alvo := tamanho * 2 + high // Esse é o seu alvo
stop := math.abs(tamanho * 2 - low) // Esse é o seu stop
strategy.exit('saída_da_compra', 'entrada_na_compra', qty=quantidadeAcoes * 100, limit=alvo, stop=stop)
if strategy.position_size < 0
candle += 1
tamanho := high - low
alvo := math.abs(tamanho * 2 - low) // Esse é o seu alvo
stop := tamanho * 2 + high // Esse é o seu stop
strategy.exit('saída_da_venda', 'entrada_na_venda', qty=quantidadeAcoes * 100, limit=alvo, stop=stop)
plot(ta.sma(close, 20))