गतिशील ग्रिड ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-12-01 14:41:57
टैगः

img

अवलोकन

गतिशील ग्रिड ट्रेडिंग रणनीति ग्रिड ट्रेडिंग रेंज को गतिशील रूप से सेट करने के लिए चलती औसत रेखा और इसके ऊपरी और निचले ट्रैक की गणना करती है। जब कीमत ग्रिड रेंज के माध्यम से टूटती है, तो लाभप्रदता प्राप्त करने के लिए ग्रिड लाइनों द्वारा निर्धारित निश्चित अंतराल पर ट्रेडिंग सिग्नल जारी किए जाते हैं।

रणनीतिक सिद्धांत

रणनीति पहले परिभाषित अवधि n की चलती औसत रेखा और चलती औसत रेखा के ऊपरी और निचले ट्रैक की गणना करती है। ऊपरी ट्रैक चलती औसत रेखा * (1 + इनपुट पैरामीटर std) है, और निचला ट्रैक चलती औसत रेखा * (1 - इनपुट पैरामीटर std) है। यह एक गतिशील रूप से समायोजित ट्रेडिंग रेंज क्षेत्र का निर्माण करता है।

फिर सीमा क्षेत्र के भीतर, हम m समान रूप से दूरी वाली ग्रिड लाइनों को परिभाषित करते हैं। जब कीमतें बढ़ती हैं और ग्रिड लाइन को तोड़ती हैं, तो उस ग्रिड लाइन पर एक लंबा संकेत जारी किया जाता है; जब कीमतें गिरती हैं और ग्रिड लाइन को तोड़ती हैं, तो उस ग्रिड लाइन के अनुरूप पिछली ग्रिड लाइन पर एक समापन संकेत जारी किया जाता है। इस उलट ऑपरेशन के माध्यम से, जब कीमतें उतार-चढ़ाव करती हैं तो लाभ कमाया जा सकता है।

विशेष रूप से, हम प्रत्येक ग्रिड लाइन की ट्रेडिंग स्थिति को रिकॉर्ड करने के लिए एक bool सरणी order_array का उपयोग करते हैं। जब एक ग्रिड लाइन एक लंबी स्थिति को ट्रिगर करती है, तो order_array में संबंधित स्थिति सही पर सेट होती है, यह दर्शाता है कि ग्रिड लाइन में पहले से ही एक स्थिति है। जब कीमतें गिरती हैं और ग्रिड लाइन को तोड़ती हैं, तो order_array में पिछली ग्रिड लाइन की स्थिति गलत पर सेट होती है और एक समापन संकेत जारी किया जाता है।

लाभ विश्लेषण

इस रणनीति के निम्नलिखित फायदे हैंः

  1. गतिशील रूप से समायोजित ट्रेडिंग रेंज बनाने के लिए चलती औसत का उपयोग करने से रणनीति को बाजार के अनुकूल बनाने के लिए बाजार की अस्थिरता के आधार पर रेंज को समायोजित किया जा सकता है।

  2. ग्रिड डिजाइन अत्यधिक बाजार स्थितियों के कारण होने वाले नुकसान को बढ़ाने से रोकने के लिए स्वचालित रूप से लाभ और स्टॉप लॉस ले सकता है।

  3. ग्रिड मात्रा और पूंजी आवंटन में समान अंतर और समान आवंटन होता है, जिससे एकल पदों के आकार को नियंत्रित किया जा सकता है और एकल पदों के जोखिम को कम किया जा सकता है।

  4. लंबी और बंद सिग्नल सेटिंग्स प्रवृत्ति के साथ व्यापार करने के लिए उचित हैं, और समय पर लाभ और स्टॉप लॉस लेते हैं।

जोखिम विश्लेषण

इस रणनीति में कुछ जोखिम भी हैं:

  1. जब बाजार दीर्घकालिक रूप से कमजोर होता है और ग्रिड लाइनों को पार करने में विफल रहता है, तो रणनीति बेतरतीब अस्थिर व्यापार में गिर जाएगी, और लंबी और छोटी वैकल्पिक रूप से खाते में पूंजी क्षरण का कारण बन सकती है।

  2. चयनित मापदंडों std और ग्रिड की संख्या पूरी तरह से उचित नहीं हो सकती है, और विभिन्न व्यापारिक किस्मों के विश्लेषण के अनुसार निर्धारित करने की आवश्यकता है। यदि मापदंडों को अनुचित रूप से सेट किया जाता है, तो इससे अत्यधिक बड़े या छोटे व्यापारिक क्षेत्र और ग्रिड होंगे, जो रणनीति की प्रभावशीलता को प्रभावित करेंगे।

  3. रणनीति में कुछ चरम बाजार स्थितियों जैसे कि मूल्य अंतर, अल्पकालिक विस्फोटक वृद्धि या गिरावट आदि को ध्यान में नहीं रखा गया है। इन परिस्थितियों के कारण रणनीति कई ग्रिडों को तोड़ सकती है, जिसके परिणामस्वरूप जोखिम नियंत्रण से परे नुकसान हो सकता है।

अनुकूलन दिशाएँ

इस रणनीति को निम्नलिखित पहलुओं में भी अनुकूलित किया जा सकता हैः

  1. चलती औसत के ऊपरी और निचले ट्रैक की भविष्यवाणी करने के लिए मॉडल को प्रशिक्षित करने के लिए मशीन लर्निंग एल्गोरिदम पेश किए जा सकते हैं, जिससे ट्रेडिंग जोन अधिक बुद्धिमान और गतिशील हो जाते हैं।

  2. ग्रिड की संख्या, पूंजी आवंटन अनुपात, स्थिति का आकार आदि जैसे मापदंडों को अनुकूलन मापदंडों का उपयोग करके विभिन्न व्यापारिक लक्ष्यों की विशेषताओं के अनुसार अनुकूलित किया जा सकता है।

  3. सशर्त आदेशों को ग्रिड लाइनों से एक निश्चित दूरी पर पूर्व में स्टॉप-लॉस ऑर्डर सेट करने के लिए सेट किया जा सकता है ताकि चरम बाजार स्थितियों में पूर्व स्टॉप-लॉस और नियंत्रण नुकसान की भूमिका निभाई जा सके।

  4. चरम बाजार स्थितियों के लिए एक अपवाद हैंडलिंग तंत्र डिजाइन करें, जैसे कि प्रारंभिक स्थिति का आकार बढ़ाना, स्टॉप लॉस के लिए सीधे मध्यवर्ती ग्रिड को छोड़ना, आदि, जो मूल्य अंतराल जैसी स्थितियों से निपट सकता है।

सारांश

गतिशील ग्रिड ट्रेडिंग रणनीति को एक पूरे के रूप में उचित रूप से डिज़ाइन किया गया है। यह ग्रिड के साथ एक स्वचालित ले लाभ स्टॉप लॉस प्रणाली का निर्माण कर सकता है जो अक्सर मूल्य उतार-चढ़ाव वाले व्यापारिक किस्मों के लिए उपयुक्त है। हालांकि, इस रणनीति में अभी भी कुछ बाजार जोखिम हैं। रणनीति को अधिक मजबूत होने से पहले मापदंडों और असाधारण स्थितियों को अनुकूलित करने की आवश्यकता है।


/*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)

अधिक