مومنٹم بریک آؤٹ آپٹیمائزیشن حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو تجارتی سگنل تیار کرتی ہے اور مومنٹم اشارے کی بنیاد پر اسٹاپ نقصان / منافع حاصل کرتی ہے۔ یہ قیمت اور حرکت پذیر اوسط کے مابین کراس اوورز کا حساب لگاتے ہوئے مارکیٹ کے رجحان کی سمت کا فیصلہ کرتی ہے ، اور اے ٹی آر اور لنریج چینل کا استعمال کرتے ہوئے متحرک اسٹاپ نقصان کا طریقہ کار تیار کرتی ہے۔ دریں اثنا ، حکمت عملی بہتر داخلے کی قیمتوں کے لئے سی ایم او اشارے کا استعمال کرتے ہوئے زیادہ خرید / فروخت کی سطح کی نشاندہی کرتی ہے۔
مجموعی حکمت عملی مستحکم رجحان کی پیروی اور خودکار اسٹاپ نقصان کے لئے متعدد اشارے کو یکجا کرتی ہے ، جس سے تجارتی خطرات پر قابو پانے کے ساتھ ہی مناسب تجارتی مواقع کو یقینی بنایا جاتا ہے۔
حکمت عملی میں اشارے کا ایک مجموعہ استعمال کیا جاتا ہے جس میں چلتی اوسط ، اے ٹی آر ، سی ایم او وغیرہ شامل ہیں۔ اشارے ایک دوسرے کی تکمیل کرتے ہیں اور رجحان کی سمت اور زیادہ خرید / فروخت والے علاقوں کے بارے میں زیادہ قابل اعتماد فیصلے فراہم کرتے ہیں۔
اے ٹی آر پر مبنی متحرک اسٹاپ نقصان مارکیٹ کی اتار چڑھاؤ کی بنیاد پر اسٹاپ نقصان کی سطح کو لچکدار طریقے سے ایڈجسٹ کرسکتا ہے ، جس سے ایک ہی تجارت کے نقصان کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔
حکمت عملی میں پوزیشن سائزنگ اور رسک فی صد کی ترتیبات فراہم کی گئی ہیں، جس میں فنڈز کے شدید اتار چڑھاؤ کو روکنے کے لئے خطرے میں سرمایہ کی زیادہ سے زیادہ فیصد کی وضاحت کی گئی ہے۔
یہ حکمت عملی تجارتی سگنلز کے 3 سیٹ پیش کرتی ہے۔ مختلف سگنل مجموعوں کو فعال کرکے ، بہتر بیک ٹیسٹ کے نتائج حاصل کیے جاسکتے ہیں۔
جب تمام سگنل مجموعے فعال ہوجاتے ہیں تو بہت زیادہ تجارت ہوسکتی ہے۔ اس سے صرف کچھ سگنل استعمال کرکے بچا جاسکتا ہے۔
ملٹی پیرامیٹر ماڈل پیرامیٹر کی اصلاح کو زیادہ پیچیدہ اور حساس بناتا ہے۔ پیرامیٹر کے بہترین امتزاج کے لئے وسیع پیمانے پر جانچ کی ضرورت ہوتی ہے۔
خالص قیمت / اسٹاپ نقصان کے بریک آؤٹ سگنلز کے ل the ، اسٹاپ نقصان کی حد وسیع ہے ، جس کی وجہ سے ایک ہی تجارت میں زیادہ نقصان اور کمی واقع ہوسکتی ہے۔ حرکت پذیر اوسط سگنلز کے ساتھ مل کر سفارش کی جاتی ہے۔
بہترین میچ تلاش کرنے کے لئے اوسط قسم / لمبائی، اے ٹی آر مدت، سی ایم او مدت جیسے پیرامیٹرز کو بہتر بنائیں.
بہترین استعمال کی حکمت عملی تلاش کرنے کے لئے صرف چلتی اوسط سگنل، سٹاپ نقصان سگنل، یا مجموعہ سگنل کا استعمال کرتے ہوئے کارکردگی کی جانچ کریں.
مختلف مارکیٹ کی اقسام میں موافقت کا تجزیہ کرنے کے لئے انڈیکس ، فاریکس ، خام مال کی مصنوعات میں حکمت عملی کا بیک ٹیسٹ کریں۔
یہ حکمت عملی رجحان کی نشاندہی ، اسٹاپ نقصان کی تعمیر ، اوور بکٹ / اوور سیلڈ کا پتہ لگانے کے لئے متعدد اشارے کو مربوط کرتی ہے۔ پیرامیٹرز اور سگنل کے امتزاج کو ایڈجسٹ کرکے ، اطمینان بخش رسک میٹرکس حاصل کیے جاسکتے ہیں۔ مجموعی نظام مزید براہ راست جانچ اور اصلاح کے لئے جامع اور قابل اعتماد ہے۔
/*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()