
Strategi ini berdagang berdasarkan ciri-ciri statistik semasa penurunan pasaran yang melampau. Dengan menggunakan analisis statistik untuk penarikan balik, mengukur tahap ekstrem turun naik pasaran dengan menggunakan standard deviation, dan membeli apabila pasaran turun di luar julat biasa. Gagasan utama strategi ini adalah untuk menangkap peluang untuk turun lebih tinggi yang disebabkan oleh perasaan panik pasaran, dan menggunakan kaedah statistik matematik untuk mengenal pasti peluang pelaburan yang disebabkan oleh tingkah laku tidak rasional di pasaran.
Strategi ini menggunakan ciri statistik untuk mengira pulangan maksimum dan pulangan harga dalam jendela masa bergulir. Pertama, harga tertinggi dalam 50 kitaran terakhir dikira, kemudian peratusan pulangan berbanding harga tertinggi penutupan semasa dikira. Kemudian, nilai rata-rata dan standard deviasi pulangan dikira, dan set - 1 kali standard deviasi sebagai had trigger. Apabila pulangan pasaran melebihi nilai rata-rata tolak kali ganda standard deviasi ditetapkan, ia menunjukkan bahawa pasaran mungkin mengalami penurunan yang melampau.
Strategi ini menggunakan kaedah statistik untuk menangkap peluang melepasi pasaran, mempunyai asas teori yang baik dan nilai praktikal. Logik strategi mudah dan jelas, parameter yang boleh disesuaikan, sesuai untuk memperluas dan mengoptimumkan strategi asas. Dengan menambah petunjuk teknikal dan langkah-langkah kawalan risiko lain, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi. Dalam perdagangan langsung, disarankan untuk menggabungkan ciri-ciri persekitaran pasaran dan jenis perdagangan, menetapkan parameter dengan berhati-hati, dan melakukan kawalan risiko yang baik.
/*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")