ڈبل موونگ ایوریج ریورس اسٹریٹیجی ایک مقداری تجارتی حکمت عملی ہے جو قلیل مدتی اور طویل مدتی رجحانات کی نشاندہی کرنے کے لئے ڈبل موونگ ایوریجز کا استعمال کرتی ہے۔ یہ حکمت عملی 10 دن کی سادہ حرکت پذیر اوسط (ایس ایم اے) اور 200 دن کی ایس ایم اے کو مل کر ایک بنیادی طویل مدتی اپ ٹرینڈ کے اندر قلیل مدتی پل بیک پر سرمایہ کاری کرنے کے لئے استعمال کرتی ہے۔ اس میں رجحان کی پیروی اور رسک مینجمنٹ کے طریقہ کار بھی شامل ہیں۔
دوہری حرکت پذیر اوسط کی واپسی کی حکمت عملی مندرجہ ذیل مفروضوں پر مبنی ہے:
200 دن کی ایس ایم اے مارکیٹ کے غالب طویل مدتی رجحان کی نشاندہی کرتی ہے۔ جب قیمت 200 دن کی لائن سے اوپر ہوتی ہے تو ، یہ اس بات کی نشاندہی کرتی ہے کہ مارکیٹ طویل مدتی عروج پر ہے۔
10 دن کی ایس ایم اے قیمت میں قلیل مدتی پل بیک کی نشاندہی کرتی ہے۔ جب قیمت 10 دن کی لائن سے نیچے آجاتی ہے تو ، اس سے یہ ظاہر ہوتا ہے کہ عارضی پل بیک ہوا ہے۔
ایک جاری بُل مارکیٹ میں، کسی بھی قلیل مدتی واپسی کو خریدنے کے موقع کے طور پر دیکھا جا سکتا ہے تاکہ تیزی سے واپسی کو مؤثر طریقے سے پکڑا جا سکے۔
مندرجہ بالا مفروضوں کی بنیاد پر، تجارتی سگنل مندرجہ ذیل طور پر تیار کیے جاتے ہیں:
جب اختتامی قیمت 200 دن کے ایس ایم اے سے اوپر اور بیک وقت 10 دن کے ایس ایم اے سے نیچے عبور کرتی ہے تو ، یہ خریدنے کا اشارہ چالو کرتا ہے کیونکہ اس سے پتہ چلتا ہے کہ طویل مدتی رجحان مثبت رہتا ہے لیکن قلیل مدتی پل بیک واقع ہوا ہے۔
اگر طویل پوزیشن میں قیمت 10 دن کے ایس ایم اے سے اوپر کی طرف بڑھ جاتی ہے تو ، قلیل مدتی رجحان الٹ گیا ہے لہذا پوزیشن فوری طور پر بند کردی جائے گی۔ نیز ، اگر مارکیٹ میں کافی حد تک کمی واقع ہوتی ہے جس کی وجہ سے اسٹاپ نقصان کی خلاف ورزی ہوتی ہے تو ، پوزیشن بند ہوجائے گی۔
جب بھی کوئی بڑی کمی واقع ہوتی ہے (ایک پہلے سے طے شدہ حد سے تجاوز) ، یہ ایک مخالف سگنل کے طور پر ڈپ خریدنے کا موقع پیش کرتا ہے۔
اس ڈیزائن کے ساتھ، حکمت عملی کا مقصد سٹاپ نقصانات کا استعمال کرتے ہوئے خطرے کو کنٹرول کرتے ہوئے مسلسل اپ ٹرینڈز کے دوران تیزی سے snapbacks پر مؤثر طریقے سے سرمایہ کاری کرنا ہے.
دوہری حرکت پذیر اوسط کی واپسی کی حکمت عملی میں مندرجہ ذیل اہم فوائد ہیں:
اگرچہ یہ حکمت عملی عام طور پر موثر ہے ، لیکن اس کی مندرجہ ذیل حدود ہیں:
اس حکمت عملی میں مزید بہتری میں شامل ہیں:
خلاصہ یہ ہے کہ ، ڈبل موونگ ایوریج ریورس اسٹریٹیجی ایک انتہائی عملی نقطہ نظر ہے۔ یہ اسٹاپ نقصانات کے ساتھ جوڑے ہوئے موونگ ایوریج تجزیہ کا استعمال کرتے ہوئے پائیدار اپ ٹرینڈز کے دوران منافع بخش پل بیک دھندلا جانے کی اجازت دیتا ہے۔ یہ مارکیٹ کے نظام کا پتہ لگانے اور رسک کنٹرول کی صلاحیتوں کو بھی پیش کرتا ہے۔ مسلسل بہتری کے ساتھ ، یہ حکمت عملی متنوع کارکردگی فراہم کرنے کی مضبوط صلاحیت پیش کرتی ہے۔
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h basePeriod: 15m 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/ // © Gold_D_Roger //note: spreading 1 statement over multiple lines needs 1 apce + 1 tab | multi line function is 1 tab //Recommended tickers: SPY (D), QQQ (D) and big indexes, AAPL (4H) //@version=5 strategy("Davin's 10/200MA Pullback on SPY Strategy v2.0", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, // 10% of equity on each trade commission_type=strategy.commission.cash_per_contract, commission_value=0.1) //Insert your broker's rate, IB is 0.005USD or tiered //Best parameters // SPY D // Stop loss 0.15 // commission of 0.005 USD using Interactive brokers // Exit on lower close // Buy more when x% down --> 14% // DO NOT include stop condition using MA crossover // Get User Input i_ma1 = input.int(title="MA Length 1", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA 200") i_ma2 = input.int(title="MA Length 2", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA 10") i_ma3 = input.int(title="MA Length 3", defval=50, step=1, group="Strategy Parameters", tooltip="MA for crossover signals`") i_stopPercent = input.float(title="Stop Loss Percent", defval=0.15, step=0.01, group="Strategy Parameters", tooltip="Hard stop loss of 10%") i_startTime = input(title="Start filter", defval=timestamp("01 Jan 2013 13:30 +0000"), group="Time filter", tooltip="Start date and time to begin") i_endTime = input(title="End filter", defval=timestamp("01 Jan 2099 19:30 +0000"), group="Time filter", tooltip="End date and time to stop") i_lowerClose = input.bool(title="Exit on lower close", defval=true, group="Strategy Parameters", tooltip="Wait for lower close after above 10SMA before exiting") // optimise exit strat, boolean type creates tickbox type inputs i_contrarianBuyTheDip = input.bool(title="Buy whenever more than x% drawdown", defval=true, group="Strategy Parameters", tooltip="Buy the dip! Whenever x% or more drawdown on SPY") i_contrarianTrigger = input.int(title="Trigger % drop to buy the dip", defval=14, step=1, group="Strategy Parameters", tooltip="% drop to trigger contrarian Buy the Dip!") //14% to be best for SPY 1D //20% best for AMZN 1D i_stopByCrossover_MA2_3 = input.bool(title="Include stop condition using MA crossover", defval=false, group="Strategy Parameters", tooltip="Sell when crossover of MA2/1 happens") // Get indicator values ma1 = ta.sma(close,i_ma1) //param 1 ma2 = ta.sma(close,i_ma2) //param 2 ma3 = ta.sma(close,i_ma3) //param 3 ma_9 = ta.ema(close,9) //param 2 ma_20 = ta.ema(close,20) //param 3 // Check filter(s) f_dateFilter = true //make sure date entries are within acceptable range // Highest price of the prev 52 days: https://www.tradingcode.net/tradingview/largest-maximum-value/#:~:text=()%20versus%20ta.-,highest(),max()%20and%20ta. highest52 = ta.highest(high,52) overall_change = ((highest52 - close[0]) / highest52) * 100 // Check buy/sell conditions var float buyPrice = 0 //intialise buyPrice, this will change when we enter a trade ; float = decimal number data type 0.0 buyCondition = (close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter) or (strategy.position_size == 0 and i_contrarianBuyTheDip==true and overall_change > i_contrarianTrigger and f_dateFilter) // higher than 200sma, lower than short term ma (pullback) + avoid pyramiding positions sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1]) //check if we already in trade + close above 10MA; // third condition: EITHER i_lowerClose not turned on OR closing price has to be < previous candle's LOW [1] stopDistance = strategy.position_size > 0 ? ((buyPrice - close)/close) : na // check if in trade > calc % drop dist from entry, if not na stopPrice = strategy.position_size > 0 ? (buyPrice - (buyPrice * i_stopPercent)) : na // calc SL price if in trade, if not, na stopCondition = (strategy.position_size > 0 and stopDistance > i_stopPercent) or (strategy.position_size > 0 and (i_stopByCrossover_MA2_3==true and ma3 < ma1)) // Enter positions if buyCondition strategy.entry(id="Long", direction=strategy.long) //long only if buyCondition[1] // if buyCondition is true prev candle buyPrice := open // entry price = current bar opening price // Exit position if sellCondition or stopCondition strategy.close(id="Long", comment = "Exit" + (stopCondition ? "Stop loss=true" : "")) // if condition? "Value for true" : "value for false" buyPrice := na //reset buyPrice // Plot plot(buyPrice, color=color.lime, style=plot.style_linebr) plot(stopPrice, color=color.red, style=plot.style_linebr, offset = -1) plot(ma1, color=color.blue) //defval=200 plot(ma2, color=color.white) //defval=10 plot(ma3, color=color.yellow) // defval=50