موونگ ایوریج رینج اینگلفنگ اسٹریٹجی


تخلیق کی تاریخ: 2024-01-18 14:56:24 آخر میں ترمیم کریں: 2024-01-18 14:56:24
کاپی: 0 کلکس کی تعداد: 548
1
پر توجہ دیں
1617
پیروکار

موونگ ایوریج رینج اینگلفنگ اسٹریٹجی

جائزہ

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

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

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

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

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

طاقت کا تجزیہ

  • قیمتوں کے رجحانات کو مؤثر طریقے سے ٹریک کرنے کے لئے ڈبل منتقل اوسط نظام کا استعمال کرتے ہوئے
  • introdu متعدد معاون یکساں اور سمت فلٹرنگ شرائط ، جو شور کی تجارت کو کم کرسکتی ہیں
  • اسٹاپ نقصان کی متحرک حساب کتاب اور پوزیشنوں کو ایڈجسٹ کرنا ، ہر تجارت میں زیادہ سے زیادہ نقصان کو محدود کرنا
  • پوزیشن مینجمنٹ سسٹم منافع میں تیزی سے اضافہ کرنے کے قابل ہے جبکہ زیادہ سے زیادہ واپسی کو ایک مخصوص حد تک کنٹرول کیا جاتا ہے

خطرے کا تجزیہ

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

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

اصلاح کی سمت

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// This is a simple crossover Moving Average strategy, good for long term crypto trades. 
// It buys when the MA "X" crosses up the MA "Y", viceversa for shorts. 
// Both MAs are selectable from the Inputs section in the front panel. 
// There is also a Position Management option thats 
// sizes positions to have the same USD risk (using leverage) on each trade,
// based on the percentage distance to the stop loss level.
// If you turn this option on you will see how the profit 
// grows exponentially while the drawdown percentage almost remains the same.

strategy("4 MA Strat", overlay=true, pyramiding=1, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, 
     commission_value = 0.04, 
     initial_capital=100, 
     process_orders_on_close=false)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

//Inputs
PSMGMT=input(defval=false, title="Position Management")
risk_per_trade=input(defval=5, title="Risk Per Trade % (for PSMGMT)", step=0.5)*.01

//SL & TP Inputs
i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(10, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=0, step=1, title="SL Expander")

i_MAFilter=input(false, title="Use MA4 as Bull / Bear filter")

//MA Type Selector
MAtype = input(false, title="----------------MA Selector-----------------")
MA1Period = input(9, title="MA1 Period")
MA1Type = input(title="MA1 Type", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "ALMA"])
MA2Period = input(21, title="MA2 Period")
MA2Type = input(title="MA2 Type", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "ALMA"])
MA3Period = input(50, title="MA3 Period")
MA3Type = input(title="MA3 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "ALMA"])
MA4Period = input(100, title="MA4 Period")
MA4Type = input(title="MA4 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "ALMA"])

//MA Selector 
MA1 = if MA1Type == "SMA"
    sma(close, MA1Period)
else
    if MA1Type == "EMA"
        ema(close, MA1Period)
    else
        if MA1Type == "WMA"
            wma(close, MA1Period)
        else
            if MA1Type == "RMA"
                rma(close, MA1Period)
            else
                if MA1Type == "HMA"
                    hma(close, MA1Period)
                else
                    if MA1Type == "ALMA"
                        alma(close, MA1Period, 0.85, 6)
                    
MA2 = if MA2Type == "SMA"
    sma(close, MA2Period)
else
    if MA2Type == "EMA"
        ema(close, MA2Period)
    else
        if MA2Type == "WMA"
            wma(close, MA2Period)
        else
            if MA2Type == "RMA"
                rma(close, MA2Period)
            else
                if MA2Type == "HMA"
                    hma(close, MA2Period)
                else
                    if MA2Type == "ALMA"
                        alma(close, MA2Period, 0.85, 6)
                            
MA3 = if MA3Type == "SMA"
    sma(close, MA3Period)
else
    if MA3Type == "EMA"
        ema(close, MA3Period)
    else
        if MA3Type == "WMA"
            wma(close, MA3Period)
        else
            if MA3Type == "RMA"
                rma(close, MA3Period)
            else
                if MA3Type == "HMA"
                    hma(close, MA3Period)
                else
                    if MA3Type == "ALMA"
                        alma(close, MA3Period, 0.85, 6)
                    
MA4 = if MA4Type == "SMA"
    sma(close, MA4Period)
else
    if MA4Type == "EMA"
        ema(close, MA4Period)
    else
        if MA4Type == "WMA"
            wma(close, MA4Period)
        else
            if MA4Type == "RMA"
                rma(close, MA4Period)
            else
                if MA4Type == "HMA"
                    hma(close, MA4Period)
                else
                    if MA4Type == "ALMA"
                        alma(close, MA4Period, 0.85, 6)
                    
// X Y Logic
x=input(title="x", defval="close", options=["MA1", "MA2", "MA3", "MA4", "close"])
y=input(title="y", defval="MA1", options=["MA1", "MA2", "MA3", "MA4", "close"])

X = if x == "MA1"
    MA1
else
    if x == "MA2"
        MA2
    else
        if x == "MA3"
            MA3
        else
            if x == "MA4"
                MA4
            else
                if x == "close"
                    close
                    
Y = if y == "MA1"
    MA1
else
    if y == "MA2"
        MA2
    else
        if y == "MA3"
            MA3
        else
            if y == "MA4"
                MA4
            else
                if y == "close"
                    close

//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
SL= islong ? LSL : isshort ? SSL : na

//Position Management Calculations
capital=strategy.equity
distance_to_long_stop_loss=1-(LSL/strategy.position_avg_price)
distance_to_short_stop_loss=(SSL/strategy.position_avg_price)-1
PS=(capital*risk_per_trade)/distance_to_long_stop_loss
SPS=(capital*risk_per_trade)/distance_to_short_stop_loss
PSqty=PS/close
SPSqty=SPS/close

//Strategy Calculations
MAFilter=close > MA4
BUY = crossover(X , Y) 
SELL = crossunder(X , Y) 
BUY2 = crossover(X , Y) and MAFilter
SELL2 = crossunder(X , Y) and not MAFilter

//Entries
strategy.entry("long", true, qty=PSMGMT ? PSqty : na, when=not i_MAFilter ? BUY : BUY2)
strategy.entry("short", false, qty=PSMGMT ? SPSqty : na, when=not i_MAFilter ? SELL : SELL2)

//Exits
if i_SL //and SL != na
    strategy.exit("longexit", "long", stop=LSL)
    strategy.exit("shortexit", "short", stop=SSL)
if i_MAFilter
    strategy.close("long", when=SELL)
    strategy.close("short", when=BUY)


//Plots
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL")
plot(MA1, color=color.green, linewidth=1, title="MA1")
plot(MA2, color=color.yellow, linewidth=2, title="MA2")
plot(MA3, color=color.red, linewidth=3, title="MA3")
plot(MA4, color=color.white, linewidth=3, title="MA4")
plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Setup")
plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Setup")


//Debugging Plots
plot(LSL, transp=100, title="SwingLow")
plot(bought ? 1:0, transp=100, title="bought")
plot(PSqty, title="PSqty", transp=100)
plot(SPSqty, title="SPSqty", transp=100)
plot(PS, title="PS", transp=100)
plot(SPS, title="SPS", transp=100)
plot(distance_to_long_stop_loss, title="distance to LSL", transp=100)
plot(distance_to_short_stop_loss, title="distance to SSL", transp=100)
plot(capital, title="equity", transp=100)