وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ای ایم اے کراس اے ڈی آر حکمت عملی - سخت رسک مینجمنٹ کے ساتھ ایک کثیر جہتی تکنیکی اشارے پر مبنی تجارتی طریقہ

مصنف:چاؤ ژانگ، تاریخ: 2024-03-28 16:46:29
ٹیگز:

img

جائزہ

ای ایم اے کراس اے ڈی آر حکمت عملی ٹریڈنگ ویو پلیٹ فارم پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ اس میں رجحانات ، فلٹر سگنلز ، اور اسٹاپ نقصان اور منافع کی سطح کا تعین کرنے کے لئے متعدد تکنیکی اشارے شامل ہیں۔ حکمت عملی میں اہم رجحان کی نشاندہی کرنے کے لئے مختلف ادوار کے ساتھ دو توسیع پذیر متحرک اوسط (ای ایم اے) کا استعمال کیا جاتا ہے ، اوسط یومیہ رینج (اے ڈی آر) کو اتار چڑھاؤ فلٹر کے طور پر استعمال کیا جاتا ہے ، اور خطرہ-انعام تناسب کی بنیاد پر متحرک طور پر اسٹاپ نقصان اور منافع کی سطح طے کی جاتی ہے۔ اس کے علاوہ ، حکمت عملی میں رسک مینجمنٹ کے اقدامات شامل ہیں جیسے تجارتی وقت کی ونڈو ، بریک این اسٹاپس ، اور زیادہ سے زیادہ روزانہ نقصان کی حد ، جس کا مقصد رجحان کے مواقع کو حاصل کرنا ہے جبکہ نیچے کی طرف کے خطرے کو سختی سے کنٹرول کرنا ہے۔

حکمت عملی کے اصول

  1. ڈبل ای ایم اے کراس اوور: یہ حکمت عملی رجحان کا تعین کرنے کے لئے مختلف ادوار کے ساتھ دو ای ایم اے کا استعمال کرتی ہے۔ جب قلیل مدتی ای ایم اے طویل مدتی ای ایم اے سے تجاوز کرتا ہے تو ، اسے ایک اپ ٹرینڈ سمجھا جاتا ہے ، جس سے طویل سگنل پیدا ہوتا ہے۔ اس کے برعکس ، جب قلیل مدتی ای ایم اے طویل مدتی ای ایم اے سے نیچے عبور کرتا ہے تو ، اسے نیچے کا رجحان سمجھا جاتا ہے ، جس سے ایک مختصر سگنل پیدا ہوتا ہے۔

  2. ADR Volatility Filter: کم اتار چڑھاؤ والے ماحول میں تجارتی سگنل پیدا کرنے سے بچنے کے لئے ، حکمت عملی میں اتار چڑھاؤ فلٹر کے طور پر ADR اشارے متعارف کرایا گیا ہے۔ پوزیشنوں کو صرف اس وقت کھولنے کی اجازت ہے جب ADR کی قیمت پہلے سے طے شدہ کم سے کم حد سے زیادہ ہو۔

  3. ٹریڈنگ ٹائم ونڈو: یہ حکمت عملی صارفین کو روزانہ کی تجارت کے لئے آغاز اور اختتام کے اوقات طے کرنے کی اجازت دیتی ہے۔ تجارت صرف مخصوص وقت کی ونڈو کے اندر ہی انجام دی جاتی ہے ، جس سے غیر مائع یا انتہائی اتار چڑھاؤ والے ادوار سے بچنے میں مدد ملتی ہے۔

  4. متحرک اسٹاپ نقصان اور منافع لینا: یہ حکمت عملی متحرک طور پر اسٹاپ نقصان اور منافع لینے کی قیمتوں کا حساب لگاتی ہے جو حالیہ N موم بتیوں کی اوسط اعلی اور کم قیمتوں پر مبنی ہے ، جس میں پہلے سے طے شدہ رسک - انعام کا تناسب شامل ہے۔ اس سے یہ یقینی بنتا ہے کہ ہر تجارت کا رسک - انعام قابل کنٹرول ہے۔

  5. بریک اینڈ اسٹاپس: جب کوئی پوزیشن ایک خاص منافع کی سطح (صارف کے ذریعہ طے شدہ رسک - انعام کا تناسب) تک پہنچ جاتی ہے تو ، حکمت عملی اسٹاپ نقصان کو بریک اینڈ پوائنٹ (انٹری قیمت) پر منتقل کرتی ہے۔ اس سے پہلے ہی حاصل ہونے والے منافع کی حفاظت میں مدد ملتی ہے۔

  6. زیادہ سے زیادہ روزانہ نقصان کی حد: ہر دن زیادہ سے زیادہ نقصان پر قابو پانے کے لئے ، حکمت عملی روزانہ نقصان کی حد طے کرتی ہے۔ ایک بار جب روزانہ نقصان اس حد تک پہنچ جاتا ہے تو ، حکمت عملی اگلے دن کھولنے تک تجارت بند کردیتی ہے۔

  7. دن کے اختتام پر تمام پوزیشنوں کو بند کریں: قطع نظر اس سے قطع نظر کہ پوزیشنوں نے منافع یا سٹاپ نقصان کی سطحوں کو حاصل کیا ہے، حکمت عملی ہر ٹریڈنگ دن (مثال کے طور پر، 16:00) میں ایک مقررہ وقت پر تمام پوزیشنوں کو بند کرتی ہے تاکہ راتوں رات کے خطرے سے بچنے کے لۓ.

