डोंचियन चैनलों पर आधारित रणनीति के बाद प्रवृत्ति

लेखक:चाओझांग, दिनांकः 2023-10-31 17:44:19
टैगः

img

अवलोकन

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

रणनीति तर्क

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

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

जब कीमत धीमी चैनल के ऊपर से टूटती है, तो लंबी हो जाती है। जब कीमत धीमी चैनल के नीचे से टूटती है, तो छोटी हो जाती है। स्थिति में प्रवेश करने के बाद, तेजी से चैनल के मध्य बिंदु पर स्टॉप लॉस सेट करें।

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

लाभ

  • स्वचालित रूप से रुझानों को ट्रैक करें और समय पर घाटे में कटौती करें। डबल चैनल संरचना स्वचालित रूप से रुझानों को ट्रैक कर सकती है और रुझानों के उलट होने पर तेजी से घाटे में कटौती कर सकती है।

  • कुछ ट्रेंड फिल्टरिंग प्रभाव के साथ पिलबैक पर प्रवेश करें। केवल जब कीमत चैनल की सीमाओं के माध्यम से टूटती है तो कुछ झूठे ब्रेकआउट को वास्तविक ट्रेंड के बिना फ़िल्टर कर सकते हैं।

  • नियंत्रण योग्य जोखिम। बंद स्टॉप हानि दूरी एकल हानि को नियंत्रित कर सकती है।

जोखिम

  • प्रवृत्ति के अनुसरण करने वाली रणनीतियों में अपेक्षाकृत बड़ी कमी हो सकती है जिसके लिए मनोवैज्ञानिक तैयारी की आवश्यकता होती है।

  • स्टॉप लॉस बहुत करीब है. फास्ट चैनल पीरियड छोटा है इसलिए स्टॉप लॉस करीब है, बंद होने का खतरा है. हम उचित रूप से फास्ट चैनल पीरियड को आराम दे सकते हैं.

  • बहुत अधिक ट्रेड. डबल चैनल संरचना अत्यधिक प्रविष्टियों का उत्पादन कर सकती है, जिसके लिए उचित स्थिति आकार की आवश्यकता होती है.

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

  • प्रवेश फ़िल्टर जोड़ें. हम पर्याप्त प्रवृत्ति शक्ति के बिना ब्रेकआउट को फ़िल्टर करने के लिए प्रवेश स्थितियों में अस्थिरता आदि जोड़ सकते हैं.

  • चैनल अवधि मापदंडों का अनुकूलन. हम अनुकूलन चैनल मापदंड संयोजन व्यवस्थित रूप से मिल सकता है.

  • कई समय सीमाओं को मिलाकर उच्च समय सीमाओं पर मुख्य प्रवृत्ति का निर्धारण करना और कम समय सीमाओं पर व्यापार करना।

  • गतिशील स्टॉप लॉस दूरी. बाजार की अस्थिरता के आधार पर गतिशील रूप से स्टॉप दूरी समायोजित करें.

सारांश

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


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle 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")
risk      = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast      = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow      = input(50, minval = 1, title = "Slow channel (for entries)")
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(true, 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, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")

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

//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
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]))
    
    //Max loss size
    equity := strategy.position_size == 0 ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    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)

अधिक