
इस रणनीति के आधार पर चलती औसत और लेन-देन की मात्रा के तकनीकी संकेतकों, एक लंबी लाइन का पीछा करने के लिए गिरावट को रोकने के लिए एक मात्रात्मक रणनीति डिजाइन. जब शेयर की कीमत 20 दिन लाइन पर खड़ा है, और उस दिन की खरीद की मात्रा से अधिक है और पिछले n दिनों की औसत लेनदेन की मात्रा से अधिक है, बाजार में एक बहुमुखी स्थिति में है, यह खरीदने के लिए माना जाता है; जब शेयर की कीमत पटरी से उतर गया है, और उस दिन की बिक्री की मात्रा से अधिक है और पिछले n दिनों की औसत लेनदेन की मात्रा से अधिक है, तो बाजार को खाली सिर में माना जाता है, इसे बेचने के लिए।
यह रणनीति मुख्य रूप से दो मापदंडों पर आधारित हैः
द्वि-समान रेखाः 20 वीं और 60 वीं रेखा की गणना करें, जब 20 वीं लाइन 60 वीं लाइन को पार करती है, तो बाजार को bullish माना जाता है; जब 20 वीं लाइन 60 वीं लाइन को पार करती है, तो बाजार को bearish माना जाता है।
लेन-देन की मात्राः हर दिन लेन-देन की खरीद और बिक्री की मात्रा की गणना करें, यदि खरीद की मात्रा बिक्री की मात्रा से अधिक है और पिछले n दिनों की औसत लेनदेन की मात्रा से अधिक है, तो इसे बहु-दिशा के रूप में माना जाता है; यदि बिक्री की मात्रा खरीद की मात्रा से अधिक है और पिछले n दिनों की औसत लेनदेन की मात्रा से अधिक है, तो इसे खाली सिर के रूप में माना जाता है।
व्यापार की रणनीति और तर्क इस प्रकार है:
मल्टी हेड एंट्रीः जब समापन मूल्य 20 वें दिन की रेखा पर खड़ा होता है और उस दिन की खरीद की मात्रा बिक्री की मात्रा और पिछले n दिनों की औसत लेनदेन की मात्रा से अधिक होती है, तो बाजार को अधिक स्थिति में माना जाता है। बुरीन बैंड को उतार-चढ़ाव के आधार पर गणना की जाती है। यदि समापन मूल्य बुरीन बैंड के मध्य और निचले रेल के बीच स्थित है, तो प्रवेश अधिक है।
खाली सिर प्रवेश: जब समापन मूल्य नीचे की ओर गिर जाता है, और उस दिन की बिक्री की मात्रा खरीदारी की मात्रा और पिछले n दिनों की औसत लेनदेन की मात्रा से अधिक होती है, तो बाजार को बियर की स्थिति में माना जाता है, बुरिन बैंड की गणना अस्थिरता के आधार पर की जाती है, और यदि समापन मूल्य बुरिन बैंड से नीचे की ओर है, तो प्रवेश शून्य है।
स्टॉप और लॉस रोकेंः उचित स्टॉप और लॉस सेट करें, लाभ को स्थिर करें या नुकसान को कम करें। जैसे कि स्टॉप जब स्टॉक की कीमत प्रवेश मूल्य से 5% अधिक हो जाती है; जब नुकसान 10% तक पहुंच जाता है; या जब स्टॉक की कीमत हाल ही में एक नई ऊंचाई से कुछ हद तक वापस आ जाती है।
इस रणनीति के निम्नलिखित फायदे हैं:
द्विआधारी औसत रेखा और लेन-देन की मात्रा के संकेतकों के संयोजन से एकल तकनीकी सूचक के निर्णय के अंधेरे क्षेत्र से बचा जाता है।
विभिन्न मापदंडों का उपयोग करके ब्रिन बैंड विशिष्ट लेनदेन की कीमतों को निर्धारित करता है, जिससे प्रवेश अधिक सटीक हो जाता है।
स्टॉप-स्टॉप-लॉस रणनीतियाँ तर्कसंगत हैं, जो लाभ को लॉक करने और जोखिम को नियंत्रित करने में मदद करती हैं।
अच्छी प्रतिक्रिया, स्थिर आय, और वास्तविक मात्रा में व्यापार के लिए उपयुक्त।
इस रणनीति के कुछ जोखिम भी हैं:
द्वि-समान-रेखा रणनीतियाँ त्रुटि संकेतों के लिए अतिसंवेदनशील होती हैं, जिन्हें संयोजन के लिए फ़िल्टरिंग की आवश्यकता होती है।
ब्रिन बैंड पैरामीटर को गलत तरीके से सेट करने से प्रवेश बहुत बार या दुर्लभ हो सकता है।
फिक्स्ड स्टॉपलॉस स्टॉपलॉस को गलत तरीके से सेट किया गया है, जो रणनीति को प्रभावित कर सकता है।
इस प्रकार, यदि कोई भी डेटाबेस में त्रुटि हो जाती है, तो डेटाबेस में त्रुटि की संभावना होती है।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
इष्टतम इक्विवल सिस्टम पैरामीटर को अनुकूलित करें और इष्टतम इक्विवल संयोजन खोजें
ब्रिन बैंड पैरामीटर को अनुकूलित किया गया है ताकि प्रवेश अधिक सटीक हो सके।
गतिशील रूप से स्टॉप-स्टॉप-लॉस को समायोजित करें और बाजार की स्थिति के अनुसार उचित लाभ-हानि अनुपात सेट करें।
अन्य तकनीकी मापदंडों जैसे कि MACD, KD आदि को जोड़ने से रणनीति की सटीकता में सुधार होता है।
मशीन सीखने के तरीकों का उपयोग करके स्वचालित रूप से बेहतर मापदंडों का पता लगाने के लिए, रणनीति को अधिक लचीला बनाने के लिए।
इस रणनीति के लिए कुल मिलाकर एक बहुत ही व्यावहारिक मात्रात्मक व्यापार रणनीति है, अच्छी तरह से प्रदर्शन किया है, आसानी से लागू करने के लिए कहा जा सकता है, जोखिम नियंत्रित है, एक स्थिर रणनीति है जो वास्तविक स्टॉक के लिए उपयुक्त है, यह सीखने के लायक है। बेशक, रणनीति अनुकूलन के लिए जगह अभी भी बहुत बड़ी है, और उम्मीद है कि अधिक मात्रात्मक व्यापार विशेषज्ञों को सुधारने के लिए।
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 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/
// © KAIST291
//@version=4
strategy("prototype",initial_capital=0.01,commission_type=strategy.commission.percent,commission_value=0.1, format=format.volume, precision=0,overlay=true)
// SETTING //
length1=input(1)
length3=input(3)
length7=input(7)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=(close>Supper and BV>SV and BV>Davgvol)
bull2=(close>ma20 and BV>SV and BV>Davgvol)
bux =(close<Supper and close>Slower and volume<Wavgvol)
bear=(close<Slower and close<lower and SV>BV and SV>Wavgvol)
hi=highest(exit,10)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>ma3 and ma20>ma60 and rsi<70)
strategy.entry("Long",strategy.long,0.1)
if (strategy.position_avg_price*1.05<close)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.999<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.997<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.995<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
strategy.close("Long",0.1)
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////