فوائد کا تجزیہ

  1. مضبوط رجحان کی پیروی کرنے کی صلاحیت: رجحانات کا تعین کرنے کے لئے دوہری ای ایم اے کراسورز کا استعمال کرتے ہوئے ، حکمت عملی مارکیٹ کے اہم رجحانات کو مؤثر طریقے سے پکڑ سکتی ہے ، اس طرح جیت کی شرح اور منافع کی صلاحیت کو بہتر بناتی ہے۔

  2. اتار چڑھاؤ سے متعلق اچھی موافقت: اتار چڑھاؤ فلٹر کے طور پر اے ڈی آر اشارے کو متعارف کرانے سے کم اتار چڑھاؤ والے ماحول میں کثرت سے تجارت سے بچنے میں مدد ملتی ہے ، جو غلط سگنلز اور جھوٹے بریک آؤٹ کی وجہ سے ہونے والے نقصانات کو کم کرتی ہے۔

  3. سخت رسک کنٹرول: اسٹریٹجی میں متعدد جہتوں سے رسک کنٹرول کے اقدامات مقرر کیے گئے ہیں جن میں متحرک سٹاپ نقصان اور منافع لینے ، توڑنے کے برابر رکنے ، اور زیادہ سے زیادہ روزانہ نقصان کی حدود شامل ہیں ، جس سے نیچے کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے اور رسک ایڈجسٹڈ منافع میں بہتری آتی ہے۔

  4. لچکدار پیرامیٹرز کی ترتیبات: حکمت عملی کی مختلف پیرامیٹرز ، جیسے ای ایم اے کی مدت ، اے ڈی آر کی لمبائی ، رسک ریورڈ ریشو ، ٹریڈنگ ٹائم ونڈو وغیرہ ، صارف کی ترجیحات اور مارکیٹ کی خصوصیات کے مطابق لچکدار طریقے سے مقرر کی جاسکتی ہیں تاکہ حکمت عملی کی کارکردگی کو بہتر بنایا جاسکے۔

  5. آٹومیشن کی اعلی ڈگری: حکمت عملی ٹریڈنگ ویو پلیٹ فارم پر مبنی ہے ، اور تجارتی منطق مکمل طور پر پروگرام کے ذریعہ عمل میں لائی جاتی ہے ، جس سے انسانی جذبات اور ذہنی فیصلوں کی مداخلت کم ہوجاتی ہے ، جو حکمت عملی کے طویل مدتی مستحکم آپریشن کے لئے موزوں ہے۔

خطرے کا تجزیہ

  1. پیرامیٹر کی اصلاح کا خطرہ: اگرچہ حکمت عملی کے پیرامیٹرز کو لچکدار طریقے سے ایڈجسٹ کیا جاسکتا ہے ، لیکن زیادہ سے زیادہ اصلاح سے اوور فٹنگ اور نمونے سے باہر کی کارکردگی خراب ہوسکتی ہے۔ لہذا ، پیرامیٹرز طے کرتے وقت ، حکمت عملی کی استحکام کو یقینی بنانے کے لئے کافی بیک ٹیسٹنگ اور تجزیہ کی ضرورت ہوتی ہے۔

  2. اچانک واقعہ کا خطرہ: حکمت عملی بنیادی طور پر تکنیکی اشارے پر مبنی تجارت کرتی ہے اور کچھ اچانک اہم بنیادی واقعات جیسے پالیسی کی تبدیلیوں یا معاشی اعداد و شمار کے اہم اتار چڑھاؤ پر کافی ردعمل ظاہر نہیں کرسکتی ہے ، جس کی وجہ سے بڑے پیمانے پر کھپت ہوتی ہے۔

  3. رجحان کی تبدیلی کا خطرہ: رجحان کی تبدیلی کے اہم ادوار کے دوران، دوہری ای ایم اے کراس اوور سگنل میں تاخیر ہوسکتی ہے، جس کی وجہ سے حکمت عملی پوزیشنوں کو قائم کرنے کے لئے بہترین وقت سے محروم ہوجاتی ہے یا رجحان کی تبدیلی کے آغاز میں نقصانات کا سامنا کرنا پڑتا ہے.

  4. لیکویڈیٹی کا خطرہ: اگرچہ حکمت عملی تجارت کے وقت کی کھڑکی طے کرتی ہے ، اگر تجارت شدہ آلات کی لیکویڈیٹی خراب ہے تو ، اسے پھر بھی اس طرح کے خطرات کا سامنا کرنا پڑ سکتا ہے جیسے سلائپ اور تجارت میں تاخیر ، جو حکمت عملی کی کارکردگی کو متاثر کرتی ہے۔

  5. تکنیکی اشارے کی ناکامی کا خطرہ: حکمت عملی تکنیکی اشارے پر بہت زیادہ انحصار کرتی ہے۔ اگر مارکیٹ کے حالات میں نمایاں تبدیلی آتی ہے ، جس کی وجہ سے اشارے اپنا اصل معنی کھو دیتے ہیں تو ، حکمت عملی کی تاثیر میں کمی واقع ہوسکتی ہے۔

