प्रवृत्ति अनुसरण और ADX संकेतक पर आधारित अल्पकालिक व्यापार रणनीति


निर्माण तिथि: 2024-01-22 17:10:55 अंत में संशोधित करें: 2024-01-22 17:10:55
कॉपी: 0 क्लिक्स: 687
1
ध्यान केंद्रित करना
1617
समर्थक

प्रवृत्ति अनुसरण और ADX संकेतक पर आधारित अल्पकालिक व्यापार रणनीति

अवलोकन

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

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

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

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

स्टॉप लॉस लाइन को नवीनतम कीमतों और एटीआर मानों के आधार पर गतिशील रूप से समायोजित किया जाता है, जिससे ट्रेंड को ट्रैक करने में मदद मिलती है।

श्रेष्ठता विश्लेषण

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

  1. सुपरट्रेंड इंडिकेटर का उपयोग करके ट्रेंड को ट्रैक करें और बाजार में उतार-चढ़ाव से बचें।

  2. ADX सूचकांक का उपयोग करके प्रवृत्ति की ताकत का आकलन करें, ताकि समेकन के दौरान गलत ट्रेडों से बचा जा सके।

  3. स्टॉप लॉस लाइन को गतिशील रूप से समायोजित करें, अधिकतम लाभ को लॉक करें।

  4. आरएसआई के साथ संयोजन में, हम खरीद और बिक्री से बचते हैं।

  5. कुल मिलाकर, नीति पैरामीटर सेट करना उचित है, dframe चयन में निरंतरता पर विचार किया गया है, और स्टॉपलॉस सेटिंग भी अच्छी है।

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

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

  1. सुपरट्रेंड और एमए संकेतक के बीच संघर्ष हो सकता है।

  2. ADX 14 चक्रों के लिए निर्धारित है, जो आकस्मिक घटनाओं के लिए कम संवेदनशील है।

  3. आरएसआई पैरामीटर को डिफ़ॉल्ट मान के रूप में सेट किया गया है, और यह पूरी तरह से ब्रोकर से बचने के लिए संभव नहीं है।

  4. इस तरह की घटनाओं के प्रभाव को ध्यान में नहीं रखा गया है, जैसे कि महत्वपूर्ण लाभ रिक्तियां / लाभदायक समाचार।

समाधान के लिएः

  1. एमए चक्र को ओवर-ट्रेंड सूचक के अनुरूप करें।

  2. ADX चक्र को छोटा करने और आकस्मिक घटनाओं के प्रति संवेदनशीलता बढ़ाने का प्रयास करें।

  3. आरएसआई पैरामीटर को अनुकूलित करें, सबसे अच्छा मूल्य खोजें

  4. समाचार फ़िल्टर से जुड़ें और बड़ी खबरों से बचें।

अनुकूलन दिशा

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

  1. ट्रेडिंग निर्णयों को और अधिक बुद्धिमान बनाने के लिए मशीन लर्निंग मॉडल में प्रवृत्ति को जोड़ना।

  2. प्रवृत्ति की ताकत का आकलन करने के लिए एडीएक्स जैसे वैकल्पिक भावनात्मक संकेतकों को शामिल करने का प्रयास करें।

  3. एक अनुकूलन स्टॉप लॉस मॉड्यूल जोड़ा गया है ताकि स्टॉप लॉस अधिक गतिशील और सटीक हो सके।

  4. डीप लर्निंग तकनीक के माध्यम से अधिक विशेषताओं को निकालने और समग्र रणनीति को अनुकूलित करने के लिए।

  5. उच्च स्तरीय भाषाओं जैसे पायथन का उपयोग करके रणनीति विकास करें और रणनीति को विस्तारित करें।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bendre ADX STrend", overlay = true)

///////////////////////////
// SuperTrend + Pivot Point
//////////////////////////

src =  input(close, title="EMA Source")
PPprd = input(defval = 2, title="Pivot Point Period")
AtrFactor=input(defval = 2, title = "ATR Factor")
AtrPd=input(defval = 21, title = "ATR Period")

StartDate = input(timestamp("1 Dec 2023"), title="Start Date")
EndDate = input(timestamp("12 Jan 2024"), title="End Date")
window()  => true

var float ph = na
var float pl = na
ph := ta.pivothigh(PPprd, PPprd)
pl :=ta.pivotlow(PPprd, PPprd)

float center = na
center := center[1]
// float lastpp = ph ? ph : pl ? pl : 0.0
float lastpp = na(ph) ? na(pl) ? na : pl : ph

if lastpp > 0
    if na(center)
        center := lastpp
    else
        center := (center * 2 + lastpp) / 3

Up = center - (AtrFactor * ta.atr(AtrPd))
Dn = center + (AtrFactor * ta.atr(AtrPd))

var float TUp = na
var float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// Lines
linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor ,  linewidth = 2, title = "PP SuperTrend")

bsignalSSPP = close > Trailingsl
ssignalSSPP = close < Trailingsl


///////
// ADX
//////

lenADX = 14
th = 14
TrueRange = math.max(math.max(high-low, math.abs(high-nz(close[1]))), math.abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? math.max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? math.max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/lenADX) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/lenADX) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/lenADX) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = math.abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = ta.sma(DX, lenADX)


//////
// MA
/////

lenMA = 21
srcMA = input(close, title="Source")
// offsetMA = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
offsetMA = input(0, title="Offset")
outMA = ta.sma(srcMA, lenMA)

//
// RSI
//
length = input( 14 )
overSold = input( 30 )
overBought = input( 65 )
price = close
vrsi = ta.rsi(price, length)

//
// DMI - Direction Movement Index
// 
[diplus1, diminus1, adx] = ta.dmi(14, 14)

// Buy - Sell Entries
buy = bsignalSSPP and outMA < close and ADX > th
sell = ssignalSSPP 


if (buy and vrsi > overBought and adx > 19)
    // .order // Tuned version
    strategy.entry("Buy", strategy.long, when = window())
    // strategy.close("Sell", "close Sell")

if (sell) and (strategy.position_size > 0)
    // strategy.entry("Sell", strategy.short)
    strategy.close("Buy", "Close Buy")

if(sell and vrsi < overSold and adx > 25)
    strategy.entry("Sell", strategy.short, when = window())

if ( ta.crossover( diminus1, diplus1) or ((buy) and (strategy.position_size > 0)) )
    strategy.close("Sell", "close Sell")

// if(sell) and (diminus1 > diplus1) and adx > 23 and adx > adx[1] and (vrsi < overSold)
//     strategy.entry("Sell", strategy.short, when = window())

// if (strategy.position_size > 0 and ta.crossunder(diminus1, adx)) or (strategy.position_size > 0  and (buy))
//     strategy.close("Sell", "close Sell")