
गतिशील ग्रिड ट्रेडिंग रणनीति गतिशील रूप से ग्रिड ट्रेडिंग क्षेत्र सेट करने के लिए चलती औसत और उसके ऊपर और नीचे की रेखाओं की गणना करके। जब कीमत ग्रिड के दायरे को तोड़ती है, तो एक निश्चित अंतराल पर सेट की गई ग्रिड लाइन के अनुसार ट्रेडिंग सिग्नल भेजती है, जिससे लाभ होता है।
यह रणनीति पहले परिभाषित अवधि n के लिए एक चलती औसत की गणना करती है, और चलती औसत को चलती औसत के रूप में ट्रैक करती है।(1 + इनपुट पैरामीटर std), निचला ट्रैक एक चलती औसत है(1 - इनपुट पैरामीटर std) इस प्रकार एक गतिशील रूप से समायोजित लेनदेन क्षेत्र बैंड बनाया जा सकता है।
फिर, हम एक ग्रिड लाइन को परिभाषित करते हैं, जो कि m बार की दूरी पर है। जब कीमत बढ़ जाती है, तो एक ग्रिड लाइन को तोड़ने के लिए एक ग्रिड लाइन पर एक मल्टी सिग्नल होता है। जब कीमत गिरती है, तो एक ग्रिड लाइन को तोड़ने के लिए एक ग्रिड लाइन पर एक फ्लैट सिग्नल होता है। इस रिवर्स ऑपरेशन के माध्यम से, जब कीमत में उतार-चढ़ाव होता है, तो एक लाभ होता है।
विशेष रूप से, हम प्रत्येक ग्रिड लाइन के लेन-देन की स्थिति को रिकॉर्ड करने के लिए एक बूल-प्रकार के सरणी order_array का उपयोग करते हैं। जब किसी ग्रिड लाइन को ट्रिगर किया जाता है, तो ऑर्डर_array में संबंधित राज्य को सही के रूप में सेट करें, यह दर्शाता है कि ग्रिड लाइन में एक स्थिति है। जब कीमत गिरती है, तो ग्रिड लाइन को तोड़ने के लिए, ऑर्डर_array में संबंधित शीर्ष ग्रिड लाइन की स्थिति को गलत के रूप में सेट करें, एक ब्रीच सिग्नल जारी करें।
इस रणनीति के कुछ फायदे हैं:
गतिशील रूप से समायोजित ट्रेडिंग बैंड का निर्माण करने के लिए चलती औसत का उपयोग करें, जो बाजार की अस्थिरता के आधार पर बैंड की सीमा को समायोजित कर सकता है, जिससे रणनीति को बाजार के अनुकूल बनाया जा सके।
ग्रिड डिजाइन स्वचालित रूप से स्टॉप लॉस को रोकता है, जिससे चरम स्थितियों के कारण होने वाले नुकसान को रोका जा सकता है।
ग्रिड की संख्या और धन आवंटन का उपयोग समान अंतराल और समान आवंटन के साथ किया जाता है, जो एकल स्थिति के आकार को नियंत्रित करने और एकल स्थिति के जोखिम को कम करने के लिए बहुत अच्छा है।
अधिक शांतिपूर्ण स्थिति के संकेतों को उचित रूप से सेट करें, ताकि आप तेजी से व्यापार कर सकें, और समय पर स्टॉप और स्टॉप लॉस कर सकें।
इस रणनीति के कुछ जोखिम भी हैं:
जब बाजार में लंबे समय तक कमजोरी होती है और ग्रिड लाइन को तोड़ने में असमर्थ होता है, तो रणनीति निर्विवाद रूप से अस्थिर ट्रेडिंग में फंस जाती है, और अधिक स्थान परिवर्तन से खाते में धन की हानि हो सकती है।
चयनित पैरामीटर std और ग्रिड की संख्या पूरी तरह से उचित नहीं हो सकती है, विभिन्न व्यापार किस्मों के विश्लेषण के आधार पर निर्धारित करने की आवश्यकता है। यदि पैरामीटर गलत तरीके से सेट किया जाता है, तो व्यापार क्षेत्र और ग्रिड बहुत बड़े या बहुत छोटे हो जाएंगे, जो रणनीति के प्रभाव को प्रभावित करेंगे।
रणनीति ने कुछ चरम स्थितियों को ध्यान में नहीं रखा है, जैसे कि कीमतों में उछाल, शॉर्ट-लाइन विस्फोटक वृद्धि या गिरावट। इन स्थितियों के कारण रणनीति कई ग्रिडों को तोड़ सकती है, जिससे जोखिम नियंत्रण से परे नुकसान हो सकता है।
इस रणनीति को निम्नलिखित पहलुओं से भी अनुकूलित किया जा सकता हैः
मशीन सीखने के एल्गोरिदम को पेश किया जा सकता है, ट्रेडिंग ब्लॉक को अधिक बुद्धिमान और गतिशील बनाने के लिए मॉडल को चलती औसत के उतार-चढ़ाव की भविष्यवाणी करने के लिए प्रशिक्षित किया जा सकता है।
विभिन्न ट्रेडिंग मापदंडों की विशेषताओं के आधार पर, ग्रिड की संख्या, पूंजी आवंटन अनुपात, स्थिति आकार आदि जैसे मापदंडों का अनुकूलन करने के लिए, अनुकूलन मापदंडों का उपयोग करें।
एक शर्त पत्र सेट किया जा सकता है, एक निश्चित दूरी पर ग्रिड लाइन पर एक अतिरिक्त स्टॉप लॉस पत्र सेट किया जा सकता है, जो चरम स्थितियों में नुकसान को नियंत्रित करने के लिए पूर्व-स्टॉप लॉस की भूमिका निभा सकता है।
चरम स्थितियों के लिए असामान्य प्रसंस्करण तंत्र को डिजाइन करना, जैसे कि पहली बार खोलने की स्थिति को बढ़ाना, मध्यवर्ती ग्रिड को सीधे रोकना, आदि, जो कीमतों की छलांग जैसी असामान्य स्थितियों का सामना कर सकते हैं।
गतिशील ग्रिड ट्रेडिंग रणनीति का समग्र डिजाइन तर्कसंगत है, यह उन ट्रेडिंग किस्मों के लिए उपयुक्त है, जिनमें कीमतों में अधिक बार उतार-चढ़ाव होता है। लेकिन इस रणनीति में कुछ बाजार जोखिम भी हैं, जो रणनीति को अधिक स्थिर बनाने के लिए पैरामीटर और असामान्यताओं के अनुकूलन की आवश्यकता है।
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Grid Trading Strategy', overlay=true)
// Input
ma_length = input.int(300, 'Moving Average Length',group = 'Moving Average Conditions', step = 10)
std = input.float(0.03, title='Upper and Lower Grid Deviation', group='Grid Conditions', step = 0.01)
grid = input.int(15, maxval=15, title='Grid Line Quantity', group='Grid Conditions')
// Moving Average
ma = ta.sma(close, ma_length)
upper_bound = ma * (1 + std)
lower_bound = ma * (1 - std)
grid_width = (upper_bound - lower_bound) / (grid - 1)
grid_array = array.new_float(0)
for i = 0 to grid - 1 by 1
array.push(grid_array, lower_bound + grid_width * i)
var order_array = array.new_bool(grid, false)
strategy.initial_capital = 10000
// Entry Conditions
for i = 0 to grid - 1 by 1
if close < array.get(grid_array, i) and not array.get(order_array, i)
buy_id = i
array.set(order_array, buy_id, true)
strategy.entry(id=str.tostring(buy_id), direction=strategy.long, comment='#Long ' + str.tostring(buy_id))
if close > array.get(grid_array, i) and i!=0
if array.get(order_array, i-1)
sell_id = i - 1
array.set(order_array, sell_id, false)
strategy.close(id=str.tostring(sell_id), comment='#Close ' + str.tostring(sell_id))
plot(grid > 0 ? array.get(grid_array,0) : na, color = color.yellow, transp = 10)
plot(grid > 1 ? array.get(grid_array,1) : na, color = color.yellow, transp = 10)
plot(grid > 2 ? array.get(grid_array,2) : na, color = color.yellow, transp = 10)
plot(grid > 3 ? array.get(grid_array,3) : na, color = color.yellow, transp = 10)
plot(grid > 4 ? array.get(grid_array,4) : na, color = color.yellow, transp = 10)
plot(grid > 5 ? array.get(grid_array,5) : na, color = color.yellow, transp = 10)
plot(grid > 6 ? array.get(grid_array,6) : na, color = color.yellow, transp = 10)
plot(grid > 7 ? array.get(grid_array,7) : na, color = color.yellow, transp = 10)
plot(grid > 8 ? array.get(grid_array,8) : na, color = color.yellow, transp = 10)
plot(grid > 9 ? array.get(grid_array,9) : na, color = color.yellow, transp = 10)
plot(grid > 10 ? array.get(grid_array,10) : na, color = color.yellow, transp = 10)
plot(grid > 11 ? array.get(grid_array,11) : na, color = color.yellow, transp = 10)
plot(grid > 12 ? array.get(grid_array,12) : na, color = color.yellow, transp = 10)
plot(grid > 13 ? array.get(grid_array,13) : na, color = color.yellow, transp = 10)
plot(grid > 14 ? array.get(grid_array,14) : na, color = color.yellow, transp = 10)