اصلاح کی ہدایات

  1. زیادہ جہتی اشارے متعارف کروائیں۔ موجودہ دوہری ای ایم اے اور اے ڈی آر کی بنیاد پر ، سگنلز کی وشوسنییتا اور استحکام کو بہتر بنانے کے لئے زیادہ موثر تکنیکی اشارے ، جیسے ایم اے سی ڈی اور آر ایس آئی متعارف کرانے پر غور کریں۔

  2. متحرک پیرامیٹر کی اصلاح: پیرامیٹر کی اصلاح کے لئے ایک ایسا طریقہ کار قائم کریں جو مارکیٹ کی تبدیلیوں کے مطابق مختلف مارکیٹ کی حالتوں (جیسے رجحانات یا جھولنے) کی بنیاد پر کلیدی حکمت عملی کے پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرے۔

  3. بنیادی عوامل کو شامل کریں: کچھ اہم بنیادی اشارے ، جیسے معاشی اعداد و شمار اور پالیسی کی سمتوں پر مناسب غور کریں ، جو حکمت عملی کو مارکیٹ کے رجحانات کو بہتر طور پر سمجھنے اور بروقت طریقے سے نظام کے خطرات سے بچنے میں مدد کرسکتے ہیں۔

  4. سٹاپ نقصان اور منافع لینے کے طریقہ کار کو بہتر بنائیں: موجودہ متحرک سٹاپ نقصان اور منافع لینے کی بنیاد پر اسٹاپ نقصان اور منافع لینے کے منطق کو مزید بہتر بنائیں ، جیسے منافع کو بہتر طور پر بچانے اور خطرات پر قابو پانے کے لئے ٹریلنگ اسٹاپ اور جزوی منافع لینے کا تعارف۔

  5. متعدد آلات اور ٹائم فریم: حکمت عملی کو متعدد تجارتی آلات اور ٹائم فریم تک بڑھانا ، اور متنوع سرمایہ کاری اور ٹائم فریم کی اصلاح کے ذریعے حکمت عملی کی موافقت اور استحکام کو بہتر بنانا۔

خلاصہ

ای ایم اے کراس اے ڈی آر حکمت عملی تکنیکی تجزیہ پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ یہ دوہری ای ایم اے کراس اوورز کے ذریعے رجحانات کا تعین کرتی ہے اور اتار چڑھاؤ کو فلٹر کرنے کے لئے اے ڈی آر اشارے کا استعمال کرتی ہے۔ حکمت عملی میں سخت رسک کنٹرول کے اقدامات بھی طے کیے جاتے ہیں ، بشمول متحرک اسٹاپ نقصان اور منافع حاصل کرنا ، توڑنے والے اسٹاپ ، اور نیچے کے خطرے کو کنٹرول کرنے کے لئے زیادہ سے زیادہ روزانہ نقصان کی حدود۔ اس حکمت عملی کے فوائد اس کی رجحان کی پیروی کرنے کی صلاحیت ، اتار چڑھاؤ کی اچھی موافقت ، سخت رسک کنٹرول ، لچکدار پیرامیٹر کی ترتیبات ، اور آٹومیشن کی اعلی ڈگری میں ہیں۔ تاہم ، اس میں کچھ خطرات بھی ہیں ، جیسے پیرامیٹر کی اصلاح کا خطرہ ، اچانک واقعہ کا خطرہ ، رجحان کے الٹ جانے کا خطرہ ، لیکویڈیٹی کا خطرہ ، اور تکنیکی اشارے کی ناکامی کا خطرہ۔ مستقبل میں ، حکمت عملی زیادہ عملی کے اشارے متعارف کرانے ، متحرک اصلاح ، بنیادی خطرات کو شامل کرنے ، اسٹاپ اور منافع کو بہتر بنانے


/*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)


مزید