Chiến lược này sử dụng mẫu lựa chọn cổ phiếu của Mark Minervini và các chỉ số trung bình động để xác định xu hướng giá cho việc tự động vào và dừng lỗ. Nó chủ yếu đánh giá xem giá cổ phiếu có đang trong xu hướng tăng hay không và liệu chúng đã vượt qua các đường trung bình động chính để tạo ra tín hiệu mua hay không. Đồng thời, chiến lược đặt ra một đường dừng lỗ để chủ động dừng lỗ khi giá giảm trở lại.
Chiến lược chủ yếu đánh giá các điều kiện sau và tạo ra tín hiệu mua khi chúng được đáp ứng cùng một lúc:
Khi các điều kiện trên được đáp ứng, chiến lược đánh giá rằng giá cổ phiếu đang có xu hướng tăng và tạo ra tín hiệu mua.
Ngoài ra, chiến lược cũng đặt ra một đường dừng lỗ. Khi giá cổ phiếu giảm 5% từ đỉnh của nó hoặc tăng 10%, nó sẽ dừng lỗ hoặc kiếm lợi nhuận.
Chiến lược nói chung theo ý tưởng giao dịch xu hướng, tạo ra tín hiệu mua khi xu hướng tăng của giá cổ phiếu được xác nhận. Đồng thời, một cơ chế dừng lỗ được thiết lập để kiểm soát rủi ro. Bằng cách tối ưu hóa các tham số chi tiết khác nhau, sự ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa. Tuy nhiên, không có chiến lược nào có thể tránh hoàn toàn rủi ro thị trường, vì vậy các nhà đầu tư cần phải xử lý nó một cách thận trọng.
/*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)