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