Estratégia de compra/venda em fechamento de velas

Autora:ChaoZhang, Data: 2024-01-08 11:11:18
Tags:

img

Resumo

Esta estratégia desencadeia sinais de compra/venda comparando os preços de fechamento da vela atual e da vela anterior.

Especificamente, se a vela atual fechar acima do preço mais alto da vela anterior, um sinal de compra é acionado.

Estratégia lógica

  1. Obter os preços históricos mais altos e mais baixos do período especificado (por exemplo, diário, horário)
  2. Calcular distâncias de stop loss e take profit
    • Distância de stop loss = Candela anterior mais alta - Candela anterior mais baixa
    • Distância de lucro = Distância de stop loss * 3 (ratio risco/recompensação 1:3)
  3. Determinar a relação entre o fechamento actual e o máximo/baixo anterior
    • Se o fechamento atual > o fechamento anterior for o mais alto, desencadear o sinal de compra
    • Se o fechamento atual < o menor valor da vela anterior, desencadear o sinal de venda
  4. Estabelecer stop loss e take profit após a entrada
    • Após a compra, definir stop loss na vela anterior mais baixo - distância stop loss, tirar lucro na vela anterior mais alto + tirar lucro distância
    • Após a venda, definir stop loss na vela anterior mais alto + stop loss distância, tirar lucro na vela anterior mais baixo - tirar lucro distância

O que precede é a lógica básica de negociação desta estratégia.

Análise das vantagens

  • Ideia estratégica simples e clara, fácil de compreender e implementar
  • Usar informações do candelabro para determinar a direção da tendência
  • Ter um mecanismo de stop loss e take profit para controlar o risco

Análise de riscos

  • O julgamento baseado apenas num período de tempo pode gerar mais sinais falsos
  • Não considera mais fatores como mudança de volume, volatilidade, etc.
  • As configurações de stop loss e take profit podem ser inadequadas, demasiado largas ou demasiado apertadas são ambas arriscadas

Orientações de otimização

  • Combine mais fatores para confirmar o sinal de entrada, como volume, média móvel, etc.
  • Otimizar algoritmos de stop loss e take profit para ter stop loss mais razoáveis e take profit suficiente
  • O ajuste dos parâmetros pode ser necessário para diferentes produtos
  • Podem ser testados prazos mais longos

Resumo

A ideia da estratégia é simples e clara em geral, usando o preço de fechamento do candelabro para determinar a direção da tendência e também tem stop loss / take profit para controlar o risco, pode servir como uma estratégia básica para ações e negociação de criptomoedas.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy/Sell on Candle Close", overlay=true)

var float prevLowest = na
var float prevHighest = na
var float slDistance = na
var float tpDistance = na

// Specify the desired timeframe here (e.g., "D" for daily, "H" for hourly, etc.)
timeframe = "D"

// Fetching historical data for the specified timeframe
pastLow = request.security(syminfo.tickerid, timeframe, low, lookahead=barmerge.lookahead_on)
pastHigh = request.security(syminfo.tickerid, timeframe, high, lookahead=barmerge.lookahead_on)

if bar_index > 0
    prevLowest := pastLow[1]
    prevHighest := pastHigh[1]

currentClose = close

if not na(prevLowest) and not na(prevHighest)
    slDistance := prevHighest - prevLowest
    tpDistance := 3 * slDistance // Adjusted for 1:3 risk-reward ratio

// Buy trigger when current close is higher than previous highest
if not na(prevLowest) and not na(prevHighest) and currentClose > prevHighest
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy TP/SL", "Buy", stop=prevLowest - slDistance, limit=prevHighest + tpDistance)

// Sell trigger when current close is lower than previous lowest
if not na(prevLowest) and not na(prevHighest) and currentClose < prevLowest
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell TP/SL", "Sell", stop=prevHighest + slDistance, limit=prevLowest - tpDistance)

plot(prevLowest, color=color.blue, title="Previous Lowest")
plot(prevHighest, color=color.red, title="Previous Highest")







Mais.