Strategi ini berdasarkan ciri statistik kemerosotan pasaran yang melampau. Dengan menganalisis pengeluaran secara statistik dan menggunakan penyimpangan standard untuk mengukur volatiliti pasaran yang melampau, ia memulakan kedudukan pembelian apabila penurunan pasaran melebihi julat normal. Idea terasnya adalah untuk menangkap peluang oversold yang disebabkan oleh panik pasaran, mengenal pasti peluang pelaburan melalui kaedah statistik matematik yang timbul daripada ketidakberdayaan pasaran.
Strategi ini menggunakan tetingkap masa bergulir untuk mengira penarikan harga maksimum dan ciri statistik mereka. Ia mula-mula mengira harga tertinggi dalam tempoh 50 tempoh yang lalu, kemudian mengira peratusan penarikan harga penutupan semasa berbanding dengan harga tertinggi. Ia kemudian mengira purata dan penyimpangan standard penarikan, menetapkan -1 penyimpangan standard sebagai ambang pencetus. Apabila penarikan pasaran melebihi purata dikurangkan beberapa kali ganda penyimpangan standard, yang menunjukkan keadaan oversold yang berpotensi, kedudukan panjang dimasukkan. Posisi ditutup secara automatik selepas 35 tempoh. Strategi ini juga merangka kurva penarikan dan satu, dua, dan tiga tahap penyimpangan standard untuk penilaian visual keadaan oversold pasaran.
Strategi ini menangkap peluang oversold pasaran melalui kaedah statistik, dengan asas teori yang kuat dan nilai praktikal. Logik strategi adalah mudah dan jelas dengan parameter yang boleh disesuaikan, sesuai sebagai strategi asas untuk pengembangan dan pengoptimuman. Kestabilan strategi dan keuntungan boleh ditingkatkan dengan menambah penunjuk teknikal dan langkah-langkah kawalan risiko. Dalam perdagangan langsung, tentukan parameter dengan teliti dengan mempertimbangkan keadaan pasaran dan ciri-ciri instrumen perdagangan, sambil mengekalkan kawalan risiko yang betul.
/*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")