مومنٹم بریک آؤٹ موونگ ایوریج حکمت عملی ایک اسٹاک ٹریڈنگ حکمت عملی ہے جو مومنٹم اشارے کے ساتھ چلنے والی اوسط کراس اوور سگنلز کو جوڑتی ہے۔ اس حکمت عملی میں متعدد تکنیکی اشارے شامل ہیں جن میں ایکسپونینشل موونگ ایوریج (ای ایم اے) ، سادہ موونگ ایوریج (ایس ایم اے) ، موونگ ایوریج کنورجنس ڈائیورجنس (ایم اے سی ڈی) ، اور ایک ترمیم شدہ رشتہ دار طاقت انڈیکس (اسٹاک آر ایس آئی) شامل ہیں تاکہ طویل مدتی عروج کے رجحان کی تصدیق کرتے وقت خریدنے کے سگنل پیدا کیے جاسکیں۔ جب قلیل مدتی مومنٹم اشارے الٹ سگنل دکھاتے ہیں تو ، حکمت عملی منافع لیتی ہے۔
اس حکمت عملی کے اہم اجزاء یہ ہیں:
EMA/SMA کراس اوور: 9 پیریڈ ای ایم اے فاسٹ لائن 21 پیریڈ ای ایم اے سست لائن کے اوپر عبور کرتی ہے تاکہ خریدنے کا سگنل ٹرگر کیا جا سکے۔
ایم اے سی ڈی اشارے: MACD ہسٹوگرام کو اضافی تصدیق کے طور پر EMA/SMA کراس اوور سگنل کے ساتھ مل کر مثبت ہونے کی ضرورت ہے۔
اسٹاک آر ایس آئی اشارے: سگنل اس وقت ٹرگر ہوتے ہیں جب اسٹاک آر ایس آئی اووربوٹ کی سطح (80) سے اوپر یا اوور سیلڈ کی سطح (20) سے نیچے ہوتا ہے۔
بولنگر بینڈ: قیمت کو بینڈ کے اندر ہونے کی ضرورت ہے جہاں درمیانی بینڈ 20 پیریڈ ایس ایم اے ہے اور بینڈ کی چوڑائی دو معیاری انحراف ہے۔
نقصان کو روکیں اور منافع حاصل کریں: 14 پیریڈ اے ٹی آر کی بنیاد پر حساب لگایا گیا ہے۔
حکمت عملی میں خریدنے کے اشارے دینے کے لئے 3 اشارے میں سے کم از کم 2 کی ضرورت ہوتی ہے ، قیمت بولنگر بینڈ کے اندر ہے ، اور حتمی خریدنے کا اشارہ پیدا کرنے کے لئے طویل مدتی رجحان تیزی سے جاری رہتا ہے۔ یہ فروخت کا اشارہ دیتا ہے جب ایم اے سی ڈی ہسٹوگرام منفی ہوجاتا ہے اور اسٹاک آر ایس آئی زیادہ خریدنے والے علاقے میں داخل ہوتا ہے۔
اس حکمت عملی کی اہم طاقتیں یہ ہیں:
بیک ٹسٹ کے بہترین نتائج: متعدد ثابت شدہ اشارے بینچ مارک اور انفرادی اشارے سے بہتر کارکردگی کا باعث بنتے ہیں۔
بہتر پیرامیٹرز: اہم پیرامیٹرز جیسے ای ایم اے کے ادوار اور بولنگر بینڈ بہتر استحکام کے لیے بہتر بنائے گئے ہیں۔
خودکار سٹاپ نقصان/منافع لینے: بولنگر بینڈ اور اے ٹی آر بہتر رسک کنٹرول کے لیے اسٹاپ کی متحرک ایڈجسٹمنٹ کی اجازت دیتے ہیں۔
عمل میں لانا آسان: صاف کوڈ ڈھانچہ اور ڈیٹا تک آسان رسائی کا نتیجہ براہ راست عملی آپریشن ہے۔
اچھی کارکردگی کے باوجود، اہم خطرات میں شامل ہیں:
جھوٹے اشارے: غیر معمولی مارکیٹ میں اتار چڑھاؤ یا اشارے کی ناکامی غلط سگنل پیدا کرسکتی ہے۔ اس کے بعد طویل مدتی رجحان کو اضافی فلٹر کے طور پر شامل کیا جانا چاہئے۔
ناکافی پیرامیٹرز: ناقص پیرامیٹرز سے زیادہ کثرت سے تجارت یا ناکافی حساسیت پیدا ہوسکتی ہے۔ پیرامیٹرز کو مختلف مصنوعات اور مارکیٹ کے ماحول کے مطابق ایڈجسٹ کیا جانا چاہئے۔
غیر مناسب سٹاپ نقصان: ایک اسٹاپ نقصان جو بہت تنگ ہے اس میں قبل از وقت روکنے کا رجحان ہوتا ہے ، جبکہ ایک اسٹاپ نقصان جو بہت وسیع ہے اس کے نتیجے میں بہت زیادہ نقصانات ہوسکتے ہیں۔ اسٹاپ نقصان اور منافع حاصل کرنے کی سطح کے مابین مناسب توازن حاصل کرنا چاہئے۔
مذکورہ بالا خطرات سے نمٹنے کے لیے درج ذیل اقدامات کیے جا سکتے ہیں:
دستی مداخلت: غیر معمولی حالات میں، سگنلز کو دستی طور پر چیک کیا جاسکتا ہے، پیرامیٹرز کو دوبارہ ایڈجسٹ کیا جاسکتا ہے یا حکمت عملیوں کو عارضی طور پر روک دیا جاسکتا ہے.
پیرامیٹر کی اصلاح: جینیاتی الگورتھم جیسے زیادہ سائنسی اور معروضی طریقوں کو منظم اصلاح کے لئے استعمال کیا جاسکتا ہے۔
اتار چڑھاؤ سے ایڈجسٹ اسٹاپس: سٹاپ نقصان کی حدیں اتار چڑھاؤ کو شامل کرنے کے لئے اے ٹی آر کے 1-3 گنا مقرر کی جاسکتی ہیں۔
اسٹریٹیجی کو مندرجہ ذیل شعبوں میں مزید بہتر بنایا جاسکتا ہے:
زیادہ مضبوط سٹاپ نقصان کے طریقہ کار: ٹریلنگ سٹاپ نقصان یا چلتی اوسط کی بنیاد پر سٹاپ شامل کیا جا سکتا ہے.
حجم فلٹرز: غلط بریک آؤٹ سے بچنے کے لئے حجم کے اشارے شامل کرنا۔
متحرک پیرامیٹرز: خود کار طریقے سے پیرامیٹرز کو بہتر بنانا جیسے چلتی اوسط مدت اور بینڈ کی چوڑائی مارکیٹ کے بدلتے حالات کی بنیاد پر.
مشین لرننگ: LSTM، RNN اور دیگر الگورتھم پیرامیٹرز کی متحرک اصلاح کے قابل بناتے ہیں.
مومنٹم بریکآؤٹ موونگ ایوریج حکمت عملی متعدد تکنیکی اشارے کو یکجا کرنے کی طاقتوں پر فائدہ اٹھاتی ہے ، اور طویل اور قلیل مدتی تصدیق کے ساتھ مہذب منافع حاصل کیا ہے۔ نفاذ میں اچھے رسک کنٹرول کے طریقہ کار کے ساتھ ، اس حکمت عملی میں زیادہ مستقل الفا واپسی کے حصول کے لئے اسٹاپ نقصان کے طریقہ کار اور سگنل فلٹرنگ جیسے علاقوں میں مزید بہتری کی وسیع صلاحیت ہے۔
/*backtest start: 2022-11-20 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true) // Volatility volatility = ta.atr(14) // EMA/MA Crossover fast_length = 9 slow_length = 21 fast_ma = ta.ema(close, fast_length) slow_ma = ta.sma(close, slow_length) crossover_signal = ta.crossover(fast_ma, slow_ma) // MACD [macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9) macd_signal = crossover_signal and (macdHistogram > 0) // Bollinger Bands source = close basis = ta.sma(source, 20) upper = basis + 2 * ta.stdev(source, 20) lower = basis - 2 * ta.stdev(source, 20) // Fractal-based Support and Resistance levels isFractalHigh = high[2] < high[1] and high[1] > high[0] isFractalLow = low[2] > low[1] and low[1] < low[0] resistance = ta.valuewhen(isFractalHigh, high[1], 0) support = ta.valuewhen(isFractalLow, low[1], 0) // StockRSI length = 14 K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length)) D = ta.sma(K, 3) overbought = 80 oversold = 20 stockrsi_signal = ((K < D) and (K < oversold)) or ((K > D) and (K > overbought)) // Buy and sell conditions mandatory_buy_conditions = (crossover_signal ? 1 : 0) + (macd_signal ? 1 : 0) + (stockrsi_signal ? 1 : 0) // Long-term Trend Check long_term_ma = ta.sma(close, 200) long_term_bullish = close > long_term_ma long_term_bearish = close < long_term_ma // Plot the long-term MA for visual clarity plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1) // Simplified Buy and Sell conditions buy_condition = long_term_bullish and (mandatory_buy_conditions >= 2) and (close > lower) and (close < upper) sell_condition = (macdHistogram < 0) and (K > D) and (K > overbought) // Potential SL and TP based on volatility potential_SL = close - volatility potential_TP = close + 2 * volatility plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr) plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr) // ... (rest of your code above) // State variable to track if we're in a position, a counter for trades, and a delayed counter for plotting var bool inPosition = false var tradeCounter = 0 var tradeCounterDelayed = 0 // Declaration of the variable // Buy logic: Check if tradeCounter is 0 and the buy condition is met if tradeCounter == 0 and buy_condition strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP) inPosition := true tradeCounter := tradeCounter + 1 // Sell logic: Check if tradeCounter is 1, the sell condition is met, and we are in a position if tradeCounter == 1 and inPosition and sell_condition strategy.close("BUY") inPosition := false tradeCounter := tradeCounter - 1 // Update the delayed trade counter: tradeCounterDelayed := tradeCounter // Plotting bgcolor(buy_condition ? color.new(color.green, 90) : sell_condition ? color.new(color.red, 90) : na) plotshape(series=buy_condition and tradeCounterDelayed == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small) plotshape(series=sell_condition and tradeCounterDelayed == 1, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small) // ... (rest of your code if any)