یہ ایک تجارتی حکمت عملی ہے جو تجارت میں داخل ہونے کے لئے مستقل اپ ٹرینڈ کے ساتھ ساتھ اوسط کراس اوور پیٹرن کا استعمال کرتی ہے۔ جب تیز رفتار ایم اے سست ایم اے سے تجاوز کرتا ہے تو ، ایک سنہری کراس اوور سگنل تیار ہوتا ہے۔ اگر کراس اوور کے بعد بھی اپ ٹرینڈ برقرار رہتا ہے تو ، ایک لمبی پوزیشن کھولی جاسکتی ہے۔ جب قیمت اسٹاپ نقصان یا منافع کی سطح تک پہنچ جاتی ہے تو ، پوزیشن کو اسٹاپ نقصان یا منافع حاصل کرنے کے لئے بند کیا جاسکتا ہے۔
یہ حکمت عملی بنیادی طور پر انٹری سگنلز کے لئے حرکت پذیر اوسط کراس اوور پر مبنی ہے۔ خاص طور پر ، ایک تیز ایم اے (ایم اے 1) اور سست ایم اے (ایم اے 2) کی وضاحت کی گئی ہے۔ جب ایم اے 1 ایم اے 2 سے تجاوز کرتا ہے تو ، یہ ایک سگنل ہے جو طویل عرصے سے جاتا ہے۔
مختصر مدت کے کراس اوورز سے غلط سگنلز سے بچنے کے لئے ، ایک زاویہ کی حد شامل کی جاتی ہے ، تاکہ جب MA2 زاویہ مقررہ حد سے زیادہ ہو تو ہی خرید کا سگنل ٹرگر ہوجائے۔ اس سے کچھ غیر رجحان سازی مختصر مدت کی ریلیوں کو فلٹر کیا جاتا ہے۔
اس حکمت عملی میں اسٹاپ نقصان اور منافع بھی طے ہوتا ہے۔ اسٹاپ نقصان مارکیٹ میں اچانک الٹ جانے کی صورت میں نقصانات سے بچتا ہے ، جبکہ منافع میں منافع حاصل کرتا ہے۔ وہ انٹری قیمت سے فیصد کی حد کے طور پر طے ہوتے ہیں۔
جب قیمت منافع حاصل کرنے کے لئے ریلی ہوتی ہے تو ، حکمت عملی منافع حاصل کرنے کے لئے طویل بند ہوجائے گی۔ نیز ، اگر ریلی مضبوط ہے تو ، حکمت عملی اوسط واپسی کے لئے مختصر پوزیشن کھول دے گی۔
یہ ایک سادہ اور بدیہی رجحان کی پیروی کرنے والی حکمت عملی ہے۔ فوائد یہ ہیں:
کچھ خطرات ہیں جن کا نوٹ کرنا ضروری ہے:
حکمت عملی کو مزید بہتر بنانے کے کچھ طریقے:
مجموعی طور پر یہ حکمت عملی کے بعد ایک آسان اور عملی رجحان ہے۔ اس کے فوائد ہیں لیکن خطرات بھی ہیں۔ پیرامیٹر ٹوننگ ، زیادہ سے زیادہ اشارے ، اسٹاپ نقصان کی ترتیبات وغیرہ جیسے مزید اصلاحات اس میں بہتری لاسکتی ہیں۔ لیکن کوئی حکمت عملی نظام کے خطرے کو مکمل طور پر ختم نہیں کرتی ہے۔ خطرہ کا انتظام محتاط تجارت کی کلید ہے۔
/*backtest start: 2023-11-05 00:00:00 end: 2023-11-12 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //written by markjames12210@gmail.com //@version=5 strategy(title="MJ-Dual Moving Average",initial_capital=10000,overlay=false) // import TradingView/ZigZag/6 as ZigZagLib // // Create Zig Zag instance from user settings. // var zigZag = ZigZagLib.newInstance( // ZigZagLib.Settings.new( // input.float(5.0, "Price deviation for reversals (%)", 0.00001, 100.0, 0.5, "0.00001 - 100"), // input.int(10, "Pivot legs", 2), // input(#2962FF, "Line color"), // input(true, "Extend to last bar"), // input(true, "Display reversal price"), // input(true, "Display cumulative volume"), // input(true, "Display reversal price change", inline = "priceRev"), // input.string("Absolute", "", ["Absolute", "Percent"], inline = "priceRev"), // true) // ) // // Update 'zigZag' object on each bar with new pivots, volume, lines, labels. // zigZag.update() // // plot(zigZag.pivots, "zigZag") ma1= ta.sma(close,8) ma2= ta.sma(close,21) angleCriteria = input.int(title="Angle", defval=7, minval=1, maxval=13) i_lookback = input.int(2, "Angle Period", minval = 1) i_atrPeriod = input.int(10, "ATR Period", minval = 1) i_angleLevel = input.int(6, "Angle Level", minval = 1) i_maSource = input.source(close, "MA Source") TP = input.float(1, "TP", minval = 0.1) SL = input.float(1, "SL", minval = 0.1) f_angle(_src, _lookback, _atrPeriod) => rad2degree = 180 / 3.141592653589793238462643 //pi ang = rad2degree * math.atan((_src[0] - _src[_lookback]) / ta.atr(_atrPeriod)/_lookback) ang _angle = f_angle(ma2, i_lookback, i_atrPeriod) plot(ta.atr(i_atrPeriod), "atr") // plot(ma1,color=#FF0000) // plot(ma2,color=#00FF00) crosso=ta.crossover(ma1,ma2) crossu=ta.crossunder(ma1,ma2) _lookback = 15 f_somethingHappened(_cond, _lookback) => bool _crossed = false for i = 1 to _lookback if _cond[i] _crossed := true _crossed longcrossed = f_somethingHappened(crosso,_lookback) shortcrossed = f_somethingHappened(crossu,_lookback) atr_factor = 1 atr = ta.atr(i_atrPeriod) e = atr * atr_factor afr = close afr := nz(afr[1], afr) atr_factoryHigh = close + e atr_factoryLow = close - e if atr_factoryLow > afr afr := atr_factoryLow if atr_factoryHigh < afr afr := atr_factoryHigh // plot(afr, "afr", display = display.data_window) // plot(atr_factoryHigh, "afr", color = color.yellow, display = display.all) // plot(atr_factoryLow, "afr", color = color.green, display = display.all) inLong() => strategy.position_size > 0 inShort() => strategy.position_size < 0 inZero() => not inLong() and not inShort() long = longcrossed and _angle > angleCriteria short= shortcrossed and _angle < -(angleCriteria) plotshape(long, "Buy", shape.arrowup, location.belowbar, color = #FF0000) plotshape(short, "Sell", shape.arrowdown, location.abovebar, color = #00FF00) var longTp = 0.0 var longSl = 0.0 var shortTp = 0.0 var shortSl = 0.0 [b_middle, b_high, b_low] = ta.bb(close, 20, 2) entry_price = strategy.opentrades.entry_price(0) if inZero() if short longTp := close * (1 + TP/100) longSl := close * (1 - SL/100) strategy.entry("LONG",strategy.long, comment = "tp:" + str.tostring(longTp) + " sl:" + str.tostring(longSl)) if long shortTp := close * (1 - TP/100) shortSl := close * (1 + SL/100) strategy.entry("SHORT",strategy.short, comment = "tp:" + str.tostring(shortTp) + " sl:" + str.tostring(shortSl)) if inLong() // if close - entry_price > close * 0.005 // longSl := entry_price + close * 0.001 if high > longTp strategy.close("LONG") if (close - open) > close * 0.014 shortTp := close * (1 - TP/100) shortSl := close * (1 + SL/100) strategy.entry("SHORT",strategy.short, comment = "tp:" + str.tostring(shortTp) + " sl:" + str.tostring(shortSl)) if close < longSl strategy.close("LONG") if open >= b_high and close >= b_high strategy.close("LONG") // if high > b_high and entry_price < high // strategy.close("LONG") if inShort() // if entry_price - close > close * 0.005 // shortSl := entry_price - close * 0.001 if low < shortTp strategy.close("SHORT") if (open - close) > close * 0.014 longTp := close * (1 + TP/100) longSl := close * (1 - SL/100) strategy.entry("LONG",strategy.long, comment = "tp:" + str.tostring(longTp) + " sl:" + str.tostring(longSl)) if close > shortSl strategy.close("SHORT") if open < b_low and close < b_low strategy.close("SHORT") // if low < b_low and entry_price > low // strategy.close("SHORT")