इस रणनीति में मुख्य रूप से हल चलती औसत और डब्ल्यूटी संकेतक के क्रॉस सिग्नल को शामिल किया गया है ताकि प्रवृत्ति के निर्णय और प्रवेश के समय के चयन पर अधिक सटीक निर्णय लेने के लिए अपने-अपने संकेतक का लाभ उठाया जा सके।
इस रणनीति में मुख्य रूप से हल चलती औसत और डब्ल्यूटी सूचक के क्रॉस सिग्नल शामिल हैं।
Hull Moving Average का हिस्सा, अल्पकालिक और दीर्घकालिक Hull MA की गणना करके और रंग भरकर प्रवृत्ति की दिशा का न्याय करने के लिए।
अल्पकालिक हुल एमए = डब्ल्यूएमए 2*WMA(n/2) - WMA(n), sqrt(n))
लंबे समय तक हुल एमए = डब्ल्यूएमए (डब्ल्यूएमए) एन / 3*3 - WMA(n/2), n/2)
WMA एक भारित चलती औसत है। यह एक bullish संकेत है जब यह एक लंबी अवधि की रेखा को पार करता है, और एक bearish संकेत है जब यह एक छोटी अवधि की रेखा को पार करता है।
डब्ल्यूटी सूचकांक भाग, डब्ल्यूटी सूचकांक के बहु-अवकाश औसत रेखा की गणना करके और औसत रेखा के क्रॉसिंग को देखने के द्वारा प्रवेश का न्याय करने के लिए। गणना सूत्र हैः
TCI = (Close - EMA(Close,n1)) / (k * STD(Close - EMA(Close,n1),n1))
WT1 = EMA(TCI,n2)
WT2 = SMA(WT1,m)
जिसमें TCI ट्रेंड कंपोजिट इंडेक्स है, जो कीमत और चैनल के बीच की रेखा ईएमए के विचलन को दर्शाता है; WT1 TCI का ईएमए स्लीव है, WT2 WT1 का SMA है, और m आमतौर पर 4 लेता है। WT1 को WT2 के माध्यम से पार करते समय मल्टीहेड सिग्नल है, और WT1 को WT2 के माध्यम से पार करते समय एक खाली सिग्नल है।
संयुक्त Hull MA की प्रवृत्ति निर्णय और WT सूचक के क्रॉस सिग्नल, प्रवृत्ति की दिशा सही होने पर खेल में प्रवेश कर सकते हैं।
इस रणनीति में हॉल एमए और डब्ल्यूटी सूचकांक के लाभों को एकीकृत किया गया है, जिसमें निम्नलिखित लाभ हैंः
हल एमए ने मूल्य परिवर्तन के रुझानों को तेजी से पकड़ने के लिए और बाजार के शोर को ठीक करने के लिए और रुझानों को सही ढंग से और विश्वसनीय रूप से निर्धारित करने के लिए चलती औसत की गणना में संशोधन किया।
डब्ल्यूटी सूचकांक इन-चैनल मूल्य उतार-चढ़ाव की विशेषताओं का उपयोग करता है, जो टर्नओवर को जल्दी से पकड़ने और अधिक सटीक व्यापारिक संकेत देने में मदद करता है।
इन दोनों का संयोजन प्रवृत्ति निर्णय और क्रॉस सिग्नल पर ध्यान केंद्रित करने के लिए किया जाता है, जिससे प्रवृत्ति की ताकत के साथ जोखिम को नियंत्रित किया जा सकता है।
हुल एमए चिकनाई पैरामीटर और डब्ल्यूटी संकेतक पैरामीटर दोनों अनुकूलन योग्य हैं, जिन्हें विभिन्न नस्लों की विशेषताओं और व्यापारिक वरीयताओं के अनुसार अनुकूलित किया जा सकता है।
क्रॉस सिग्नल का उपयोग अकेले Hull MA या WT संकेतकों के साथ किया जा सकता है, या ट्रेंड ट्रैकिंग और क्रॉस-वैलिडेशन दोनों के साथ संयुक्त रूप से किया जा सकता है।
स्टॉप लॉस स्टॉप रणनीति को सेट करें और एकल लेनदेन जोखिम को प्रभावी ढंग से नियंत्रित करें।
इस रणनीति के कुछ प्रमुख जोखिम हैंः
हुल एमए और डब्ल्यूटी दोनों सूचकांकों ने कीमतों को कुछ हद तक अस्पष्ट किया है, जो थोड़ा पीछे हो सकता है, जिससे प्रवेश का समय कम सटीक हो सकता है।
डब्ल्यूटी सूचकांक में कई सिरों के पीछे और खाली सिरों के पीछे झूठे संकेत पैदा करने की प्रवृत्ति है, जो प्रवृत्ति के निर्णय के बिना व्यापार जोखिम को बढ़ाता है।
अनुचित पैरामीटर सेटिंग भी लेन-देन के परिणामों को प्रभावित कर सकती है, जिसे नस्ल की विशेषताओं के आधार पर लगातार परीक्षण और अनुकूलन की आवश्यकता होती है।
रुझान में उतार-चढ़ाव के दौरान, स्टॉप लॉस को अक्सर ट्रिगर किया जा सकता है, जिससे ट्रेडिंग में कुछ नुकसान हो सकता है।
जोखिमों को निम्न तरीकों से अनुकूलित और सुधारित किया जा सकता हैः
Hull MA और WT पैरामीटर को समायोजित करें और इष्टतम संतुलन बिंदु ढूंढें। अन्य संकेतकों को Hull MA के साथ संयोजन में परीक्षण किया जा सकता है।
प्रवृत्ति के निर्णय के लिए एक तंत्र को जोड़ना, जब कोई स्पष्ट प्रवृत्ति नहीं होती है, तो WT संकेतक के गलत संकेतों से बचें।
रिटर्न्स और सिमुलेशन ट्रेडिंग का उपयोग करके सर्वोत्तम पैरामीटर का पता लगाएं और उचित स्टॉप लॉस सेट करें।
जब रुझान स्पष्ट नहीं होता है, तो स्थिति को कम करें, या अस्थायी रूप से व्यापार न करें।
इस रणनीति को निम्नलिखित दिशाओं में और अधिक अनुकूलित किया जा सकता हैः
WT सूचकांकों के साथ विभिन्न चलती औसत संयोजनों का परीक्षण करें और बेहतर संतुलन बिंदुओं की तलाश करें। जैसे कि KAMA, TEMA, आदि।
निर्णय लेने की सटीकता में सुधार के लिए अन्य मापदंडों को जोड़ना, जैसे कि अस्थिरता सूचकांक, बोलिंगर बैंड आदि।
पैरामीटर सेटिंग को अनुकूलित करें, सबसे अच्छा पैरामीटर संयोजन खोजने के लिए फीडबैक और सिमुलेशन का उपयोग करें। पैरामीटर ऑप्टिमाइज़ेशन प्रोग्राम स्थापित करें, सबसे अच्छा पैरामीटर जल्दी से खोजें।
स्टॉप लॉस को ट्रिगर करने की संभावना को कम करने के लिए स्टॉप लॉस रणनीति का अनुकूलन करें, जैसे कि चलती स्टॉप, ऑसिलेशन स्टॉप, पास और दूर के स्टॉप।
स्थिति प्रबंधन रणनीतियों का अनुकूलन करें, ट्रेडिंग आवृत्ति और स्थिति के आकार को कम करें जब रुझान अनिश्चित हो, जोखिम को कम करें।
अधिक बुद्धिमान लेनदेन निर्णय और पैरामीटर अनुकूलन के लिए मशीन लर्निंग जैसी उन्नत तकनीकों को जोड़ना।
इस रणनीति को एकीकृत Hull MA चिकनी चलती औसत और WT सूचक क्रॉसिंग विशेषताएं, साथ ही प्रवृत्ति निर्णय और क्रॉस सत्यापन के फायदे। सही दिशा की गारंटी के आधार पर व्यापार करने के लिए, जोखिम को प्रभावी ढंग से नियंत्रित किया जा सकता है। अनुकूलित पैरामीटर सेटिंग, स्टॉप लॉस रणनीति, स्थिति प्रबंधन आदि के माध्यम से, रणनीति की स्थिरता और व्यापार प्रभावशीलता को और बढ़ाया जा सकता है। अन्य सूचक निर्णय और स्मार्ट ट्रेडिंग तकनीक को गोल करना भी भविष्य की अनुकूलन दिशा है। कुल मिलाकर, इस रणनीति में सरल, विश्वसनीय, अनुकूलन में आसान विशेषताएं हैं, जो एक व्यावहारिक प्रवृत्ति ट्रैकिंग रणनीति है।
/*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 ///