مساوی لائن کراسنگ حکمت عملی ایک عام طور پر استعمال ہونے والی ٹریڈنگ حکمت عملی ہے جو چلتی مساوی لائن پر مبنی ہے۔ اس حکمت عملی میں تیزی سے چلنے والی مساوی لائن اور آہستہ چلنے والی مساوی لائن کا کراسنگ خرید و فروخت کے اشارے کے طور پر استعمال کیا جاتا ہے۔ جب تیز مساوی لائن نیچے سے سست مساوی لائن کو پار کرتی ہے تو اسے خریدنے کا اشارہ سمجھا جاتا ہے۔ جب تیز مساوی لائن اوپر سے نیچے سے سست مساوی لائن کو پار کرتی ہے تو اسے فروخت کرنے کا اشارہ سمجھا جاتا ہے۔ اس حکمت عملی میں 50 دن کی اوسط کو تیز مساوی لائن کے طور پر اور 200 دن کی اوسط کو سست مساوی لائن کے طور پر استعمال کیا جاتا ہے۔
اس حکمت عملی کا بنیادی منطق مساوی لائن تھیوری پر مبنی ہے۔ متحرک مساوی لائن قیمت کے اتار چڑھاؤ کو مؤثر طریقے سے ہموار کرنے اور قیمت کے رجحان کی عکاسی کرنے کے قابل ہے۔ تیز رفتار مساوی لائن قیمت میں ہونے والی تبدیلیوں کے لئے زیادہ حساس ہے ، اور اس رجحان کے موڑ کو پکڑ سکتی ہے۔ سست رفتار مساوی لائن قیمت میں ہونے والی تبدیلیوں کے لئے کم حساس ہے ، اور قلیل مدتی اتار چڑھاؤ کو فلٹر کرسکتی ہے۔ جب تیز رفتار مساوی لائن پر سست رفتار مساوی لائن سے تجاوز کرنا ، مختصر مدت کی قیمتوں میں اضافہ شروع ہوتا ہے ، تو یہ ایک کثیر جہتی رجحان میں داخل ہوتا ہے۔ جب تیز رفتار مساوی لائن نیچے سست رفتار مساوی لائن سے گزرتی ہے ، تو یہ مختصر مدت کی قیمتوں میں کمی شروع ہوتی ہے ، جو ہوائی رجحان میں داخل ہوتی ہے۔
خاص طور پر ، اس حکمت عملی نے پہلے 50 دن کی اوسط اور 200 دن کی اوسط لائن کی وضاحت کی۔ اس کے بعد ، ایک سے زیادہ داخلہ کی شرط کو تیز اوسط پر سست اوسط پر چلنے کے لئے مقرر کیا گیا ہے ، اور خالی سر داخلہ کی شرط کو تیز اوسط کے نیچے سست اوسط پر چلنے کے لئے مقرر کیا گیا ہے۔ تجارت کو اوورلیپ کرنے سے بچنے کے ل the ، حکمت عملی میں isEntry اور isExit علامتی مقامات کا استعمال کیا گیا ہے۔ جب داخلہ کی شرط پوری ہوجاتی ہے تو ، isEntry کو درست اور جب باہر کی شرط پوری ہوجاتی ہے تو ، isExit کو درست کے طور پر مقرر کیا جاتا ہے۔ صرف اس صورت میں ہی ایک سے زیادہ پوزیشن کھول دی جاتی ہے جب isEntry غلط ہے اور خریدنے کا اشارہ ہوتا ہے۔ اور صرف اس صورت میں ہی خالی سر پوزیشن کھول دی جاتی ہے جب IsExit غلط ہے اور فروخت کا اشارہ ہوتا ہے۔
اس کے علاوہ ، حکمت عملی میں اسٹاپ نقصان کا نقطہ بھی ترتیب دیا گیا ہے۔ صارف اسٹاپ نقصان کا فاصلہ ان پٹ فی صد کے ذریعہ ترتیب دے سکتا ہے۔ اسٹاپ اور اسٹاپ قیمتوں کا حساب داخلے کی قیمتوں میں فی صد کی تبدیلی کے مطابق کیا جاتا ہے۔ جب پوزیشن کی مقدار 0 سے زیادہ ہو تو ، اسٹاپ نقصان کی تعمیل کی جاتی ہے اور جب پوزیشن کی مقدار 0 سے کم ہو تو ، اسٹاپ نقصان کی تعمیل کی جاتی ہے۔
یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:
آپریشن سادہ اور آسان ہے۔ صرف یکساں کراسنگ پر انحصار کرکے تجارت کی جاسکتی ہے ، جو ابتدائی افراد کے لئے بہت موزوں ہے۔
واپسی کو کنٹرول کیا جاسکتا ہے ، جس میں ایک خاص خطرے کے انتظام کا طریقہ کار موجود ہے۔ متحرک اوسط قیمتوں میں مختصر مدت کے اتار چڑھاؤ کو مؤثر طریقے سے فلٹر کرنے اور بیعانہ سے بچنے کے قابل ہے۔
اپنی مرضی کے مطابق پیرامیٹرز ، لچکدار۔ صارف اپنے آپ کو اوسط پیرامیٹرز اور اسٹاپ اسٹاپ نقصان کے معیار کو ترتیب دے سکتا ہے ، حکمت عملی کو بہتر بنانے کے لئے پیرامیٹرز۔
واضح طور پر دکھائیں۔ حکمت عملی براہ راست چارٹ پر اہم اوسط لائن ، انٹری پوائنٹس ، اسٹاپ نقصان کے مقامات کو نقشہ کرتی ہے۔
توسیع پذیر۔ حکمت عملی کا فریم ورک مکمل ہے۔ حکمت عملی کو بہتر بنانے کے لئے صرف اہم تجارتی سگنل کو تبدیل کرنا ، اشارے شامل کرنا وغیرہ کی ضرورت ہے۔
اس حکمت عملی کے کچھ خطرات بھی ہیں:
مارکیٹ کے اچانک واقعات کی وجہ سے بڑے پیمانے پر تجارت ہوتی ہے ، جس کو روکا نہیں جاسکتا ہے۔ ریپڈ میڈین لائن قیمتوں میں ہونے والی تبدیلیوں کے لئے زیادہ حساس ہے ، اور اچانک واقعات کا مؤثر طریقے سے جواب نہیں دے سکتی ہے۔
زلزلے کے حالات میں آسانی سے پھنس جاتا ہے۔ اگر مارکیٹ طویل عرصے تک لرزتی ہے تو ، نقصانات کا اعادہ ہوگا۔
ٹرانزیکشن لاگت کو مدنظر نہیں رکھا گیا ہے۔ اصل ٹرانزیکشن میں فیس اور سلائڈ پوائنٹ کا نقصان منافع پر شدید اثر انداز ہوتا ہے۔
ریٹرننگ ڈیٹا فٹنس کا خطرہ۔ ریئل ٹائم حالات پیچیدہ اور متغیر ہیں ، ریٹرننگ کے نتائج حقیقی جنگ کی کارکردگی کی نمائندگی نہیں کرتے ہیں۔
اس کا حل کیا ہے؟
زیادہ لچکدار سٹاپ نقصان کے معیار کو مقرر کیا جا سکتا ہے، یا اضافی بریکسٹاپ نقصان کو شامل کیا جا سکتا ہے.
مناسب طریقے سے اوسط فاصلے کو بڑھانا ، تجارت کی تعدد کو کم کرنا ، یا سگنل کو فلٹر کرنے کے لئے دوسرے اشارے استعمال کرنا۔
اصل ٹرانزیکشن کی لاگت کو مدنظر رکھتے ہوئے ، زیادہ سے زیادہ اسٹاپ اسپیس کا تعین کریں۔
مارکیٹ کے ماحول میں ہونے والی تبدیلیوں کو پوری طرح سے مدنظر رکھا جائے ، پیرامیٹرز کو بہتر بنایا جائے اور آہستہ آہستہ کم سے کم موافقت کی جائے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
مختلف پیرامیٹرز کے مجموعے کی جانچ کریں ، بہترین پیرامیٹرز تلاش کریں۔ آپ دن کی جانچ کر سکتے ہیں ، پیرامیٹرز کا مجموعہ ، اور تیز رفتار اوسط وغیرہ۔
دوسرے اشارے کو شامل کریں تاکہ فلٹرنگ کی جا سکے تاکہ ہنگامہ خیز حالات میں غلط تجارت سے بچا جاسکے۔ مثال کے طور پر MACD ، KD وغیرہ۔
اسٹاپ اسٹاپ حکمت عملی کو بہتر بنانا ، زیادہ موثر رسک مینجمنٹ کے ل.۔ جیسے اسٹاپ ٹریکنگ ، اسٹاپ اسٹاپ لگانا وغیرہ
اپنے اسٹاک کا سائز بڑھانا ، فائدہ اٹھانا ، منافع کی گنجائش کو بڑھانا۔ لیکن خطرے پر قابو رکھنا۔
ٹھوس تجارت کے اخراجات کو مدنظر رکھتے ہوئے ، پیمائش کے پیرامیٹرز کو ایڈجسٹ اور بہتر بنائیں تاکہ حکمت عملی کے پیرامیٹرز کو حقیقی جنگ کے لئے موزوں بنایا جاسکے۔
اعداد و شمار کے استحکام کا اندازہ لگانے کے لئے اعداد و شمار کے استحکام کا اندازہ لگانا ، اعداد و شمار کے مماثلت کے خطرے کو کم کرنا ، استحکام کو بہتر بنانا۔
خلاصہ یہ ہے کہ ، اس یکساں کراس لائن حکمت عملی کا مجموعی نظریہ واضح ، آسان ہے ، اور مقدار کی تجارت کے لئے سیکھنے کے لئے موزوں ہے۔ تاہم ، اس حکمت عملی میں کچھ خطرات اور کمیاں بھی موجود ہیں ، جس میں پیرامیٹرز اور فلٹرز کو احتیاط سے بہتر بنانے کی ضرورت ہے ، اور مستحکم منافع حاصل کرنے کے لئے ٹھوس ڈسک ٹریڈنگ کے خطرات پر قابو پانے پر توجہ دی جائے گی۔ اس حکمت عملی کے فریم ورک میں بہت زیادہ توسیع پذیری ہے ، جس کی بنیاد پر صارفین کو جدت طرازی اور اصلاح کرنے کی اجازت دی جاسکتی ہے ، تاکہ وہ اپنی طرز کے مطابق تجارتی حکمت عملی تیار کرسکیں۔
/*backtest
start: 2023-10-02 00:00:00
end: 2023-10-09 00:00:00
period: 3m
basePeriod: 1m
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/
// © gjfsdrtytru
//@version=4
strategy("Backtest Engine", "Backtest", overlay=true, commission_type=strategy.commission.percent, commission_value=0.07, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD)
// Start code here...
fastMA = sma(close,50)
slowMA = sma(close,200)
plot(fastMA, "Fast MA", color.blue)
plot(slowMA, "Slow MA", color.red)
// Long Enrty/Exit
longCondition = crossover(fastMA,slowMA)
closeLong = crossover(slowMA,fastMA)
// Short Enrty/Exit
shortCondition = crossover(slowMA,fastMA)
closeShort = crossover(fastMA,slowMA)
// Bot web-link alert - {{strategy.order.comment}}
botLONG = "ENTRY LONG ALERT"
botCLOSELONG = "CLOSE LONG ALERT"
botSHORT = "ENTRY SHORT ALERT"
botCLOSESHORT = "CLOSE SHORT ALERT"
//////////////////////////////////////////////////////////////////
//////////////////////// BACKTEST ENGINE \\\\\\\\\\\\\\\\\\\\\\\\\
/////////////////// [NO USER INPUT REQUIRED] /////////////////////
//////////////////////////////////////////////////////////////////
// Time period
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(5, "Backtest Start Month")
testStartDay = input(11, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
periodLength = input(3650, "Backtest Period (days)", minval=0,tooltip="Days until strategy ends") * 86400000 // convert days into UNIX time
testPeriodStop = testPeriodStart + periodLength
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Convert Take profit and Stop loss to percentage
longTP = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options
longSL = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options
shortTP = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options
shortSL = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options
// 0% TP/SL = OFF (a value of 0 turns off TP/SL feature)
longProfitPerc = longTP == 0 ? 1000 : longTP
longStopPerc = longSL == 0 ? 1 : longSL
shortProfitPerc = shortTP == 0 ? 1 : shortTP
shortStopPerc = shortSL == 0 ? 1000 : shortSL
// Determine TP/SL price based on percentage given
longProfitPrice = strategy.position_avg_price * (1 + longProfitPerc)
longStopPrice = strategy.position_avg_price * (1 - longStopPerc)
shortProfitPrice = strategy.position_avg_price * (1 - shortProfitPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortStopPerc)
// Anti-overlap
isEntry_Long = false
isEntry_Long := nz(isEntry_Long[1], false)
isExit_Long = false
isExit_Long := nz(isExit_Long[1], false)
isEntry_Short = false
isEntry_Short := nz(isEntry_Short[1], false)
isExit_Short = false
isExit_Short := nz(isExit_Short[1], false)
entryLong = not isEntry_Long and longCondition
exitLong = not isExit_Long and closeLong
entryShort = not isEntry_Short and shortCondition
exitShort = not isExit_Short and closeShort
if (entryLong)
isEntry_Long := true
isExit_Long := false
if (exitLong)
isEntry_Long := false
isExit_Long := true
if (entryShort)
isEntry_Short := true
isExit_Short := false
if (exitShort)
isEntry_Short := false
isExit_Short := true
// Order Execution
if testPeriod()
if entryLong
strategy.entry(id="Long", long=true, when = entryLong, comment=botLONG) // {{strategy.order.comment}}
if entryShort
strategy.entry(id="Short", long=false, when = entryShort, comment=botSHORT) // {{strategy.order.comment}}
// TP/SL Execution
if (strategy.position_size > 0)
strategy.exit(id="Long SL/TP", from_entry="Long", limit=longProfitPrice, stop=longStopPrice)
strategy.close(id="Long", when=exitLong, comment=botCLOSELONG) // {{strategy.order.comment}}
if (strategy.position_size < 0)
strategy.exit(id="Short TP/SL", from_entry="Short", limit=shortProfitPrice, stop=shortStopPrice)
strategy.close(id="Short", when=exitShort, comment=botCLOSESHORT) // {{strategy.order.comment}}
// Draw Entry, TP and SL Levels for Long Positions
plot(strategy.position_size > 0 ? longTP == 0 ? na : longProfitPrice : na, style=plot.style_linebr, color=color.green, title="Long TP")
plot(strategy.position_size > 0 ? strategy.position_avg_price : na, style=plot.style_linebr, color=color.blue, title="Long Entry")
plot(strategy.position_size > 0 ? longSL == 0 ? na : longStopPrice : na, style=plot.style_linebr, color=color.red, title="Long SL")
// Draw Entry, TP and SL Levels for Short Positions
plot(strategy.position_size < 0 ? shortTP == 0 ? na : shortProfitPrice : na, style=plot.style_linebr, color=color.green, title="Short TP")
plot(strategy.position_size < 0 ? strategy.position_avg_price : na, style=plot.style_linebr, color=color.blue, title="Short Entry")
plot(strategy.position_size < 0 ? shortSL == 0 ? na : shortStopPrice : na, style=plot.style_linebr, color=color.red, title="Short SL")