Estratégia de negociação de avanço de alta probabilidade baseada no equilíbrio de pressão

Autora:ChaoZhang, Data: 2023-11-13 11:40:53
Tags:

img

Resumo

Esta estratégia usa uma combinação de múltiplos indicadores para determinar a direção da tendência e as oportunidades de negociação, adotando uma abordagem de balanço de pressão para aumentar a taxa de ganho dos negócios.

Estratégia lógica

  1. Utilize a EMA para calcular a média móvel para determinar a direção geral da tendência.

  2. Use o MACD para calcular a diferença entre as médias móveis rápidas e lentas.

  3. Use o PSAR para calcular o ponto variável contínuo. Quando o valor do PSAR é grande, ele indica uma tendência de queda, quando o valor do PSAR é pequeno, ele indica uma tendência de alta.

  4. Combine os três indicadores acima para determinar a consistência da tendência.

  5. Entre em negociações com base em critérios de compra e venda e defina pontos de stop loss e take profit.

  6. As regras específicas são:

    • Condição de compra: não em tendência de alta, histograma MACD < 0, preço de fechamento > EMA
    • Condição de venda: em tendência de alta, histograma MACD > 0, preço de fechamento < EMA
    • Condição de stop loss: o preço atinge o próximo valor PSAR
    • Condição de captação de lucro: atingir o rácio de captação de lucro pré-definido

Vantagens da estratégia

  1. Usar vários indicadores para determinar a tendência melhora a precisão.

  2. A abertura de negociações com base em tendências definidas identificadas através do balanço de pressão aumenta a taxa de ganho.

  3. A definição de stop loss e take profit pode limitar as perdas e bloquear os lucros.

  4. Regras de negociação claras e sistemáticas tornam-no adequado para a negociação por algoritmos.

  5. Os parâmetros podem ser otimizados para se adaptarem a diferentes produtos e prazos.

Riscos da Estratégia

  1. O julgamento da tendência pode ser errado, resultando em uma direção comercial incorreta.

  2. Os movimentos extremos do mercado podem gerar falsos sinais dos indicadores.

  3. A perda de paragem está a ser demasiado grande, incapaz de sair a tempo.

  4. O ajuste inadequado dos parâmetros leva a transações excessivas ou em falta.

  5. Os produtos não líquidos não podem cumprir os planos de stop loss e take profit.

  6. Os riscos podem ser reduzidos através da otimização dos parâmetros, ajustando as paradas e selecionando produtos líquidos.

Orientações de otimização

  1. Ajustar o período EMA para otimizar a precisão da tendência.

  2. Ajustar o período MACD rápido e lento para melhorar a sensibilidade.

  3. Otimizar os índices de stop loss e de lucro para encontrar o equilíbrio ideal.

  4. Adicionar outros indicadores auxiliares para melhorar o calendário de entrada.

  5. Escolha produtos com boa liquidez e grandes oscilações.

  6. Ajustar os prazos para se adequarem às diferentes características do produto.

Resumo

Esta estratégia integra múltiplos indicadores para análise de tendências e entra em negociações com base em tendências definidas, com stop loss e take profit pré-definidos, que podem efetivamente capturar os movimentos do mercado e alcançar bons retornos, garantindo certa lucratividade.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy(title = "Crypto Scalper", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)
len = input(60, minval=1, title="Length EMA")
src = input(close, title="Source")
out = ema(src, len)
//
fast_length = input(title="Fast Length MACD", type=input.integer, defval=12)
slow_length = input(title="Slow Length MACD", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Oscillator MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

tplong=input(0.245, step=0.005)
sllong=input(1.0, step=0.005)
tpshort=input(0.055, step=0.005)
slshort=input(0.03, step=0.005)

if (uptrend and hist >0 and close < out)
	strategy.entry("short", strategy.short, stop=nextBarSAR, comment="short")
	strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')
if (not uptrend and hist <0 and close > out)
	strategy.entry("long", strategy.long, stop=nextBarSAR, comment="long")
	strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closelong')

	

Mais.