Estratégia de referência para tendência ascendente de rompimento


Data de criação: 2024-02-21 10:58:01 última modificação: 2024-02-21 10:58:01
cópia: 0 Cliques: 610
1
focar em
1617
Seguidores

Estratégia de referência para tendência ascendente de rompimento

Visão geral

A estratégia é uma estratégia de posicionamento de longa linha baseada em uma média móvel simples para determinar a direção da tendência, combinada com uma linha de suporte de resistência para formar um sinal de ruptura. Gravação de uma linha de resistência e uma linha de suporte, calculando os pontos altos e baixos de pivô do preço. Faça mais quando o preço quebra a linha de resistência e leve a posição quando a linha de suporte é quebrada.

Princípio da estratégia

  1. Calcular uma média móvel simples de 20 dias como uma linha de referência para avaliar a tendência
  2. Pivot Highs e Pivot Lows calculados com base em parâmetros de entrada do usuário
  3. Traçar linhas de resistência e de suporte com base nos pontos altos e baixos do Pivot
  4. Quando o preço de fechamento estiver acima da resistência, faça mais entrada
  5. Quando a linha de suporte atravessa a linha de resistência

Esta estratégia usa uma média móvel simples para determinar a direção da tendência geral, e usa pontos críticos para criar sinais de negociação. É uma estratégia típica de ruptura.

Análise de vantagens

  1. Há muitas oportunidades estratégicas para ações altamente voláteis e fácil de capturar tendências
  2. Controle de riscos, maior risco do que ganho
  3. A utilização de sinais de ruptura para evitar falsos riscos de ruptura
  4. Parâmetros personalizáveis, adaptabilidade

Análise de Riscos

  1. Dependendo da otimização de parâmetros, os parâmetros errados aumentam a probabilidade de falsa brecha
  2. O sinal de ruptura foi atrasado e algumas oportunidades podem ter sido perdidas.
  3. Perigosos em situações de tremores
  4. A falta de ajuste da linha de suporte pode causar prejuízos

Pode-se reduzir o risco através de parâmetros de otimização de disco rígido, em combinação com uma estratégia de stop loss.

Direção de otimização

  1. Otimização de parâmetros de média móvel
  2. Parâmetros de linha de resistência de suporte optimizados
  3. Aumentar a estratégia de stop loss
  4. Mecanismo de confirmação de ruptura
  5. Indicadores de filtragem combinados com volume de transação

Resumir

A estratégia como um todo é uma estratégia típica de ruptura, que depende de otimização de parâmetros e de liquidez, adequada para os comerciantes que seguem a tendência. Como um quadro de referência, pode ser expandido em módulos de acordo com a necessidade real, reduzindo o risco e aumentando a estabilidade por meio de mecanismos como stop loss, stop loss e filtragem de sinais.

Código-fonte da estratégia
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © CheatCode1

//@version=5
strategy("Quantitative Trend Strategy- Uptrend long", 'Steady Uptrend Strategy', overlay=true, initial_capital = 1500, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type = strategy.percent_of_equity)


length = input.int(20, minval=1)
src = input(close, title="Source")
basis = ta.sma(src, length)
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)

inp1 = input.int(46, 'LookbackLeft')
inp2 = input.int(32, 'LookbackRight')

l1 = ta.pivothigh(close, inp1, inp2)
S1 = ta.pivotlow(close, inp1, inp2)

// plot(l1, 'Pivothigh', color.red, 1)
// // plot(S1, 'Pivot Low', color.red)

l1V = ta.valuewhen(l1, close, 0)
S1V = ta.valuewhen(S1, close, 0)

Plotl1 = not na(l1) ? l1V : na
PlotS1 = not na(S1) ? S1V : na

plot(Plotl1, 'Resistance', color.green, 1, plot.style_stepline, true)
plot(PlotS1, 'Support', color.red, 1, plot.style_stepline, true)

Priceforlong = close > l1V ? true : na
Priceforshort = close < S1V ? true : na

plotshape(Priceforlong ? high : na, 'p', shape.arrowup, location.abovebar, color.green, size = size.small)
plotshape(Priceforshort ? low : na, 's', shape.arrowdown, location.belowbar, color.red, size = size.small)

vol = volume
volma = ta.sma(vol, 20)

Plotl1C = ta.valuewhen(na(Plotl1), l1V, 0)
PlotS1C = ta.valuewhen(na(PlotS1), S1V, 0)
//Strategy Execution
volc = volume > volma 

Lc1 = Priceforlong 

Sc1 = Priceforshort

sL = Plotl1 < PlotS1 ? close : na
sS = PlotS1 > Plotl1 ? close : na


if Lc1 
    strategy.entry('Long', strategy.long)
// if Sc1 and C2
//     strategy.entry('Short', strategy.short)

if Priceforshort
    strategy.cancel('Long')
if Priceforlong   
    strategy.cancel('Short')


// Stp1 = ta.crossover(k, d)
// Ltp1 = ta.crossunder(k, d)
// Ltp = d > 70  ? Ltp1 : na
// Stp = d < 30  ? Stp1 : na


if strategy.openprofit >= 0 and sL
    strategy.close('Long')
if strategy.openprofit >= 0 and sS
    strategy.close('Short')
takeP = input.float(2, title='Take Profit') / 100
stopL = input.float(1.75, title='Stop Loss') / 100


// // Pre Directionality

Stop_L = strategy.position_avg_price * (1 - stopL)

Stop_S = strategy.position_avg_price * (1 + stopL)

Take_S= strategy.position_avg_price * (1 - takeP)

Take_L = strategy.position_avg_price * (1 + takeP)
     
// sL = Plotl1 < PlotS1 ? close : na
// sS = PlotS1 < Plotl1 ? close : na
     
// //Post Excecution
if strategy.position_size > 0 and not (Lc1)
    strategy.exit("Close Long", stop = Stop_L, limit = Take_L)

if strategy.position_size < 0 and not (Sc1)
    strategy.exit("Close Short", stop = Stop_S, limit = Take_S)