इस रणनीति का नाम है
पीएमएक्स संकेतक समर्थन/प्रतिरोध संकेतक सुपरट्रेंड और प्रवृत्ति परिवर्तन संकेतक एमओएसटी की ताकत को जोड़ती है। यह प्रवृत्ति की दिशा का न्याय करने के लिए चलती औसत के साथ औसत सच्ची सीमा (एटीआर) का उपयोग करके मूल्य चैनलों का निर्माण करती है।
जब कीमत PMax रेखा से ऊपर जाती है, तो यह एक ऊपर की ओर रुझान उलटने का संकेत देती है। जब कीमत PMax से नीचे जाती है, तो यह एक डाउनट्रेंड रिवर्स को चिह्नित करती है। PMax से ऊपर चलती औसत क्रॉसओवर खरीद संकेत उत्पन्न करती है, जबकि नीचे क्रॉसओवर बिक्री संकेत उत्पन्न करता है।
चलती औसत पैरामीटर सीधे प्रवृत्ति संवेदनशीलता को प्रभावित करते हैं। छोटी अवधि छोटी चाल के लिए अधिक संवेदनशील होती है। लंबी अवधि केवल प्रमुख प्रवृत्तियों को पकड़ती है। इसलिए मापदंडों को बाजार-समायोजित अनुकूलन की आवश्यकता होती है।
इस रणनीति का लाभ यह है कि PMax रुझान परिवर्तनों का पता लगाने में संवेदनशील है। चलती औसत के साथ संयोजन मध्यम से दीर्घकालिक रुझानों के प्रमुख उलट बिंदुओं की पहचान करने के लिए फ़िल्टरिंग में मदद करता है। लेकिन ओवरट्रेडिंग से बचा जाना चाहिए।
निष्कर्ष के रूप में, पीएमएक्स और चलती औसत का संयोजन रणनीति के बाद एक अपेक्षाकृत परिपक्व प्रवृत्ति बनाता है। पैरामीटर अनुकूलन के माध्यम से यह विभिन्न बाजार विशेषताओं के अनुकूल हो सकता है और महत्वपूर्ण दिशात्मक अवसरों को पकड़ सकता है। लेकिन व्यापारियों को अभी भी वास्तविक परिस्थितियों के अनुसार रणनीति मापदंडों को समायोजित करने में लचीलापन की आवश्यकता होती है।
/*backtest start: 2023-09-05 00:00:00 end: 2023-09-12 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic //developer: @KivancOzbilgic //author: @KivancOzbilgic strategy("Profit Maximizer Strategy","PMax strat", overlay=true) src = input(hl2, title="Source") Periods = input(title="ATR Length", type=input.integer, defval=10) Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) mav = input(title="Moving Average Type", defval="EMA", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"]) length =input(10, "Moving Average Length", minval=1) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsupport = input(title="Show Moving Average?", type=input.bool, defval=true) showsignalsk = input(title="Show Crossing Signals?", type=input.bool, defval=true) showsignalsc = input(title="Show Price/Pmax Crossing Signals?", type=input.bool, defval=false) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 valpha=2/(length+1) vud1=src>src[1] ? src-src[1] : 0 vdd1=src<src[1] ? src[1]-src : 0 vUD=sum(vud1,9) vDD=sum(vdd1,9) vCMO=nz((vUD-vDD)/(vUD+vDD)) VAR=0.0 VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1]) wwalpha = 1/ length WWMA = 0.0 WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1]) zxLag = length/2==round(length/2) ? length/2 : (length - 1) / 2 zxEMAData = (src + (src - src[zxLag])) ZLEMA = ema(zxEMAData, length) lrc = linreg(src, length, 0) lrc1 = linreg(src,length,1) lrs = (lrc-lrc1) TSF = linreg(src, length, 0)+lrs getMA(src, length) => ma = 0.0 if mav == "SMA" ma := sma(src, length) ma if mav == "EMA" ma := ema(src, length) ma if mav == "WMA" ma := wma(src, length) ma if mav == "TMA" ma := sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) ma if mav == "VAR" ma := VAR ma if mav == "WWMA" ma := WWMA ma if mav == "ZLEMA" ma := ZLEMA ma if mav == "TSF" ma := TSF ma ma MAvg=getMA(src, length) longStop = MAvg - Multiplier*atr longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop shortStop = MAvg + Multiplier*atr shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir PMax = dir==1 ? longStop: shortStop plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Moving Avg Line") pALL=plot(PMax, color=color.red, linewidth=2, title="PMax", transp=0) alertcondition(cross(MAvg, PMax), title="Cross Alert", message="PMax - Moving Avg Crossing!") alertcondition(crossover(MAvg, PMax), title="Crossover Alarm", message="Moving Avg BUY SIGNAL!") alertcondition(crossunder(MAvg, PMax), title="Crossunder Alarm", message="Moving Avg SELL SIGNAL!") alertcondition(cross(src, PMax), title="Price Cross Alert", message="PMax - Price Crossing!") alertcondition(crossover(src, PMax), title="Price Crossover Alarm", message="PRICE OVER PMax - BUY SIGNAL!") alertcondition(crossunder(src, PMax), title="Price Crossunder Alarm", message="PRICE UNDER PMax - SELL SIGNAL!") buySignalk = crossover(MAvg, PMax) plotshape(buySignalk and showsignalsk ? PMax*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) sellSignallk = crossunder(MAvg, PMax) plotshape(sellSignallk and showsignalsk ? PMax*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) buySignalc = crossover(src, PMax) // plotshape(buySignalc and showsignalsc ? PMax*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=#0F18BF, textcolor=color.white, transp=0) sellSignallc = crossunder(src, PMax) // plotshape(sellSignallc and showsignalsc ? PMax*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=#0F18BF, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0,display=display.none) longFillColor = highlighting ? (MAvg>PMax ? color.green : na) : na shortFillColor = highlighting ? (MAvg<PMax ? color.red : na) : na fill(mPlot, pALL, title="UpTrend Highligter", color=longFillColor) fill(mPlot, pALL, title="DownTrend Highligter", color=shortFillColor) strategy.entry("long",1,when = buySignalk ) strategy.entry("short",0, when = sellSignallk)