संसाधन लोड हो रहा है... लोड करना...

ग्रिड आधारित लॉन्ग मार्टिंगेल डायनेमिक पोजीशन ग्रिड ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2024-03-22 15:12:33
टैगः

img

रणनीति का अवलोकन

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

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

  1. ग्रिड आकार पैरामीटर के आधार पर कीमत को समान रूप से विभाजित ग्रिड में विभाजित करें।
  2. प्रत्येक ग्रिड लाइन पर लंबी सीमा आदेश रखें।
  3. जब वर्तमान मूल्य ग्रिड रेखा को छूता हैः
    • यदि वर्तमान में खुले पदों की संख्या 0 है, तो start_lot आकार के साथ एक पद खोलें।
    • यदि वर्तमान में खुले पदों की संख्या 0 से अधिक है और वर्तमान ग्रिड मूल्य पिछली प्रवेश मूल्य से कम है, तो वर्तमान ग्रिड मूल्य पर एक नई लंबी स्थिति खोलें जिसका आकार गुणक से पिछले पद आकार से गुणा हो।
  4. खुले पदों की अधिकतम संख्या को Max Open Orders पैरामीटर द्वारा नियंत्रित किया जाता है।
  5. स्थिति खोलने के बाद, औसत प्रवेश मूल्य से TakeProfit अंक ऊपर ले लाभ का स्तर सेट करें।
  6. जब वर्तमान मूल्य लाभ लेने के स्तर पर पहुंचता है, तो सभी लंबी स्थिति को बंद करें और पैरामीटर रीसेट करें।

इस प्रकार, गिरावट के दौरान स्थिति का आकार धीरे-धीरे बढ़ता है, और जब कीमत ठीक हो जाती है और लाभ लेने के स्तर तक पहुंच जाती है तो लाभ लिया जाता है।

रणनीतिक लाभ

  1. गतिशील स्थिति आकारः खुली स्थितियों की वर्तमान संख्या के आधार पर प्रत्येक प्रविष्टि के लिए गतिशील रूप से स्थिति आकार को समायोजित करें। यह निरंतर डाउनट्रेंड के दौरान जोखिम को धीरे-धीरे बढ़ाता है, जिससे रणनीति की लाभ क्षमता बढ़ जाती है।
  2. लचीले मापदंडः ग्रिड आकार, स्टार्ट_लॉट, मल्टीफैक्टर और अन्य मापदंड ग्रिड आकार, प्रारंभिक स्थिति आकार, स्थिति स्केलिंग कारक आदि पर लचीला नियंत्रण की अनुमति देते हैं।
  3. नियंत्रित जोखिमः Max Open Orders पैरामीटर ओवरएक्सपोजर को रोकने के लिए खुली पदों की अधिकतम संख्या को नियंत्रित करता है। साथ ही, एक ले लाभ स्तर निर्धारित करने से समय पर लाभ लेने से ड्रॉडाउन को नियंत्रित करने की अनुमति मिलती है।

रणनीतिक जोखिम

  1. कोई स्टॉप लॉस नहींः रणनीति में स्टॉप लॉस नहीं होता है। यदि कीमत गिरती रहती है, तो इसे महत्वपूर्ण नुकसान के जोखिम का सामना करना पड़ सकता है।
  2. पैरामीटर संवेदनशीलता: रणनीति का प्रदर्शन मल्टिफैक्टर जैसे मापदंडों के प्रति काफी संवेदनशील है। अनुचित मापदंड जोखिम पैदा कर सकते हैं।
  3. उच्च अस्थिरता: रणनीति अत्यधिक अस्थिर बाजार स्थितियों के दौरान अक्सर पदों को खोल और बंद कर सकती है, जिससे संभावित रूप से अतिरिक्त स्लिप और कमीशन लागत उत्पन्न हो सकती है।

जोखिम नियंत्रण के उपाय:

  1. जोखिम सहिष्णुता के आधार पर multifactor जैसे पैरामीटर सावधानीपूर्वक सेट करें। यदि आवश्यक हो तो कोड में स्टॉप लॉस लॉजिक जोड़ा जा सकता है।
  2. उपयुक्त मापदंडों का चयन करने के लिए सावधानीपूर्वक बैकटेस्ट और पेपर ट्रेड करें।
  3. अत्यधिक अस्थिर बाजार स्थितियों में रणनीति के प्रदर्शन का मूल्यांकन करें। यदि आवश्यक हो, तो मापदंडों को समायोजित करके या उपयोग परिदृश्यों को सीमित करके जोखिम को कम किया जा सकता है।

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

  1. ट्रेंड डिटेक्शन जोड़ेंः स्थिति खोलने पर मूल्य कार्रवाई के आधार पर प्रवृत्ति निर्धारित करें। यदि प्रवृत्ति मंदी की प्रतीत होती है, तो जोखिम को कम करने के लिए नई लंबी स्थिति खोलने से बचें।
  2. गतिशील लाभ लेना: मूल्य क्रिया, अस्थिरता और अन्य संकेतकों के आधार पर गतिशील रूप से लाभ लेने के स्तर को समायोजित करें। लाभप्रदता बढ़ाने के लिए प्रवृत्ति मजबूत होने पर लाभ लेने के स्तर को बढ़ाएं।
  3. स्थिति प्रबंधन को अनुकूलित करेंः स्थिति को जोड़ते समय, स्केलिंग कारक को ध्यान में रखने के अलावा, स्थिति आकार को अधिक सटीक रूप से नियंत्रित करने के लिए खाता शेष, वर्तमान जोखिम आदि को भी शामिल करें।
  4. अन्य संकेतों के साथ संयोजनः बाजार का व्यापक रूप से न्याय करने और व्यापार का मार्गदर्शन करने के लिए अन्य प्रवृत्ति का पता लगाने, दोलन का पता लगाने और अन्य संकेतक संकेतों के साथ ग्रिड ट्रेडिंग को एकीकृत करें।

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

