डोंचियन चैनलों पर आधारित कछुए व्यापार रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-26 14:35:02
टैगः

img

अवलोकन

तांग अंची कछुआ ट्रेडिंग रणनीति मूल कछुआ ट्रेडिंग रणनीति का एक अत्यधिक सरलीकृत संस्करण है। यह मूल कछुआ रणनीति से बहुत अलग है। रणनीति दो डोंचियन चैनलों, एक तेज चैनल और एक धीमी चैनल का उपयोग करती है। चैनल अवधि उपयोगकर्ता द्वारा निर्धारित की जाती है, जिसमें तेज चैनल के लिए 20 बार और धीमी चैनल के लिए 50 बार के डिफ़ॉल्ट मान होते हैं। रणनीति प्रवेश ट्रेडों के लिए धीमी चैनल के ऊपरी और निचले बैंड का उपयोग करती है और स्टॉप लॉस सेट करने के लिए तेज चैनल के मध्य बैंड का उपयोग करती है।

रणनीति तर्क

इस रणनीति का मूल तर्क यह हैः

  1. तेज़ डोंचियन चैनल की गणना करें: ऊपरी बैंड पिछले तेज़ बारों पर उच्चतम उच्च है, निचला बैंड सबसे कम कम है, और मध्य बैंड ऊपरी और निचले बैंड का औसत है।

  2. धीमे डोंचियन चैनल की गणना करें: ऊपरी बैंड पिछले धीमे बारों पर उच्चतम उच्च है, निचला बैंड सबसे कम कम है।

  3. जब कोई स्थिति नहीं होती है, तो जब कीमत धीमी चैनल के ऊपरी बैंड को छूती है तो एक लंबा संकेत ट्रिगर किया जाता है, और जब कीमत धीमी चैनल के निचले बैंड को छूती है तो एक छोटा संकेत ट्रिगर किया जाता है।

  4. स्थिति खोलने के बाद, फास्ट चैनल के मध्य बैंड का उपयोग स्टॉप लॉस के रूप में किया जाता है।

  5. जब होल्डिंग अवधि के दौरान उद्घाटन संकेत के विपरीत संकेत होता है तो स्थिति को बंद कर दें।

लाभ विश्लेषण

इस रणनीति के लाभ इस प्रकार हैंः

  1. सरल नियम लागू करने के लिए आसान. Donchian चैनलों और चल स्टॉप हानि समझने के लिए आसान हैं, शुरुआती के लिए उपयुक्त.

  2. अनुकूलन योग्य मापदंड. उपयोगकर्ता विभिन्न बाजार वातावरणों के अनुकूल होने के लिए व्यापार उत्पादों और समय सीमाओं के आधार पर मापदंडों को समायोजित कर सकते हैं।

  3. कुछ परस्पर विरोधी ट्रेडिंग सिग्नल केवल चैनल बैंड के मूल्य ब्रेकआउट पर निर्भर करता है, सामान्य संकेतकों से झूठे संकेतों से बचता है।

  4. स्वचालित स्टॉप लॉस मैनेजमेंट. तेज चैनल मध्य बैंड के आधार पर चलती स्टॉप लॉस एकल ट्रेडों पर नुकसान को सीमित कर सकती है.

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

इस रणनीति के जोखिमों में निम्नलिखित शामिल हैंः

  1. अधिक स्टॉप लॉस जब रुझान अस्पष्ट हो। यह रणनीति की लाभप्रदता को प्रभावित करता है।

  2. जब रुझान उलट जाता है, तो पिछली रुझान दिशा में फ्लोटिंग मुनाफा घाटे में बदल जाएगा।

  3. अनुचित पैरामीटर सेटिंग्स अति-आक्रामकता या अति-संरक्षकता का कारण बनती हैं। दोहराए गए बैकटेस्टिंग के माध्यम से उचित मानों को खोजने की आवश्यकता होती है।

  4. स्वचालित ट्रेडिंग पर उच्च निर्भरता. स्वचालित ट्रेडिंग में विफलता के कारण होने वाले अपवादों से बचने के लिए सर्वर स्थिरता महत्वपूर्ण है।

उपरोक्त जोखिमों को कम करने के लिए, मापदंडों को अनुकूलित किया जा सकता है, स्थिति आकार को उचित रूप से सीमित किया जा सकता है, और जोखिम प्रबंधन मॉड्यूल जोड़े जा सकते हैं।

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

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

  1. प्रवेश संकेतों के लिए फ़िल्टर जोड़ें ताकि प्रवृत्ति उलट संकेतों को पकड़ने से बचा जा सके। उदाहरण के लिए, प्रवृत्ति दिशा निर्धारित करने के लिए प्रवृत्ति संकेतक का उपयोग करें।

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

  3. अत्यधिक घटनाओं में अत्यधिक नुकसान को रोकने के लिए अधिकतम निकासी सीमा और दैनिक हानि सीमा जैसे जोखिम प्रबंधन मॉड्यूल जोड़ें।

  4. स्टॉप लॉस रणनीतियों में सुधार करना। उदाहरण के लिए, बाजार के रुझानों के लिए स्टॉप को अधिक अनुकूल बनाने के लिए ट्रेलिंग स्टॉप लॉस को अपनाएं।

निष्कर्ष

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


/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
sizelong  = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %")
sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %")
fast      = input(20, minval=1)
slow      = input(50, minval=1)
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(false, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
fromyear  = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear    = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth   = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday   = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today     = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc)
plot(ls, offset = offset, color = colorpc)
plot(center, offset = offset, color = colorsl)

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Orders
truetime = true
lotlong = 0.0
lotshort = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime)
strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if true
    strategy.close_all()
    strategy.cancel("fast L")
    strategy.cancel("fast S")
    strategy.cancel("slow L")
    strategy.cancel("slow S")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Label
    min := round(min * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)

अधिक