Hull Moving Average और WT क्रॉस पर आधारित ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2023-09-26 20:00:32
टैगः

अवलोकन

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

रणनीति तर्क

रणनीति में हॉल मूविंग एवरेज और डब्ल्यूटी क्रॉस सिग्नल शामिल हैं।

हुल मूविंग एवरेज भाग अल्पकालिक और दीर्घकालिक हुल एमए की गणना करता है और प्रवृत्ति की दिशा निर्धारित करने के लिए रंग भरता है। सूत्र हैंः

लघु पतवार MA = WMA ((2*WMA ((n/2) - WMA ((n), वर्ग))

लंबी पतवार MA = WMA(WMA(n/3) *3 - WMA(n/2), n/2)

जहां WMA भारित चलती औसत है. जब लघु एमए लंबी एमए से पार होता है, तो यह एक तेजी का संकेत है, अन्यथा एक मंदी का संकेत है.

डब्ल्यूटी भाग डब्ल्यूटी रेखाओं की गणना करता है और प्रविष्टियों को निर्धारित करने के लिए उनके क्रॉसिंग का निरीक्षण करता है। सूत्र हैंः

TCI = (Close - EMA(Close,n1)) / (k * STD(Close - EMA(Close,n1),n1))

WT1 = EMA ((TCI,n2)

WT2 = SMA(WT1,m)

जहां टीसीआई ट्रेंड कंपोजिट इंडेक्स है, जो ईएमए से मूल्य के विचलन को दर्शाता है; डब्ल्यूटी1 टीसीआई का ईएमए है, डब्ल्यूटी2 डब्ल्यूटी1 का एसएमए है, एम आमतौर पर 4 होता है। डब्ल्यूटी1 का डब्ल्यूटी2 पर क्रॉसिंग एक तेजी का संकेत देता है, जबकि डब्ल्यूटी2 के नीचे डब्ल्यूटी1 का क्रॉसिंग एक मंदी का संकेत देता है।

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

लाभ विश्लेषण

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

  1. हुल एमए गणना को संशोधित करके मूल्य परिवर्तन को तेजी से पकड़ता है, और विश्वसनीय रुझान निर्णय के लिए प्रभावी रूप से बाजार शोर को फ़िल्टर करता है।

  2. डब्ल्यूटी चैनल के भीतर मूल्य उतार-चढ़ाव का उपयोग करके तेजी से मोड़ बिंदुओं को पकड़ता है और अपेक्षाकृत सटीक व्यापार संकेत उत्पन्न करता है।

  3. यह संयोजन प्रवृत्ति के अनुरूप होने पर जोखिम नियंत्रण में सुधार के लिए प्रवृत्ति और क्रॉसिंग दोनों को ध्यान में रखता है।

  4. हुल एमए और डब्ल्यूटी मापदंडों को प्रतीक विशेषताओं और व्यापारिक वरीयताओं के आधार पर समायोजन और अनुकूलन के लिए अनुकूलित किया जा सकता है।

  5. पतवार एमए और डब्ल्यूटी सिग्नल का उपयोग ट्रेंड फॉलोइंग और क्रॉसिंग वैलिडेशन दोनों के लिए अकेले या साथ में किया जा सकता है।

  6. एकल व्यापार जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए स्टॉप लॉस और ले लाभ सेट किया जा सकता है।

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

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

  1. हुल एमए और डब्ल्यूटी दोनों ही कीमतों को कुछ हद तक समतल करते हैं, जिससे प्रवेश संकेतों में देरी हो सकती है।

  2. डब्ल्यूटी स्पष्ट प्रवृत्ति के बिना झूठे तेजी/बियर विचलन संकेत उत्पन्न कर सकता है।

  3. अनुचित पैरामीटर सेटिंग्स व्यापार प्रदर्शन को प्रभावित कर सकती हैं और निरंतर अनुकूलन की आवश्यकता होती है।

  4. रुझान समेकन के दौरान स्टॉप लॉस अक्सर ट्रिगर किया जा सकता है, जिससे कुछ नुकसान हो सकता है।

जोखिमों को इस प्रकार संबोधित और अनुकूलित किया जा सकता हैः

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

  2. एक पुष्ट प्रवृत्ति के बिना झूठे WT संकेतों से बचने के लिए प्रवृत्ति सत्यापन तंत्र जोड़ें।

  3. बैकटेस्टिंग और डेमो ट्रेडिंग के माध्यम से मापदंडों को अनुकूलित करें, और उचित स्टॉप लॉस रेंज सेट करें।

  4. स्थिति के आकार को कम करें या जब रुझान स्पष्ट न हो तब ट्रेडिंग बंद कर दें।

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

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

  1. बेहतर संतुलन खोजने के लिए WT के साथ मिलकर विभिन्न चलती औसत का परीक्षण करें, उदाहरण के लिए KAMA, TEMA आदि।

  2. निर्णय की सटीकता में सुधार के लिए अन्य संकेतकों जैसे ऑसिलेटर, बोलिंगर बैंड जोड़ें।

  3. बैकटेस्टिंग और डेमो ट्रेडिंग के माध्यम से मापदंडों का अनुकूलन करें. तेजी से ट्यूनिंग के लिए मापदंड अनुकूलन कार्यक्रम बनाएं.

  4. अवांछित ट्रिगरिंग को कम करने के लिए स्टॉप लॉस रणनीतियों को अनुकूलित करें, जैसे कि ट्रेलिंग स्टॉप, अस्थिरता आधारित स्टॉप, निकट से दूर तक जाना आदि।

  5. स्थिति आकार की रणनीतियों को अनुकूलित करें, जोखिम को कम करने के लिए अस्पष्ट रुझानों में आकार और आवृत्तियों को कम करें।

  6. स्मार्ट ट्रेडिंग निर्णयों और अनुकूलन मापदंडों के लिए मशीन लर्निंग और अन्य उन्नत तकनीकों को पेश करना।

सारांश

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


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
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/
// WT CROSS @author [© LazyBear]
// © pigsq
// @version=5

strategy("Kahlman HullMA / WT Cross Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100)

_1 = input(false, '───────── SP/TP SETTINGS ─────────')

stoploss1 = input(title='Stop Loss On/Off?', defval=true)
stoploss = input.float(5, "Stop Loss", minval = 1, step = 1)/100
takeprofit1 = input(title='Take Profit On/Off?', defval=true)
takeprofit = input.float(10, "Take Profit", minval = 1, step = 1)/100

_2 = input(false, '──────── WT CROSS SETTINGS ────────')

wtcross = input(title='WT Cross On/Off?', defval=true)
wtcross2 = input(title='Change WT Cross Method ( If WT Cross ON )', defval=false)

/// WT CROSS ///

n1 = input(10, 'Channel Length')
n2 = input(21, 'Average Length')

ap = hlc3
esa = ta.ema(ap, n1)
r = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * r)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

/// WT CROSS ///

/// HULL TREND WITH KAHLMAN ///

_3 = input(false, '──────── HULLMA SETTINGS ────────')

srchull = input(hl2, 'Source')
lengthhull = input(24, 'Lookback')
gain = input(10000, 'Gain')
kh = input(true, 'Use Kahlman')

hma(_srchull, _lengthhull) =>
    ta.wma((2 * ta.wma(_srchull, _lengthhull / 2)) - ta.wma(_srchull, _lengthhull), math.round(math.sqrt(_lengthhull)))

hma3(_srchull, _lengthhull) =>
    p = lengthhull / 2
    ta.wma(ta.wma(close, p / 3) * 3 - ta.wma(close, p / 2) - ta.wma(close, p), p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1], x) + dk * math.sqrt(g / 10000 * 2)
    velo = 0.0
    velo := nz(velo[1], 0) + g / 10000 * dk
    kf := smooth + velo
    kf

a = kh ? kahlman(hma(srchull, lengthhull), gain) : hma(srchull, lengthhull)
b = kh ? kahlman(hma3(srchull, lengthhull), gain) : hma3(srchull, lengthhull)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]

p1hma = plot(a, color=c, linewidth=1, title='Long Plot', transp=75)
p2hma = plot(b, color=c, linewidth=1, title='Short Plot', transp=75)
fill(p1hma, p2hma, color=c, title='Fill', transp=55)

/// HULL TREND WITH KAHLMAN ///

/// DATE ///

_4 = input(false, '───────── DATE SETTINGS ─────────')

FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=999, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false

/// DATE ///

/// LONG/SHORT CONDITION ///

longCondition = crossup and ta.crossover(wt1,wt2)
longCondition1 = crossup
longCondition2 = crossup and wt1 > wt2

if (wtcross == true ? longCondition : wtcross == false ? longCondition1:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Long")
else if (wtcross2 == true ? longCondition2 : wtcross2 == false ? longCondition:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Long")
    
shortCondition = crossdn and ta.crossunder(wt1,wt2)
shortCondition1 = crossdn
shortCondition2 = crossdn and wt1 < wt2

if (wtcross == true ? shortCondition : wtcross == false ? shortCondition1:na)
    strategy.entry("SHORT", strategy.short, when=window(), comment="Enter Short")
else if (wtcross2 == true ? shortCondition2 : wtcross2 == false ? shortCondition:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Short")

/// LONG/SHORT CONDITION ///

/// CLOSE STRATEGY ///

strategy.close("LONG", when=wtcross == true ? shortCondition : wtcross == false ? shortCondition1:na, comment = "Close Long")
strategy.close("SHORT", when=wtcross == true ? longCondition : wtcross == false ? longCondition1:na, comment = "Close Short")

/// EXIT STRATEGY ///

strategy.exit("LONG", when=strategy.position_size > 0, stop=stoploss1 == true ? strategy.position_avg_price * (1 - stoploss):na, limit=takeprofit1 == true ? strategy.position_avg_price * (1 + takeprofit):na, comment="Exit Long")
strategy.exit("SHORT", when=strategy.position_size < 0, stop=stoploss1 == true ? strategy.position_avg_price * (1 + stoploss):na, limit=takeprofit1 == true ? strategy.position_avg_price * (1 - takeprofit):na, comment ="Exit Short")

/// LONG SL/TP LINE ///

plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 - stoploss) : na, title='Long Stop Loss', color=stoploss1 == true ? color.new(color.red, 0):na, style=plot.style_linebr)
plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeprofit) : na, title='Long Take Profit', color=takeprofit1 == true ? color.new(color.green, 0):na, style=plot.style_linebr)

/// LONG SL/TP LINE ///

/// SHORT SL/TP LINE ///

plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 + stoploss) : na, title='Short Stop Loss', color=stoploss1 == true ? color.new(color.red, 0):na, style=plot.style_linebr)
plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeprofit) : na, title='Short Take Profit', color=takeprofit1 == true ? color.new(color.green, 0):na, style=plot.style_linebr)

/// SHORT SL/TP LINE ///


अधिक