
एक बहुआयामी रैखिक क्रॉसिंग रणनीति एक तकनीकी विश्लेषण रणनीति है जो स्टॉक की भविष्य की कीमतों की भविष्यवाणी करने के लिए एक रैखिक प्रतिगमन मॉडल पर आधारित है। रणनीति का मूल सिद्धांत यह है कि स्टॉक की कीमतों की चाल अक्सर एक निश्चित रैखिक प्रवृत्ति का पालन करती है। कीमतों की रैखिक प्रतिगमन की गणना करके, भविष्य की कीमतों की भविष्यवाणी की जा सकती है।
यह रणनीति पहले समय की अवधि में शेयर की कीमतों की एक रैखिक वापसी की गणना करती है। रैखिक वापसी न्यूनतम द्विगुणित का उपयोग करके एक सीधी रेखा को संरेखित करती है जो समय के साथ कीमतों में बदलाव की प्रवृत्ति का प्रतिनिधित्व करती है। रणनीति फिर एक चार्ट पर अनुमानित मूल्य रेखा और वर्तमान कीमतों को रेखांकित करती है।
इस नीति में दो संकेत दिए गए हैं:
जब एक अधिक संकेत होता है, तो रणनीति अधिक होती है; जब एक कम संकेत होता है, तो स्थिति कम होती है।
रणनीति के प्रमुख कदम इस प्रकार हैं:
मल्टी-फ्लोर लाइनर क्रॉसिंग रणनीतियों के निम्नलिखित फायदे हैंः
हालांकि बहु-स्थानिक रैखिक क्रॉसिंग रणनीतियों के कई फायदे हैं, लेकिन इसके कुछ जोखिम भी हैंः
मल्टीफोकस लाइनर क्रॉसिंग रणनीति मूल्य की रैखिक रिग्रेशन पर आधारित है, कीमतों और वर्तमान कीमतों की तुलना करके व्यापार संकेत उत्पन्न करती है। रणनीति तर्क सरल और स्पष्ट है, कीमतों की रैखिक प्रवृत्ति को पकड़ सकता है, सभी प्रकार के मामलों के लिए उपयुक्त है। साथ ही, रणनीति को लागू करना और अनुकूलित करना आसान है, पैरामीटर को लचीले ढंग से समायोजित किया जा सकता है, अन्य संकेतकों के साथ संयोजन किया जा सकता है, जोखिम नियंत्रण मॉड्यूल आदि को शामिल किया जा सकता है, रणनीति के प्रदर्शन को लगातार बढ़ाया जा सकता है। लेकिन रणनीति में प्रवृत्ति की पहचान की त्रुटि, पैरामीटर की गलत सेटिंग, ऐतिहासिक डेटा के जोखिम का अनुकरण, आदि हैं, वास्तविक उपयोग में सावधानी बरतने की आवश्यकता है। कुल मिलाकर, मल्टीफोकस लाइनर क्रॉसिंग रणनीति एक सरल और प्रभावी मात्रात्मक व्यापार रणनीति है, जो आगे की खोज और अनुकूलन के लायक है।
/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)
//Linear Regression
vol = volume
// Function to calculate linear regression
linregs(y, x, len) =>
ybar = math.sum(y, len)/len
xbar = math.sum(x, len)/len
b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
a = ybar - b*xbar
[a, b]
// Historical stock price data
price = close
// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)
// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation
out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)
// Predicted stock price based on volume
predicted_price = a + b*vol
// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close
//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)
//BUY Signal
longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen)) and (signalLine < macdLine)
if macdlong and macdrise
longCondition := true
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100
//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
shortCondition := true
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)