सारांश

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


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © lagerta13
//@version=4
strategy("Grid A.", shorttitle="Grid(A)", overlay=true, format=format.price, precision=4, pyramiding = 100)

input_tf=input("15", "Started TimeFrame", 
 options = ["1", "5", "15", "30", "1H", "4H", "1D", "1W", "1M"],
 group="TimeFrame") 

// avg_tf=input("5", "Average TimeFrame", 
//  options = ["1", "5", "15", "30", "1H", "4H", "1D", "1W", "1M"],
//  group="TimeFrame")

slip_Hilo = input(3.0, "Slippage by open order", group="Strategy Settings")
start_lot = input(0.01, "Start lot", group="Strategy Settings")
start_avg = input(2, "Started average since Order #", group="Strategy Settings")
MaxTrades_Hilo = input(10, "Max Open Orders", group="Strategy Settings")
dropdown_selection = input("Only Long", "Direction", options=["Only Long", "Only Short", "Long & Short"],
 group="Strategy Settings")
type_selection = input("By Close", "Type input", options=["By Close", "By grid line"],
 group="Strategy Settings")

multifactor = input(1.5, "Multifactor", group="Strategy Settings")
precision_lot = input(2, "Number of precision", group="Strategy Settings")
take_profit = input(1, "TakeProfit", group="Strategy Settings")

// PipStep_S1 = input(30)
// PipStepX_S1 = input(1.2)
// dinamicStep = input(false, "Dinamic Step for AVG")

get_size_lot_order(number, multi, prec, avg_from, lot_from) =>
	res = lot_from
	for i = 1 to number
		if i >= avg_from
			res := round(res * multi, precision = prec)
	res

var float[] entry_levels = array.new_float(MaxTrades_Hilo + 1)

for i = 0 to MaxTrades_Hilo
    array.push(entry_levels, 0)

gridSize = input(0.5, title="Grid Size")
gridLevels = int(close / gridSize) * gridSize

var int num_open_orders = 0
var float sum_price_orders = 0
var float entry_lot = 0

buy_condition = num_open_orders < MaxTrades_Hilo and gridLevels[0]<gridLevels[1] and dropdown_selection != "Only Short"

if (buy_condition)

    if num_open_orders == 0
        lot = get_size_lot_order(num_open_orders, multifactor, precision_lot, start_avg, start_lot)
        sum_price_orders := sum_price_orders + gridLevels[1] * lot 

        strategy.entry("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]+slip_Hilo) 
        // strategy.order("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]) 

        array.set(entry_levels, num_open_orders, gridLevels[1])

        entry_lot := entry_lot + lot
        num_open_orders := num_open_orders + 1

    else
        if gridLevels[1] < (array.get(entry_levels, num_open_orders - 1))
            lot = get_size_lot_order(num_open_orders, multifactor, precision_lot, start_avg, start_lot)
            sum_price_orders := sum_price_orders + gridLevels[1] * lot 
            entry_lot := entry_lot + lot

            strategy.entry("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]+slip_Hilo) 

            // +" S:" + tostring(sum_price_orders / (entry_lot)) + " Prev:" + tostring(array.get(entry_levels, num_open_orders - 1))
            // strategy.order("buy" + tostring(num_open_orders), true, qty=lot, limit=gridLevels[1]) 
            array.set(entry_levels, num_open_orders, gridLevels[1])

            num_open_orders := num_open_orders + 1


take = sum_price_orders > 0 and take_profit + (sum_price_orders / entry_lot) < high ? high : na
plotshape(take, location = location.belowbar, color = color.white)


strategy.exit("tp", comment = "TP " + tostring(num_open_orders), qty = entry_lot, limit = take_profit + (sum_price_orders / entry_lot))


if sum_price_orders > 0 and take_profit + (sum_price_orders / entry_lot) <= high
    num_open_orders := 0
    sum_price_orders := 0
    entry_lot := 0
    for i = 0 to MaxTrades_Hilo
        array.set(entry_levels, i, 0)

plot(gridLevels, color=color.blue, style=plot.style_circles, linewidth=2)

 

अधिक