Esta estratégia usa o modelo de seleção de ações de Mark Minervini e indicadores de média móvel para determinar as tendências de preços para entrada e stop-loss automatizados. Ele julga principalmente se os preços das ações estão em uma tendência de alta e se eles romperam as principais médias móveis para gerar sinais de compra. Ao mesmo tempo, a estratégia define uma linha de stop-loss para parar ativamente as perdas quando os preços caem.
A estratégia julga principalmente as seguintes condições e gera um sinal de compra quando estas são satisfeitas ao mesmo tempo:
Quando as condições acima são cumpridas, a estratégia julga que o preço da ação está em uma tendência ascendente e gera um sinal de compra.
Além disso, a estratégia também estabelece uma linha de stop-loss. Quando o preço da ação cai 5% atrás de seu pico ou sobe 10%, ele vai parar de perder ou tirar lucro.
A estratégia em geral segue a ideia de negociação de tendência, gerando sinais de compra quando a tendência de alta dos preços das ações é confirmada. Ao mesmo tempo, um mecanismo de stop-loss é definido para controlar os riscos. Ao otimizar vários parâmetros detalhados, a estabilidade e lucratividade da estratégia podem ser melhoradas. No entanto, nenhuma estratégia pode evitar completamente os riscos do mercado, por isso os investidores precisam tratá-la com cautela.
/*backtest start: 2022-12-13 00:00:00 end: 2023-12-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Pure Mark Minervini 10%TP 5%CL", pyramiding = 0, commission_type=strategy.commission.percent, commission_value=0.08, overlay=true) ma50 = sma(close,50) ma150 = sma(close,150) ma200 = sma(close,200) ma200_22 = ma200[22] high_loopback = input(260, "High Lookback Length") low_loopback = input(260, "Low Lookback Length") highest_price = highest(high, high_loopback) lowest_price = lowest(low, low_loopback) above52lo = ((close/lowest_price)-1)*100 below52hi = (1-(close/highest_price))*100 ep = strategy.position_avg_price trigger = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 var label maLabel = na if (trigger) yLocation = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ? yloc.abovebar : yloc.belowbar // labelStyle = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ? // label.style_labeldown : // label.style_labelup buy = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 sell = close>ep*1.1 or close<ep*0.95 strategy.entry("TF", strategy.long, when = buy) strategy.close("TF", when = sell)