
यह रणनीति कीमतों के रुझान और ओवरबॉय ओवरसोल को WaveTrend सूचकांक के माध्यम से निर्धारित करती है, जो RSI सूचकांक के फिल्टर सिग्नल के साथ मिलकर ट्रेंड ट्रैकिंग के तरीके को अपनाती है, जो ओवरबॉय ओवरसोल बिट्स पर रिवर्स ऑपरेशन करती है।
यह रणनीति WaveTrend सूचक का उपयोग करके मूल्य प्रवृत्ति की दिशा को निर्धारित करती है। WaveTrend सूचक Rainbow सूचक पर आधारित है, जो Heikin-Ashi औसत और मूल्य के पूर्ण मूल्य के बीच के अंतर की गणना करके मूल्य प्रवृत्ति की दिशा को निर्धारित करता है। RSI सूचक के साथ मिलकर ओवरबॉट और ओवरसोल्ड स्थिति को निर्धारित करने के लिए एक व्यापारिक संकेत भेजता है।
विशेष रूप से, रणनीति में WaveTrend सूत्र हैः
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)
इनमें से, esa गणना की गई हेकिन-आशी औसत रेखा है, d हेकिन-आशी औसत रेखा और कीमत के पूर्ण मूल्य के बीच अंतर का औसत है.
आरएसआई सूचक का उपयोग ओवरबॉट और ओवरसोल्ड को समझने के लिए किया जाता है। कोड में आरएसआई की गणना करने के लिए सूत्र हैः
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))
इसका मानदंड 0-100 है, 70 से अधिक सुपर-खरीद क्षेत्र है, 30 से कम सुपर-बिक्री क्षेत्र है।
इन दोनों संकेतकों के संयोजन से, जब आरएसआई 25 से कम है, तो वेवट्रेंड 60 से कम है, तो ओवरसोल्ड क्षेत्र के लिए, अधिक संकेत; जब आरएसआई 75 से अधिक है, तो वेवट्रेंड 60 से अधिक है, तो ओवरबॉय क्षेत्र के लिए, कम संकेत।
इस रणनीति के निम्नलिखित फायदे हैं:
इस रणनीति के कुछ जोखिम भी हैं:
क्या करें?
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
निर्णय सूचक को बदलने या निर्णय सूचक को बढ़ाने के लिए, संकेत की सटीकता को अनुकूलित करें। उदाहरण के लिए, निर्णय सूचक जैसे मैकड, केडी आदि को जोड़ना।
विभिन्न प्रकार के ट्रेडों को अनुकूलित करने के लिए पैरामीटर सेटिंग्स को अनुकूलित करें। जैसे कि चिकनाई चक्र को समायोजित करना और सर्वोत्तम पैरामीटर संयोजन की तलाश करना।
एकल हानि को प्रभावी ढंग से नियंत्रित करने के लिए एक स्टॉप लॉस ट्रैकिंग रणनीति में शामिल हों। जैसे कि शेष प्रतिशत स्टॉप लॉस, मोबाइल स्टॉप लॉस आदि।
अलग-अलग स्टॉकिंग रणनीतियों पर विचार करें। उदाहरण के लिए, मार्टिंगेल स्टॉकिंग्स का उपयोग करके स्टॉकिंग्स की एक निश्चित संख्या को बदलने के लिए।
अनुकूली सीमा पैरामीटर का अनुकूलन, निर्णय की सटीकता में सुधार के लिए सबसे अच्छा पैरामीटर की तलाश करना।
इस रणनीति की समग्र सोच स्पष्ट है, यह कीमतों के रुझानों को समझने के लिए उतार-चढ़ाव के संकेतकों का उपयोग करती है, और व्यापार के संकेतों को प्रभावी ढंग से फ़िल्टर करती है। रणनीति अनुकूलन के लिए जगह बड़ी है, इसे कई कोणों से सुधार किया जा सकता है, जिससे रणनीति अधिक स्थिर और विश्वसनीय हो। पैरामीटर को समायोजित करके अनुकूलन, विभिन्न व्यापार किस्मों के लिए अनुकूलन, आगे परीक्षण और परीक्षण के लायक है।
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's WaveTrender Strategy v1.0", shorttitle = "WaveTrender str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
showarr = input(true, defval = true, title = "Show Arrows")
fromyear = input(2018, defval = 2018, 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")
//RSI
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))
//WaveTrend
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)
//Body
body = abs(close - open)
abody = sma(body, 10)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
overs = rsi < 25 and wt < -60
overb = rsi > 75 and wt > 60
up1 = (strategy.position_size == 0 or close < strategy.position_avg_price) and overs and bar == -1
dn1 = (strategy.position_size == 0 or close > strategy.position_avg_price) and overb and bar == 1
exit = (strategy.position_size > 0 and overs == false) or (strategy.position_size < 0 and overb == false)
//Arrows
col = exit ? black : up1 or dn1 ? blue : na
needup = up1
needdn = dn1
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)
//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]
if up1
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dn1
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()