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