डायनामिक पैटर्न ट्रेंड रिवर्सल रणनीति कीमतों की भविष्यवाणी करने के लिए रैखिक प्रतिगमन और ट्रेडिंग संकेत उत्पन्न करने के लिए पैटर्न बनाने के लिए चलती औसत रेखाओं का उपयोग करती है। यह खरीद संकेत उत्पन्न करती है जब भविष्यवाणी की गई कीमत चलती औसत रेखा से ऊपर की ओर पार करती है और नीचे की ओर पार करते समय संकेत बेचती है, प्रवृत्ति उलट को कैप्चर करती है।
उपरोक्त संकेतों का कई पुष्टिकरणों के साथ संयोजन झूठे ब्रेकआउट से बचाता है और सटीकता में सुधार करता है।
डायनामिक पैटर्न ट्रेंड रिवर्स रणनीति ट्रेंड रिवर्स को पकड़ने के लिए रैखिक प्रतिगमन भविष्यवाणी और चलती औसत पैटर्न को एकीकृत करती है। एकल संकेतक रणनीतियों की तुलना में, इसमें अधिक विश्वसनीयता है। मापदंडों, पुष्टि और अन्य अनुकूलन पर आगे के सुधार से संकेत की गुणवत्ता और लाभप्रदता में सुधार हो सकता है।
/*backtest start: 2023-12-05 00:00:00 end: 2023-12-12 00:00:00 period: 1m basePeriod: 1m 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)