यह रणनीति ZZ संकेतक के मूल्य चैनल पर आधारित है, और ओवरहेड या खाली स्थिति स्थापित करने के लिए चैनल के ऊपरी सीमा को तोड़ने या चैनल के निचले सीमा को तोड़ने के लिए नीचे जाने के संकेतों का उपयोग करती है। यह रणनीति मूल्य चैनल के बाहर के रुझानों को पकड़ने की कोशिश करती है।
विशेष रूप से, यह रणनीति ZZ संकेतक के माध्यम से मूल्य चैनल की ऊपरी और निचली सीमा की गणना करती है। जब कीमत नीचे से ऊपरी सीमा को तोड़ती है, तो अधिक प्रवेश करती है; ऊपर से निचली सीमा को तोड़ने पर, खुले में प्रवेश करती है। अधिक खुले में जाने के बाद, स्टॉप लॉस का उपयोग करके, मूल्य चैनल की ऊपरी और निचली सीमा को स्टॉप लॉस के रूप में उपयोग किया जाता है। साथ ही, ट्रेडों की सीमा के भीतर, हर दिन बाजार के समापन से पहले स्टॉक को साफ करने के लिए एक रात के जोखिम से बचने के लिए एक दिनांक समय सीमा निर्धारित की जाती है।
इन जोखिमों को कम किया जा सकता है, जैसे कि चैनल की सीमा को कम करना, स्टॉप-लॉस रणनीतियों को अनुकूलित करना और प्रवृत्ति की ताकत का आकलन करना।
इस रणनीति के आधार पर मूल्य चैनल निर्णय प्रवृत्ति विस्फोट के बिंदुओं के लिए व्यापार. लाभ यह है कि व्यापार संकेत सरल है, रोकना स्पष्ट है, और संचालित करने के लिए आसान है; नुकसान यह है कि वहाँ दोनों बार-बार उछल और पूरी तरह से प्रवृत्ति का उपयोग नहीं कर रहे हैं. पैरामीटर अनुकूलन, रणनीति के संयोजन आदि के माध्यम से लाभ बनाए रखने के साथ-साथ उपरोक्त कमियों पर काबू पाने के लिए कर सकते हैं.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
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")
//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)
//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]
//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")
//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)
//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")