Chiến lược này dựa trên các đặc điểm thống kê của suy thoái thị trường cực đoan. Bằng cách phân tích thu hồi thống kê và sử dụng độ lệch chuẩn để đo độ biến động thị trường cực đoan, nó bắt đầu các vị trí mua khi sự sụt giảm thị trường vượt quá phạm vi bình thường. Ý tưởng cốt lõi là nắm bắt các cơ hội bán quá mức do hoảng loạn thị trường gây ra, xác định các cơ hội đầu tư thông qua các phương pháp thống kê toán học phát sinh từ sự không hợp lý của thị trường.
Chiến lược này sử dụng một cửa sổ thời gian lăn để tính toán mức giảm giá tối đa và các đặc điểm thống kê của chúng. Đầu tiên nó tính toán giá cao nhất trong 50 giai đoạn qua, sau đó tính tỷ lệ phần trăm giảm giá của giá đóng hiện tại so với giá cao nhất. Sau đó nó tính toán mức giảm trung bình và độ lệch chuẩn của mức giảm, đặt -1 độ lệch chuẩn làm ngưỡng kích hoạt. Khi mức giảm thị trường vượt quá mức trung bình trừ một số lần số độ lệch chuẩn, cho thấy các điều kiện bán quá mức tiềm năng, một vị trí dài được nhập. Các vị trí được tự động đóng sau 35 giai đoạn. Chiến lược cũng vẽ đường cong giảm và một, hai và ba mức lệch chuẩn để đánh giá trực quan các điều kiện bán quá mức thị trường.
Chiến lược này nắm bắt các cơ hội bán quá mức thị trường thông qua các phương pháp thống kê, với nền tảng lý thuyết vững chắc và giá trị thực tế. Logic chiến lược đơn giản và rõ ràng với các thông số có thể điều chỉnh, phù hợp như một chiến lược cơ bản để mở rộng và tối ưu hóa. Sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm bằng cách thêm các chỉ số kỹ thuật và các biện pháp kiểm soát rủi ro. Trong giao dịch trực tiếp, hãy cẩn thận thiết lập các thông số xem xét điều kiện thị trường và đặc điểm của công cụ giao dịch, trong khi duy trì kiểm soát rủi ro thích hợp.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy When There's Blood in the Streets Strategy", overlay=false, shorttitle="BloodInTheStreets") //This strategy identifies opportunities to buy during extreme market drawdowns based on standard deviation thresholds. //It calculates the maximum drawdown over a user-defined lookback period, identifies extreme deviations from the mean, //and triggers long entries when specific conditions are met. The position is exited after a defined number of bars. // User Inputs lookbackPeriod = input.int(50, title="Lookback Period", minval=1, tooltip="Period to calculate the highest high for drawdown") stdDevLength = input.int(50, title="Standard Deviation Length", minval=1, tooltip="Length of the period to calculate standard deviation") stdDevThreshold = input.float(-1.0, title="Standard Deviation Threshold", tooltip="Trigger level for long entry based on deviations") exitBars = input.int(35, title="Exit After (Bars)", minval=1, tooltip="Number of bars after which to exit the trade") // Drawdown Calculation peakHigh = ta.highest(high, lookbackPeriod) drawdown = ((close - peakHigh) / peakHigh) * 100 // Standard Deviation Calculation drawdownStdDev = ta.stdev(drawdown, stdDevLength) meanDrawdown = ta.sma(drawdown, stdDevLength) // Define Standard Deviation Levels stdDev1 = meanDrawdown - drawdownStdDev stdDev2 = meanDrawdown - 2 * drawdownStdDev stdDev3 = meanDrawdown - 3 * drawdownStdDev // Plot Drawdown and Levels plot(drawdown, color=color.red, linewidth=2, title="Drawdown (%)") plot(meanDrawdown, color=color.blue, linewidth=2, title="Mean Drawdown") plot(stdDev1, color=color.green, linewidth=1, title="1st Std Dev") plot(stdDev2, color=color.orange, linewidth=1, title="2nd Std Dev") plot(stdDev3, color=color.purple, linewidth=1, title="3rd Std Dev") // Entry Condition var float entryBar = na goLong = drawdown <= meanDrawdown + stdDevThreshold * drawdownStdDev if (goLong and strategy.position_size == 0) strategy.entry("Long", strategy.long) entryBar := bar_index // Exit Condition if (strategy.position_size > 0 and not na(entryBar) and bar_index - entryBar >= exitBars) strategy.close("Long")