PMax اشارے پر مبنی رجحان کی پیروی کرنے والی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-13 15:21:31
ٹیگز:

اس حکمت عملی کا نام PMax اشارے پر مبنی رجحان کی پیروی کی حکمت عملی ہے۔ یہ PMax اشارے کو ٹریڈنگ سگنل تیار کرنے کے لئے کلیدی حوالہ کے طور پر قیمت کے رجحان کی سمت اور اس کی حرکت پذیر اوسط لائن کا تعین کرنے کے لئے استعمال کرتا ہے۔

پی ایم ایکس اشارے میں سپورٹ / مزاحمت اشارے سپر ٹرینڈ اور رجحان کی تبدیلی کے اشارے ایم او ایس ٹی کی طاقت کو یکجا کیا گیا ہے۔ یہ اوسط حقیقی رینج (اے ٹی آر) کا استعمال کرتے ہوئے قیمت کے چینلز کی تعمیر کرتا ہے ، جس میں رجحان کی سمت کا فیصلہ کرنے کے لئے حرکت پذیر اوسط کے ساتھ مل کر ہوتا ہے۔

جب قیمت PMax لائن سے اوپر کی طرف بڑھتی ہے تو ، اس سے اوپر کی طرف رجحان کی تبدیلی کا اشارہ ہوتا ہے۔ جب قیمت PMax سے نیچے کی طرف بڑھتی ہے تو ، اس سے نیچے کی طرف رجحان کی تبدیلی کا اشارہ ہوتا ہے۔ PMax سے اوپر منتقل ہونے والی اوسط کراس اوور خرید سگنل پیدا کرتی ہے ، جبکہ اس سے نیچے کراس اوور فروخت سگنل پیدا کرتا ہے۔

حرکت پذیر اوسط پیرامیٹرز براہ راست رجحان کی حساسیت کو متاثر کرتے ہیں۔ مختصر مدت معمولی حرکتوں کے لئے زیادہ حساس ہوتی ہے۔ لمبی مدت صرف بڑے رجحانات کو پکڑتی ہے۔ لہذا پیرامیٹرز کو مارکیٹ کے مطابق اصلاح کی ضرورت ہے۔

اس حکمت عملی کا فائدہ یہ ہے کہ PMax رجحان کی تبدیلیوں کا پتہ لگانے میں حساس ہے۔ چلتی اوسط کے ساتھ مل کر فلٹرنگ سے درمیانی اور طویل مدتی رجحانات کے اہم الٹ پوائنٹس کی نشاندہی کرنے میں مدد ملتی ہے۔ لیکن اوور ٹریڈنگ سے گریز کیا جانا چاہئے۔

اختتام کے طور پر ، PMax اور چلتی اوسط کا امتزاج حکمت عملی کے بعد نسبتا mature پختہ رجحان تشکیل دیتا ہے۔ پیرامیٹر کی اصلاح کے ذریعے یہ مارکیٹ کی مختلف خصوصیات کے مطابق ڈھال سکتا ہے اور اہم سمت کے مواقع حاصل کرسکتا ہے۔ لیکن تاجروں کو ابھی بھی اصل حالات کے مطابق حکمت عملی کے پیرامیٹرز کو ایڈجسٹ کرنے میں لچک کی ضرورت ہے۔


/*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)


  

مزید