ای ایم اے کراس اے ڈی آر حکمت عملی ٹریڈنگ ویو پلیٹ فارم پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ اس میں رجحانات ، فلٹر سگنلز ، اور اسٹاپ نقصان اور منافع کی سطح کا تعین کرنے کے لئے متعدد تکنیکی اشارے شامل ہیں۔ حکمت عملی میں اہم رجحان کی نشاندہی کرنے کے لئے مختلف ادوار کے ساتھ دو توسیع پذیر متحرک اوسط (ای ایم اے) کا استعمال کیا جاتا ہے ، اوسط یومیہ رینج (اے ڈی آر) کو اتار چڑھاؤ فلٹر کے طور پر استعمال کیا جاتا ہے ، اور خطرہ-انعام تناسب کی بنیاد پر متحرک طور پر اسٹاپ نقصان اور منافع کی سطح طے کی جاتی ہے۔ اس کے علاوہ ، حکمت عملی میں رسک مینجمنٹ کے اقدامات شامل ہیں جیسے تجارتی وقت کی ونڈو ، بریک این اسٹاپس ، اور زیادہ سے زیادہ روزانہ نقصان کی حد ، جس کا مقصد رجحان کے مواقع کو حاصل کرنا ہے جبکہ نیچے کی طرف کے خطرے کو سختی سے کنٹرول کرنا ہے۔
ڈبل ای ایم اے کراس اوور: یہ حکمت عملی رجحان کا تعین کرنے کے لئے مختلف ادوار کے ساتھ دو ای ایم اے کا استعمال کرتی ہے۔ جب قلیل مدتی ای ایم اے طویل مدتی ای ایم اے سے تجاوز کرتا ہے تو ، اسے ایک اپ ٹرینڈ سمجھا جاتا ہے ، جس سے طویل سگنل پیدا ہوتا ہے۔ اس کے برعکس ، جب قلیل مدتی ای ایم اے طویل مدتی ای ایم اے سے نیچے عبور کرتا ہے تو ، اسے نیچے کا رجحان سمجھا جاتا ہے ، جس سے ایک مختصر سگنل پیدا ہوتا ہے۔
ADR Volatility Filter: کم اتار چڑھاؤ والے ماحول میں تجارتی سگنل پیدا کرنے سے بچنے کے لئے ، حکمت عملی میں اتار چڑھاؤ فلٹر کے طور پر ADR اشارے متعارف کرایا گیا ہے۔ پوزیشنوں کو صرف اس وقت کھولنے کی اجازت ہے جب ADR کی قیمت پہلے سے طے شدہ کم سے کم حد سے زیادہ ہو۔
ٹریڈنگ ٹائم ونڈو: یہ حکمت عملی صارفین کو روزانہ کی تجارت کے لئے آغاز اور اختتام کے اوقات طے کرنے کی اجازت دیتی ہے۔ تجارت صرف مخصوص وقت کی ونڈو کے اندر ہی انجام دی جاتی ہے ، جس سے غیر مائع یا انتہائی اتار چڑھاؤ والے ادوار سے بچنے میں مدد ملتی ہے۔
متحرک اسٹاپ نقصان اور منافع لینا: یہ حکمت عملی متحرک طور پر اسٹاپ نقصان اور منافع لینے کی قیمتوں کا حساب لگاتی ہے جو حالیہ N موم بتیوں کی اوسط اعلی اور کم قیمتوں پر مبنی ہے ، جس میں پہلے سے طے شدہ رسک - انعام کا تناسب شامل ہے۔ اس سے یہ یقینی بنتا ہے کہ ہر تجارت کا رسک - انعام قابل کنٹرول ہے۔
بریک اینڈ اسٹاپس: جب کوئی پوزیشن ایک خاص منافع کی سطح (صارف کے ذریعہ طے شدہ رسک - انعام کا تناسب) تک پہنچ جاتی ہے تو ، حکمت عملی اسٹاپ نقصان کو بریک اینڈ پوائنٹ (انٹری قیمت) پر منتقل کرتی ہے۔ اس سے پہلے ہی حاصل ہونے والے منافع کی حفاظت میں مدد ملتی ہے۔
زیادہ سے زیادہ روزانہ نقصان کی حد: ہر دن زیادہ سے زیادہ نقصان پر قابو پانے کے لئے ، حکمت عملی روزانہ نقصان کی حد طے کرتی ہے۔ ایک بار جب روزانہ نقصان اس حد تک پہنچ جاتا ہے تو ، حکمت عملی اگلے دن کھولنے تک تجارت بند کردیتی ہے۔
دن کے اختتام پر تمام پوزیشنوں کو بند کریں: قطع نظر اس سے قطع نظر کہ پوزیشنوں نے منافع یا سٹاپ نقصان کی سطحوں کو حاصل کیا ہے، حکمت عملی ہر ٹریڈنگ دن (مثال کے طور پر، 16:00) میں ایک مقررہ وقت پر تمام پوزیشنوں کو بند کرتی ہے تاکہ راتوں رات کے خطرے سے بچنے کے لۓ.
مضبوط رجحان کی پیروی کرنے کی صلاحیت: رجحانات کا تعین کرنے کے لئے دوہری ای ایم اے کراسورز کا استعمال کرتے ہوئے ، حکمت عملی مارکیٹ کے اہم رجحانات کو مؤثر طریقے سے پکڑ سکتی ہے ، اس طرح جیت کی شرح اور منافع کی صلاحیت کو بہتر بناتی ہے۔
اتار چڑھاؤ سے متعلق اچھی موافقت: اتار چڑھاؤ فلٹر کے طور پر اے ڈی آر اشارے کو متعارف کرانے سے کم اتار چڑھاؤ والے ماحول میں کثرت سے تجارت سے بچنے میں مدد ملتی ہے ، جو غلط سگنلز اور جھوٹے بریک آؤٹ کی وجہ سے ہونے والے نقصانات کو کم کرتی ہے۔
سخت رسک کنٹرول: اسٹریٹجی میں متعدد جہتوں سے رسک کنٹرول کے اقدامات مقرر کیے گئے ہیں جن میں متحرک سٹاپ نقصان اور منافع لینے ، توڑنے کے برابر رکنے ، اور زیادہ سے زیادہ روزانہ نقصان کی حدود شامل ہیں ، جس سے نیچے کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے اور رسک ایڈجسٹڈ منافع میں بہتری آتی ہے۔
لچکدار پیرامیٹرز کی ترتیبات: حکمت عملی کی مختلف پیرامیٹرز ، جیسے ای ایم اے کی مدت ، اے ڈی آر کی لمبائی ، رسک ریورڈ ریشو ، ٹریڈنگ ٹائم ونڈو وغیرہ ، صارف کی ترجیحات اور مارکیٹ کی خصوصیات کے مطابق لچکدار طریقے سے مقرر کی جاسکتی ہیں تاکہ حکمت عملی کی کارکردگی کو بہتر بنایا جاسکے۔
آٹومیشن کی اعلی ڈگری: حکمت عملی ٹریڈنگ ویو پلیٹ فارم پر مبنی ہے ، اور تجارتی منطق مکمل طور پر پروگرام کے ذریعہ عمل میں لائی جاتی ہے ، جس سے انسانی جذبات اور ذہنی فیصلوں کی مداخلت کم ہوجاتی ہے ، جو حکمت عملی کے طویل مدتی مستحکم آپریشن کے لئے موزوں ہے۔
پیرامیٹر کی اصلاح کا خطرہ: اگرچہ حکمت عملی کے پیرامیٹرز کو لچکدار طریقے سے ایڈجسٹ کیا جاسکتا ہے ، لیکن زیادہ سے زیادہ اصلاح سے اوور فٹنگ اور نمونے سے باہر کی کارکردگی خراب ہوسکتی ہے۔ لہذا ، پیرامیٹرز طے کرتے وقت ، حکمت عملی کی استحکام کو یقینی بنانے کے لئے کافی بیک ٹیسٹنگ اور تجزیہ کی ضرورت ہوتی ہے۔
اچانک واقعہ کا خطرہ: حکمت عملی بنیادی طور پر تکنیکی اشارے پر مبنی تجارت کرتی ہے اور کچھ اچانک اہم بنیادی واقعات جیسے پالیسی کی تبدیلیوں یا معاشی اعداد و شمار کے اہم اتار چڑھاؤ پر کافی ردعمل ظاہر نہیں کرسکتی ہے ، جس کی وجہ سے بڑے پیمانے پر کھپت ہوتی ہے۔
رجحان کی تبدیلی کا خطرہ: رجحان کی تبدیلی کے اہم ادوار کے دوران، دوہری ای ایم اے کراس اوور سگنل میں تاخیر ہوسکتی ہے، جس کی وجہ سے حکمت عملی پوزیشنوں کو قائم کرنے کے لئے بہترین وقت سے محروم ہوجاتی ہے یا رجحان کی تبدیلی کے آغاز میں نقصانات کا سامنا کرنا پڑتا ہے.
لیکویڈیٹی کا خطرہ: اگرچہ حکمت عملی تجارت کے وقت کی کھڑکی طے کرتی ہے ، اگر تجارت شدہ آلات کی لیکویڈیٹی خراب ہے تو ، اسے پھر بھی اس طرح کے خطرات کا سامنا کرنا پڑ سکتا ہے جیسے سلائپ اور تجارت میں تاخیر ، جو حکمت عملی کی کارکردگی کو متاثر کرتی ہے۔
تکنیکی اشارے کی ناکامی کا خطرہ: حکمت عملی تکنیکی اشارے پر بہت زیادہ انحصار کرتی ہے۔ اگر مارکیٹ کے حالات میں نمایاں تبدیلی آتی ہے ، جس کی وجہ سے اشارے اپنا اصل معنی کھو دیتے ہیں تو ، حکمت عملی کی تاثیر میں کمی واقع ہوسکتی ہے۔
زیادہ جہتی اشارے متعارف کروائیں۔ موجودہ دوہری ای ایم اے اور اے ڈی آر کی بنیاد پر ، سگنلز کی وشوسنییتا اور استحکام کو بہتر بنانے کے لئے زیادہ موثر تکنیکی اشارے ، جیسے ایم اے سی ڈی اور آر ایس آئی متعارف کرانے پر غور کریں۔
متحرک پیرامیٹر کی اصلاح: پیرامیٹر کی اصلاح کے لئے ایک ایسا طریقہ کار قائم کریں جو مارکیٹ کی تبدیلیوں کے مطابق مختلف مارکیٹ کی حالتوں (جیسے رجحانات یا جھولنے) کی بنیاد پر کلیدی حکمت عملی کے پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرے۔
بنیادی عوامل کو شامل کریں: کچھ اہم بنیادی اشارے ، جیسے معاشی اعداد و شمار اور پالیسی کی سمتوں پر مناسب غور کریں ، جو حکمت عملی کو مارکیٹ کے رجحانات کو بہتر طور پر سمجھنے اور بروقت طریقے سے نظام کے خطرات سے بچنے میں مدد کرسکتے ہیں۔
سٹاپ نقصان اور منافع لینے کے طریقہ کار کو بہتر بنائیں: موجودہ متحرک سٹاپ نقصان اور منافع لینے کی بنیاد پر اسٹاپ نقصان اور منافع لینے کے منطق کو مزید بہتر بنائیں ، جیسے منافع کو بہتر طور پر بچانے اور خطرات پر قابو پانے کے لئے ٹریلنگ اسٹاپ اور جزوی منافع لینے کا تعارف۔
متعدد آلات اور ٹائم فریم: حکمت عملی کو متعدد تجارتی آلات اور ٹائم فریم تک بڑھانا ، اور متنوع سرمایہ کاری اور ٹائم فریم کی اصلاح کے ذریعے حکمت عملی کی موافقت اور استحکام کو بہتر بنانا۔
ای ایم اے کراس اے ڈی آر حکمت عملی تکنیکی تجزیہ پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ یہ دوہری ای ایم اے کراس اوورز کے ذریعے رجحانات کا تعین کرتی ہے اور اتار چڑھاؤ کو فلٹر کرنے کے لئے اے ڈی آر اشارے کا استعمال کرتی ہے۔ حکمت عملی میں سخت رسک کنٹرول کے اقدامات بھی طے کیے جاتے ہیں ، بشمول متحرک اسٹاپ نقصان اور منافع حاصل کرنا ، توڑنے والے اسٹاپ ، اور نیچے کے خطرے کو کنٹرول کرنے کے لئے زیادہ سے زیادہ روزانہ نقصان کی حدود۔ اس حکمت عملی کے فوائد اس کی رجحان کی پیروی کرنے کی صلاحیت ، اتار چڑھاؤ کی اچھی موافقت ، سخت رسک کنٹرول ، لچکدار پیرامیٹر کی ترتیبات ، اور آٹومیشن کی اعلی ڈگری میں ہیں۔ تاہم ، اس میں کچھ خطرات بھی ہیں ، جیسے پیرامیٹر کی اصلاح کا خطرہ ، اچانک واقعہ کا خطرہ ، رجحان کے الٹ جانے کا خطرہ ، لیکویڈیٹی کا خطرہ ، اور تکنیکی اشارے کی ناکامی کا خطرہ۔ مستقبل میں ، حکمت عملی زیادہ عملی کے اشارے متعارف کرانے ، متحرک اصلاح ، بنیادی خطرات کو شامل کرنے ، اسٹاپ اور منافع کو بہتر بنانے
/*backtest start: 2024-02-26 00:00:00 end: 2024-03-27 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Sameh_Hussein //@version=5 strategy('EMA Cross ADR Strategy with Stats', overlay=true) // Adjustable Parameters shortEmaLength = input(10, title='Short EMA Length') longEmaLength = input(50, title='Long EMA Length') adrLength = input(14, title='ADR Length') riskRewardRatio = input(2.0, title='Risk/Reward Ratio') lookbackCandles = input(10, title='Lookback Candles for Stop Loss') startTime = input(0900, title='Start Time') endTime = input(1600, title='End Time') minAdrValue = input(10, title='Minimum ADR Value for Entry') breakEvenProfit = input.float(1.0, title='Break-Even Profit', minval=0.0) breakEvenRR = input.float(1.0, title='Break-Even Risk-Reward Ratio', minval=0.0) dailyLossLimit = input(-2000.0, title='Daily Loss Limit') // Exponential Moving Averages shortEma = ta.ema(close, shortEmaLength) longEma = ta.ema(close, longEmaLength) // Average Daily Range adr = ta.sma(ta.tr, adrLength) // Time Filter Function timeFilter() => true // Entry Conditions with ADR filter longCondition = ta.crossover(shortEma, longEma) and timeFilter() and adr > minAdrValue shortCondition = ta.crossunder(shortEma, longEma) and timeFilter() and adr > minAdrValue // Calculate the average low and average high of the previous 'lookbackCandles' candles averageLow = ta.sma(low, lookbackCandles) averageHigh = ta.sma(high, lookbackCandles) // Risk and Reward Calculation stopLossLong = averageLow takeProfitLong = close + (close - averageLow) * riskRewardRatio stopLossShort = averageHigh takeProfitShort = close - (averageHigh - close) * riskRewardRatio // Entry Control Variables var longEntryAllowed = true var shortEntryAllowed = true // Update entry price on trade execution var float entryPriceLong = na var float entryPriceShort = na if (strategy.position_size > 0) if (strategy.position_size[1] <= 0) entryPriceLong := strategy.opentrades.entry_price(strategy.opentrades - 1) else entryPriceLong := entryPriceLong else entryPriceLong := na if (strategy.position_size < 0) if (strategy.position_size[1] >= 0) entryPriceShort := strategy.opentrades.entry_price(strategy.opentrades - 1) else entryPriceShort := entryPriceShort else entryPriceShort := na // Adjust stop loss to break-even plus the defined profit when the specified risk-reward ratio is reached breakEvenTriggerLong = entryPriceLong + (entryPriceLong - stopLossLong) * breakEvenRR breakEvenTriggerShort = entryPriceShort - (stopLossShort - entryPriceShort) * breakEvenRR if (longEntryAllowed and close >= breakEvenTriggerLong) stopLossLong := entryPriceLong + breakEvenProfit if (shortEntryAllowed and close <= breakEvenTriggerShort) stopLossShort := entryPriceShort - breakEvenProfit // Close all trades at 1600 if (hour == 15 and minute == 59) strategy.close_all(comment='Close at 1600') // Define the daily loss variable and last trade day var float[] dailyLossArray = array.new_float(1, 0.0) var int[] lastTradeDayArray = array.new_int(1, na) // Function to update the daily loss updateDailyLoss() => _dailyLoss = array.get(dailyLossArray, 0) _lastTradeDay = array.get(lastTradeDayArray, 0) if na(_lastTradeDay) or dayofmonth != _lastTradeDay _dailyLoss := 0.0 array.set(lastTradeDayArray, 0, dayofmonth) if not na(strategy.closedtrades.entry_bar_index(strategy.closedtrades - 1)) _dailyLoss += strategy.closedtrades.profit(strategy.closedtrades - 1) array.set(dailyLossArray, 0, _dailyLoss) // Call the function to update the daily loss updateDailyLoss() // Execute Strategy if longCondition and longEntryAllowed strategy.entry('Long', strategy.long) strategy.exit('Take Profit/Stop Loss', 'Long', stop=stopLossLong, limit=takeProfitLong) longEntryAllowed := false if shortCondition and shortEntryAllowed strategy.entry('Short', strategy.short) strategy.exit('Take Profit/Stop Loss', 'Short', stop=stopLossShort, limit=takeProfitShort) shortEntryAllowed := false // Reset entry control variables on position close if strategy.position_size == 0 longEntryAllowed := true shortEntryAllowed := true // // Statistics // winRate = strategy.wintrades / strategy.closedtrades * 100 // totalTrades = strategy.closedtrades // averageProfit = strategy.grossprofit / strategy.wintrades // averageLoss = strategy.grossloss / strategy.losstrades // // Plotting // plot(shortEma, color=color.new(color.red, 0), title='Short EMA') // plot(longEma, color=color.new(color.blue, 0), title='Long EMA') // // Display Table // table statsTable = table.new(position=position.top_right, columns=2, rows=4, bgcolor=color.gray, border_width=1) // table.cell(statsTable, column=0, row=0, text='Win Rate (%)', bgcolor=color.blue) // table.cell(statsTable, column=1, row=0, text=str.tostring(winRate), bgcolor=color.blue) // table.cell(statsTable, column=0, row=1, text='Total Trades', bgcolor=color.blue) // table.cell(statsTable, column=1, row=1, text=str.tostring(totalTrades), bgcolor=color.blue) // table.cell(statsTable, column=0, row=2, text='Average Profit', bgcolor=color.blue) // table.cell(statsTable, column=1, row=2, text=str.tostring(averageProfit), bgcolor=color.blue) // table.cell(statsTable, column=0, row=3, text='Average Loss', bgcolor=color.blue) // table.cell(statsTable, column=1, row=3, text=str.tostring(averageLoss), bgcolor=color.blue)