مومنٹم بریک آؤٹ آپٹمائزڈ ٹرینڈ فالونگ اسٹریٹجی


تخلیق کی تاریخ: 2024-01-17 16:44:30 آخر میں ترمیم کریں: 2024-01-17 16:44:30
کاپی: 0 کلکس کی تعداد: 622
1
پر توجہ دیں
1617
پیروکار

مومنٹم بریک آؤٹ آپٹمائزڈ ٹرینڈ فالونگ اسٹریٹجی

جائزہ

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

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

  • 1. رجحانات کی سمت کا تعین کرنے کے لئے تکنیکی اشارے کے طور پر قیمتوں کے حساب سے ZLEMA منتقل اوسط
  • 2. اے ٹی آر کے حساب سے لمبی پوزیشن کی قیمت اور مختصر پوزیشن کی قیمت
  • 3. سی ایم او انڈیکس کا حساب لگانا اوور بیئر اوور سیلنگ کے فاصلے کا تعین کرنے کے لئے ، اور اس کے ساتھ مل کر چلنے والی اوسط کے ساتھ مل کر آنے والے سگنل
  • 4. اے ٹی آر اور منتقل اوسط پر مبنی ٹریڈنگ سگنل کے تین سیٹوں کی تعمیر
    • متحرک اوسط اور سٹاپ کی قیمتوں کا ایک کراس سگنل
    • قیمت اور سٹاپ قیمت کے کراس سگنل
    • قیمت اور منتقل اوسط کے کراس سگنل
  • 5. مختلف قسم کے سگنل کو پیرامیٹرز کی ترتیب کے ذریعے چالو کرنے کا کنٹرول
  • 6. خطرے کا انتظام کرنے کے لئے خطرے کے فیکٹر اور پوزیشن کنٹرول قائم کریں

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

طاقت کا تجزیہ

متعدد اشارے کے مجموعے کا استعمال

اس حکمت عملی میں متعدد اشارے جیسے کہ چلتی اوسط ، اے ٹی آر ، سی ایم او وغیرہ کا ایک مجموعہ استعمال کیا گیا ہے ، جس سے اشارے کے مابین ایک مؤثر تکمیل پیدا ہوسکتی ہے ، جس سے رجحان کی سمت کی نشاندہی کی جاسکتی ہے اور اوور بیئر اوور سیل علاقوں کا فیصلہ زیادہ درست اور قابل اعتماد ہے۔

متحرک trailing stop

اے ٹی آر پر مبنی متحرک اسٹاپ نقصان کا طریقہ کار ، مارکیٹ میں اتار چڑھاؤ کے مطابق اسٹاپ نقصان کی پوزیشن کو لچکدار طریقے سے ایڈجسٹ کرسکتا ہے ، تاکہ انفرادی نقصان کو مؤثر طریقے سے کنٹرول کیا جاسکے۔

اچھی طرح سے خطرے کا انتظام

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

امیر ٹریڈنگ سگنل

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

خطرے کا تجزیہ

تجارت کی کثرت

سگنل کے تمام مجموعے کو فعال کرنے پر ، اعلی تجارتی تعدد کا سامنا کرنا پڑ سکتا ہے۔ اس سے بچنے کے لئے صرف سگنل کے کچھ مجموعے کو منتخب کرکے استعمال کیا جاسکتا ہے۔

اشارے پیرامیٹرز حساس

متعدد اشارے کے امتزاج کا استعمال پیرامیٹرز کے انتخاب کو زیادہ پیچیدہ ، پیرامیٹرز کی ترتیب کے لئے زیادہ حساس بناتا ہے ، جس میں پیرامیٹرز کے بہترین امتزاج کی جانچ پڑتال کی ضرورت ہوتی ہے۔

بریک سگنل کی واپسی کی شرح

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

اصلاح کی سمت

مختلف پیرامیٹرز کے مجموعے کی جانچ

متحرک اوسط کی قسم اور لمبائی کے پیرامیٹرز کو بہتر بنائیں۔ اے ٹی آر سائیکل پیرامیٹرز کو بہتر بنائیں۔ سی ایم او پیرامیٹرز کو بہتر بنائیں۔ پیرامیٹرز کا بہترین میچ تلاش کریں۔

بہتر سگنل استعمال کی حکمت عملی

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

مختلف پرجاتیوں پر کارکردگی کی جانچ

اسٹاک انڈیکس ، غیر ملکی کرنسی ، اور اجناس کی اقسام پر نظر ثانی کریں ، مارکیٹ کی قسم کے لئے حکمت عملی کی مناسبیت کا تجزیہ کریں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 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(title="Profit Maximizer PMax", overlay=true,
     pyramiding=0, initial_capital=1000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=0.025, slippage=2)


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="ZLEMA", 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)

usePosSize = input(title="Use Position Sizing?", type=input.bool, defval=true)
riskPerc   = input(title="Risk %", type=input.float, defval=0.5, step=0.25)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2019, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=1, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)
     
// Look if the close time of the current bar
// falls inside the date range
inDateRange = 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!")


// Calculate position size
riskEquity  = (riskPerc / 100) * strategy.equity
atrCurrency = (atr(20) * syminfo.pointvalue)
posSize     = usePosSize ? floor(riskEquity / atrCurrency) : 1

//Long
buySignalk = crossover(MAvg, PMax)
plotshape(buySignalk and showsignalsk ? PMax*0.995 : na, title="Buy", text="BuyL", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)


if(buySignalk and showsignalsk and inDateRange)
    strategy.entry(id="buySignalk", long=true, qty=posSize)
    
sellSignallk = crossunder(MAvg, PMax)
plotshape(sellSignallk and showsignalsk ? PMax*1.005 : na, title="Sell", text="SellL", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)

if(sellSignallk and showsignalsk and inDateRange)
    strategy.order(id="sellSignallk", long=false, qty=strategy.position_size)
    
//Short
buySignalc = crossover(src, PMax)
plotshape(buySignalc and showsignalsc ? PMax*0.995 : na, title="Buy", text="BuyS", location=location.absolute, style=shape.labelup, size=size.tiny, color=#0F18BF, textcolor=color.white, transp=0)

if(buySignalc and showsignalsc and inDateRange)
    strategy.entry(id="BuyS", long=false, qty=posSize)

sellSignallc = crossunder(src, PMax)
plotshape(sellSignallc and showsignalsc ? PMax*1.005 : na, title="Sell", text="SellS", location=location.absolute, style=shape.labeldown, size=size.tiny, color=#0F18BF, textcolor=color.white, transp=0)

if(sellSignallc and showsignalsc and inDateRange)
    strategy.order(id="SellS", long=true, qty=abs(strategy.position_size))

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)

// Exit open market position when date range ends
if (not inDateRange)
    strategy.close_all()