
रणनीति एक प्रवृत्ति ट्रैकिंग ट्रेडिंग प्रणाली है जिसमें गौस्का भारित चलती औसत चैनल और यादृच्छिक अपेक्षाकृत मजबूत सूचकांक (स्टोकेस्टिक आरएसआई) शामिल हैं। रणनीति गौस्का भारित विधि के माध्यम से मूल्य चैनल का निर्माण करती है, और प्रवेश और निकास के समय को निर्धारित करने के लिए यादृच्छिक आरएसआई संकेतक के क्रॉस सिग्नल के साथ मिलकर प्रवृत्ति की पकड़ और गतिशीलता की पुष्टि करती है। रणनीति में एक अच्छा गणितीय आधार है जो प्रभावी रूप से बाजार के शोर को फ़िल्टर करने और प्रमुख रुझानों को पकड़ने में सक्षम है।
इस रणनीति के मूल में दो मुख्य भाग होते हैंः
गॉस चैनल प्रणालीः गॉस भारित चलती औसत (GWMA) और गॉस भारित मानक अंतर (GWSD) का उपयोग करके मूल्य चैनल का निर्माण करना। GWMA हाल के डेटा को अधिक वजन देता है, जिससे मूल्य परिवर्तनों के लिए एक समान प्रतिक्रिया अधिक संवेदनशील हो जाती है। चैनल के उतार-चढ़ाव को GWSD के गुणन गुणांक द्वारा निर्धारित किया जाता है।
यादृच्छिक आरएसआई प्रणालीः पारंपरिक आरएसआई संकेतक को यादृच्छिक रूप से संसाधित किया जाता है, के और डी मानों की गणना की जाती है। इस तरह की प्रक्रिया से ओवरबॉट और ओवरबॉट क्षेत्रों की बेहतर पहचान की जा सकती है, और अधिक सटीक गति संकेत प्रदान किए जाते हैं।
ट्रेडिंग सिग्नल का निर्माण निम्नलिखित शर्तों पर आधारित होता हैः
इस रणनीति में गॉस चैनल और यादृच्छिक आरएसआई संकेतक के संयोजन के माध्यम से एक ठोस गणितीय आधार के साथ एक प्रवृत्ति ट्रैकिंग प्रणाली का निर्माण किया गया है। रणनीति स्पष्ट रूप से ट्रेंडिंग बाजारों में उत्कृष्ट प्रदर्शन करती है, लेकिन पैरामीटर अनुकूलन और बाजार की स्थिति के लिए अनुकूलता पर ध्यान देने की आवश्यकता है। अनुशंसित अनुकूलन उपायों को लागू करके रणनीति की स्थिरता और लाभप्रदता को और बढ़ाया जा सकता है।
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Gaussian Channel + Stoch RSI Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1)
// User Inputs
length = input.int(20, "Gaussian Length", minval=5)
multiplier = input.float(2.0, "Channel Multiplier", step=0.1)
rsiLength = input.int(14, "RSI Length", minval=1)
stochLength= input.int(14, "Stoch RSI Length", minval=1)
kLength = input.int(3, "Stoch K Smoothing", minval=1)
dLength = input.int(3, "Stoch D Smoothing", minval=1)
// Gaussian Weighted Moving Average Function
f_gaussian(source, length) =>
half = (length - 1) / 2.0
sum = 0.0
norm = 0.0
// Gaussian standard deviation chosen as length/6 for a smooth curve
denom = (length / 6.0) * (length / 6.0)
for i = 0 to length - 1
x = i - half
w = math.exp(-(x * x) / (2 * denom))
sum += source[i] * w
norm += w
sum / norm
// Gaussian Weighted Standard Deviation Function
f_gaussian_std(source, length) =>
half = (length - 1) / 2.0
gavg = f_gaussian(source, length)
sum = 0.0
norm = 0.0
denom = (length / 6.0) * (length / 6.0)
for i = 0 to length - 1
x = i - half
w = math.exp(-(x * x)/(2*denom))
diff = source[i] - gavg
sum += diff * diff * w
norm += w
math.sqrt(sum/norm)
// Compute Gaussian Channel
gaussMid = f_gaussian(close, length)
gaussStd = f_gaussian_std(close, length)
gaussUpper = gaussMid + gaussStd * multiplier
gaussLower = gaussMid - gaussStd * multiplier
// Stochastic RSI Calculation
rsi = ta.rsi(close, rsiLength)
rsiLowest = ta.lowest(rsi, stochLength)
rsiHighest = ta.highest(rsi, stochLength)
stoch = 100 * (rsi - rsiLowest) / math.max(rsiHighest - rsiLowest, 1e-10)
k = ta.sma(stoch, kLength)
d = ta.sma(k, dLength)
// Conditions
// Long entry: Price closes above upper Gaussian line AND Stoch RSI K > D (stochastic is "up")
longCondition = close > gaussUpper and k > d
// Exit condition: Price closes below upper Gaussian line
exitCondition = close < gaussUpper
// Only trade in the specified date range
inDateRange = time >= timestamp("2018-01-01T00:00:00") and time < timestamp("2069-01-01T00:00:00")
// Submit Orders
if inDateRange
if longCondition and strategy.position_size <= 0
strategy.entry("Long", strategy.long)
if exitCondition and strategy.position_size > 0
strategy.close("Long")
// Plot Gaussian Channel
plot(gaussMid, "Gaussian Mid", color=color.new(color.yellow, 0))
plot(gaussUpper, "Gaussian Upper", color=color.new(color.green, 0))
plot(gaussLower, "Gaussian Lower", color=color.new(color.red, 0))