Estratégia de linha de prata de rompimento de momentum


Data de criação: 2024-02-01 15:01:55 última modificação: 2024-02-01 15:01:55
cópia: 2 Cliques: 622
1
focar em
1617
Seguidores

Estratégia de linha de prata de rompimento de momentum

Visão geral

A estratégia é uma estratégia de compra e venda de breakout baseada nos indicadores de dinâmica de preços MACD e a linha média, aplicada ao período de 1 hora de prata (XAG/USD, XAG/EUR). O ponto-chave é combinar a tendência de preços e a dinâmica dos indicadores para determinar o momento da reversão da tendência.

Princípio da estratégia

Quando a linha MACD é corrigida negativamente e continua a subir, a tendência de alta de curto prazo é mais forte; ao mesmo tempo, se o preço de fechamento quebra a linha média da tendência de alta, um sinal de múltiplas cabeças é produzido. De forma semelhante, a linha MACD é corrigida negativamente e cai da linha de sinal, e quando o preço de fechamento cai da linha média da tendência de queda, um sinal de cabeças vazias é produzido.

A estratégia determina, especificamente, que os sinais de entrada para posições longas são:

  1. A linha MACD é positiva
  2. A coluna atual é maior que a anterior
  3. Preço de fechamento acima da média
  4. O preço de fechamento foi mais alto do que o máximo de quase três linhas K.

O oposto é o que acontece com os sinais de entrada de uma posição curta.

Uma vez aberta a posição, a posição de equilíbrio incondicional no próximo fechamento da linha K. A estratégia não estabelece um ponto de parada de parada, buscando o ponto de partida para capturar a explosão da tendência.

Análise de vantagens

A estratégia combina preços e indicadores de dinâmica para determinar com mais precisão o momento da reversão da tendência, com uma maior probabilidade de vitória. Uma forma incondicional de liquidar a posição de liquidação da linha K pode evitar efetivamente a perda novamente após a reversão.

Não há paradas de parada, mas a abertura total de posições, para atender às necessidades dos investidores que buscam um alto retorno.

Análise de Riscos

A configuração sem perda é fácil de ser presa, o risco de perda é grande. Se o sinal de retorno falhar, não conseguir parar a perda a tempo, pode enfrentar uma perda de dinheiro maior.

É muito difícil capturar lucros de uma tendência sem condições de fechamento de uma linha K.

Direção de otimização

Pode-se considerar a adição de estratégias de parada de perdas apropriadas, reduzindo o risco de perdas, com base em compras de ruptura com maior taxa de vitória.

Também é possível combinar técnicas avançadas para criar mecanismos de reabertura de posições após a liquidação, tentando capturar lucros de tendências de forma contínua.

Resumir

Esta estratégia é, em geral, uma estratégia de alto risco agressivo, que exige que os investidores suportem um maior risco de perda devido à configuração sem perda. Mas, em comparação, a abertura total da posição no primeiro momento após a reversão bem-sucedida também pode obter um alto retorno.

Código-fonte da estratégia
/*backtest
start: 2023-01-31 00:00:00
end: 2024-01-13 05:20: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/
// © SoftKill21

//@version=4
strategy("XAG strategy 1h",overlay=true)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
var gica = 0
var marcel = gica+2
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
len = input(10, minval=1, title="Length")
src = input(close, title="Source")
out = sma(src, len)

//distanta = input(1.004)

fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

option1=input(true)
option2=input(true)

long2 =  close > open  and time_cond and close > out and hist > 0 and hist > hist[1] 
short2 =  close < open  and time_cond and close < out and hist < 0 and hist < hist[1] 

long1 = (close > open ) and time_cond and close > out and hist > 0 and  hist > hist[1] and high > high[1] and high[1] > high[2] and close > high[1] and close > high[2] and close > high[3] 
short1 = (close < open)  and time_cond and close < out and hist < 0 and  hist < hist[1] and low < low[1] and low[1] < low[2]  and close < low[1] and close < low[2] and close < low[3] 

if(option1)
    strategy.entry("long",1,when= short1)
    strategy.entry("short",0,when=long1)
    strategy.close_all()

if(option2)

    strategy.entry("long",1,when= short2)
    strategy.entry("short",0,when=long2)
    strategy.close_all()

// if(strategy.openprofit < 0)
//     strategy.close_all()
// if(strategy.openprofit>0)
//     strategy.close("long",when = close < open )
//     strategy.close("short",when = close > open)
//     strategy.close("long",when= close < open)
//     strategy.close("short",when= close> open)


// tp = input(0.0003)
// sl = input(0.005)
// strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong")
// strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")