منافع بڑھانے والا PMax

مصنف:چاؤ ژانگ، تاریخ: 2022-05-25 17:13:45
ٹیگز:ایس ایم اےای ایم اےڈبلیو ایم اےٹی ایم اےاے ٹی آرZLEMA

سب سے زیادہ اور سپر رجحان اشارے دونوں رجحان کے بعد کے نظام میں بہت اچھے ہیں لیکن اس کے برعکس ان کی کارکردگی زیادہ تر دوسرے اشارے کی طرح ضمنی مارکیٹ کے حالات میں روشن نہیں ہے.

منافع کو زیادہ سے زیادہ کرنے والا - پی میکس اس مسئلے کو حل کرنے کی کوشش کرتا ہے۔ پی میکس ایک اشارے میں MOST (موونگ اوسط ٹرینڈ چینجر) اور سپر ٹرینڈ (ATR قیمت کا پتہ لگانے) کے طاقتور پہلوؤں کو یکجا کرتا ہے۔

پی میکس کے بیک ٹسٹ اور اصلاح کے نتائج اس کے پیش رووں MOST اور SuperTrend کے مقابلے میں بہت بہتر ہیں۔ یہ ضمنی طور پر غلط سگنل کی تعداد کو کم کرتا ہے اور زیادہ قابل اعتماد تجارتی سگنل فراہم کرتا ہے۔

PMax رجحان کا تعین کرنا آسان ہے اور کسی بھی قسم کے بازاروں اور آلات میں استعمال کیا جاسکتا ہے۔ یہ دوبارہ پینٹ نہیں کرتا ہے۔

تین پیرامیٹرز کی طرف سے مقرر PMax اشارے میں پہلا پیرامیٹر ATR کی مدت / لمبائی ہے.

دوسرا پیرامیٹر اے ٹی آر کا ضرب ہے جو بلٹ میں چلتی اوسط سے فاصلے کی قدر طے کرنے کے لئے مفید ہوگا۔

میں ذاتی طور پر سوچتا ہوں کہ سب سے اہم پیرامیٹر چلتی اوسط لمبائی اور قسم ہے.

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

جیسے جیسے مدت بڑھتی جائے گی وہ چھوٹی چھوٹی رجحانات اور قیمتوں کے اقدامات کے لئے کم حساس ہو جائے گا.

اس طرح، آپ کی مدت کا انتخاب، آپ کی دلچسپی کے رجحانات میں سے کس قسم کے قریب سے متعلق ہو جائے گا.

ہم ایسے معاملات میں اپ ٹرینڈ کے اثر کے تحت ہیں جہاں چلتی اوسط PMax سے اوپر ہے؛ اس کے برعکس جب چلتی اوسط PMax سے نیچے ہے تو ، نیچے کی طرف رجحان کے اثر و رسوخ کے تحت۔

بلٹ میں چلتی اوسط قسم ڈیفالٹ طور پر EMA کے طور پر مقرر لیکن صارفین کو منتخب کر سکتے ہیں 8 مختلف چلتی اوسط اقسام کی طرح:

SMA: سادہ چلتی اوسط ای ایم اے: ایکسپونینشل موونگ میڈیم ڈبلیو ایم اے: وزن شدہ چلتی اوسط ٹی ایم اے: مثلث حرکت پذیر اوسط وی اے آر: متغیر انڈیکس متحرک چلتی اوسط عرف VIDYA ڈبلیو ڈبلیو ایم اے: ویلس وائلڈر کا چلتا ہوا اوسط ZLEMA: زیرو لیگ ایکسپونینشل چلتی اوسط ٹی ایس ایف: حقیقی طاقت کی طاقت

ٹپ: ضمنی طور پر VAR ایک اچھا انتخاب ہو گا

آپ PMax ڈیفالٹ الارم اور خرید فروخت سگنل جیسے استعمال کر سکتے ہیں:

1- خریدیں جب حرکت پذیر اوسط PMax سے اوپر گزرتا ہے فروخت کریں جب حرکت پذیر اوسط PMax سے نیچے گزرتا ہے

2- خریدیں جب قیمتیں PMax لائن سے اوپر کودتی ہیں۔ فروخت کریں جب قیمتیں PMax لائن سے نیچے جائیں۔

بیک ٹسٹ

img


/*backtest
start: 2022-04-24 00:00:00
end: 2022-05-23 23:59:00
period: 15m
basePeriod: 5m
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

study("Profit Maximizer","PMax", overlay=true, format=format.price, precision=2, resolution="")
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)
Normalize= input(title="Normalize ATR ?", type=input.bool, defval=false)
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 = Normalize ? MAvg - Multiplier*atr/close : MAvg - Multiplier*atr
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = Normalize ? MAvg + Multiplier*atr/close : 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)


if buySignalk
    strategy.entry("Enter Long", strategy.long)
else if sellSignallk
    strategy.entry("Enter Short", strategy.short)

متعلقہ

مزید