
La estrategia se basa en el modelo de selección de acciones de Mark Mneveny, combinado con un indicador de promedio móvil para determinar la tendencia del precio de las acciones, para realizar compras y paradas automáticas. La estrategia determina principalmente si las acciones están en una tendencia alcista y si se rompe el promedio móvil clave, lo que genera una señal de compra.
La estrategia se basa principalmente en las siguientes condiciones, que generan una señal de compra cuando se cumplen simultáneamente:
Cuando se cumplen las condiciones anteriores, la estrategia determina que el precio de las acciones está en la fase ascendente y genera una señal de compra.
Además, la estrategia establece al mismo tiempo una línea de stop loss, que se realiza cuando el precio de las acciones retrocede un 5% o sube un 10% desde el punto más alto.
La estrategia en su conjunto sigue la lógica del comercio de tendencias, generando una señal de compra en el supuesto de que se confirme una tendencia al alza en el precio de las acciones. Al mismo tiempo, se establece un mecanismo de control de pérdidas. Al optimizar los parámetros detallados, se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia.
/*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)