وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ضرب حرکت پذیر اوسط دو طرفہ تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-15 14:50:32
ٹیگز:

img

جائزہ

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

حکمت عملی کا اصول

اس حکمت عملی کا بنیادی اشارے ضرب متحرک اوسط لائن ہے۔ اشارے کے پیرامیٹرز میں شامل ہیں: اے ٹی آر کی مدت ، اے ٹی آر ضرب ، حرکت پذیر اوسط کی قسم اور لمبائی۔ اے ٹی آر کی قیمت مدت کے دوران اتار چڑھاؤ کی نمائندگی کرتی ہے۔ ضرب متحرک اوسط لائن اوسط قیمت کے برابر ہے جس میں مدت کے دوران اے ٹی آر ضرب اور اے ٹی آر کا مصنوعہ ہے۔ جب قیمت لائن سے اوپر ہوتی ہے تو ایک لمبا سگنل ہوتا ہے۔ جب قیمت لائن سے نیچے ہوتی ہے تو ایک مختصر سگنل ہوتا ہے۔

PMax اشارے سٹاپ نقصان یا منافع لینے کی قیمت کی نمائندگی کرتا ہے۔ یہ ATR کی قیمت اور رجحان کی سمت سے شمار کیا جاتا ہے۔ اوپر کی طرف ، PMax حرکت پذیر اوسط مائنس ATR ضارب ضرب ATR کے برابر ہے ، جو اسٹاپ نقصان لائن کے طور پر کام کرتا ہے۔ نیچے کی طرف ، PMax حرکت پذیر اوسط کے برابر ہے اور ATR ضارب ضرب ATR ، جو منافع لینے کی لائن کے طور پر کام کرتا ہے۔

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

فوائد کا تجزیہ

اس حکمت عملی کے فوائد:

  1. دو طرفہ تجارت کو اپنانے سے یہ تمام مارکیٹ کے حالات کو انتہائی شامل کرتا ہے۔

  2. ضرب حرکت پذیر اوسط کا اطلاق مستحکم اور قابل اعتماد تجارتی سگنل پیدا کرتا ہے۔

  3. سٹاپ نقصان / منافع لینے کے لئے PMax کے ساتھ، یہ مؤثر طریقے سے خطرے کو کنٹرول کرتا ہے.

  4. سایڈست سائیکل اور ضارب پیرامیٹرز اسے انتہائی موافقت پذیر بناتے ہیں۔

خطرے کا تجزیہ

کچھ خطرات بھی ہیں:

  1. غلط پیرامیٹرز کی ترتیبات whipsaw نقصانات کی قیادت کر سکتے ہیں.

  2. شارٹ خریدتے وقت لیوریج کی حدود پر دھیان دیں۔

  3. بلیک سوان واقعات سے بچنا مشکل ہے۔

حل:

  1. whipsaws کو کم کرنے کے لئے پیرامیٹرز کو بہتر بنائیں.

  2. ہوشیار طریقے سے لیورج کنٹرول کریں اور متنوع بنائیں.

  3. ATR ضارب کو بڑھانے کے لئے سٹاپ رینج کو بڑھانے کے.

اصلاح کی ہدایات

حکمت عملی کو مندرجہ ذیل طریقوں سے اپ گریڈ کیا جا سکتا ہے:

  1. مختلف مارکیٹوں اور سائیکلوں میں استحکام کی جانچ کریں۔

  2. خودکار طور پر پیرامیٹرز کو بہتر بنانے کے لیے مشین لرننگ کا اطلاق کریں۔

  3. گہری سیکھنے کی تکنیکوں کے ساتھ مارکیٹ کے نظام کا جائزہ لیں.

  4. فیصلوں کو بااختیار بنانے کے لئے مزید ڈیٹا ذرائع کو ضم کریں۔

خلاصہ

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


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © melihtuna
//developer: @KivancOzbilgic
//author: @KivancOzbilgic
//stretegy converter: @crypto_melih
//@version=4

strategy("Profit Maximizer Strategy Long-Short", shorttitle="PMax-Strategy", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000, currency=currency.USD, commission_value=0, commission_type=strategy.commission.percent)

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)
condition = input(title="Signal Type", defval="Only Crossing Signals", options=["Only Crossing Signals", "Only Price/Pmax Crossing Signals"])
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)
long_short = input(defval = false, title = "Long-Short", type=input.bool)
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)

if(condition=="Only Crossing Signals")
    strategy.entry("BUY", strategy.long, when = buySignalk)
else
    strategy.entry("BUY", strategy.long, when = buySignalc)

if(long_short)
    if(condition=="Only Crossing Signals")
        strategy.entry("SELL", strategy.short, when = sellSignallk)
    else
        strategy.entry("SELL", strategy.short, when = sellSignallc)
else
    if(condition=="Only Crossing Signals")
        strategy.close("BUY", when = sellSignallk)
    else
        strategy.close("BUY", when = sellSignallc)
    

    
    
    
  

مزید