
اس آرٹیکل میں ایک ایسی کوانٹومیٹک ٹریڈنگ حکمت عملی کا تعارف کیا گیا ہے جو ایک چلتی اوسط کراسنگ اصول پر مبنی ہے۔ اس حکمت عملی کو حکمت عملی کے سگنل کی خودکار تجارت کے لئے حکمت عملی کا استعمال کرتے ہوئے پائن اسکرپٹ کا استعمال کرتے ہوئے لکھا گیا ہے۔
اس حکمت عملی کا مرکز ایک چلتی اوسط ہے ، جس میں ایک خاص دورانیے میں اختتامی قیمتوں کی ایک سادہ چلتی اوسط کا حساب کتاب کرکے رجحان کا فیصلہ کرنے کی بنیاد ہے۔ جب قیمت اوسط لائن کو عبور کرتی ہے تو ایک سے زیادہ سگنل پیدا ہوتا ہے ، اور نیچے کی طرف سے ایک خالی سگنل پیدا ہوتا ہے۔ اس کے ساتھ ہی ، ایکسٹریم فنکشن کا استعمال کرتے ہوئے مسلسل بار بار آنے والے سگنل کو فلٹر کرنا ، سگنل کی معیار کو بہتر بناتا ہے۔ حکمت عملی موجودہ پوزیشن ہولڈنگ کی سمت اور قیمت اور اوسط لائن کی پوزیشن کے مابین تعلقات کے مطابق ، اسٹاپ نقصان کی قیمت کا تعین کرتی ہے ، ہر تجارت کے خطرے اور منافع کو کنٹرول کرتی ہے۔
حرکت پذیر اوسط کراسنگ ایک سادہ اور استعمال میں آسان ٹرینڈ ٹریکنگ طریقہ ہے جو مارکیٹ کے درمیانی اور طویل مدتی رجحانات کو مؤثر طریقے سے پکڑ سکتا ہے۔ معقول پیرامیٹرز کی ترتیب کے ذریعہ ، حکمت عملی رجحانات کے دوران مستحکم منافع حاصل کرسکتی ہے۔ اسٹاپ اور نقصان کی ترتیب واپسی کو کنٹرول کرنے اور منافع کے خطرے کو بڑھانے میں معاون ہے۔ حکمت عملی کا کوڈ منطق واضح ہے ، اس میں ماڈیولائزیشن ، پڑھنے کی اہلیت اور توسیع کی افادیت کا استعمال کیا گیا ہے۔ اس کے علاوہ ، حکمت عملی ڈان اے پی آئی پلیٹ فارم کو مربوط کرتی ہے ، جس سے سگنل کے لئے خود کار طریقے سے آرڈر کی تجارت کا احساس ہوتا ہے ، جس سے عملدرآمد کی کارکردگی میں اضافہ ہوتا ہے۔
حرکت پذیر اوسط بنیادی طور پر ایک پیچھے رہ جانے والا اشارے ہے ، جب مارکیٹ میں تبدیلی آتی ہے تو ، سگنل میں تاخیر ہوسکتی ہے ، جس کی وجہ سے بہترین تجارتی وقت کی غلطی ہوتی ہے یا جھوٹے سگنل پیدا ہوتے ہیں۔ غلط پیرامیٹرز کی ترتیب حکمت عملی کی کارکردگی کو متاثر کرتی ہے ، جس کو مختلف مارکیٹ کی خصوصیات اور ادوار کے مطابق بہتر بنانے کی ضرورت ہوتی ہے۔ مقررہ فیصد اسٹاپ نقصان مارکیٹ کی اتار چڑھاؤ کی شرح میں تبدیلیوں کے مطابق نہیں ہوسکتا ہے ، اور اس کے ساتھ ساتھ خطرہ بھی موجود ہے کہ پیرامیٹرز کی غلط ترتیب سے نقصان ہوتا ہے۔
ایک متحرک اوسط کراسنگ حکمت عملی ایک سادہ اور عملی مقداری تجارتی حکمت عملی ہے ، جو رجحانات کی پیروی اور اسٹاپ نقصان کے کنٹرول کے ذریعے رجحانات کی صورت حال میں منافع بخش ہوسکتی ہے۔ تاہم ، حکمت عملی خود میں ایک خاص حد ہے ، جس میں مارکیٹ کی خصوصیات اور خطرے کی ترجیحات کے مطابق اصلاح اور بہتری کی ضرورت ہے۔ عملی استعمال میں ، نظم و ضبط پر سختی سے عمل درآمد اور خطرے پر قابو پانے پر بھی توجہ دینے کی ضرورت ہے۔ حکمت عملی پروگرامنگ کو پائن اسکرپٹ جیسے پیشہ ورانہ زبانوں کا استعمال کرکے ، تجارتی پلیٹ فارم API کو مربوط کرکے حکمت عملی کے خودکار عملدرآمد کو حاصل کیا جاسکتا ہے۔
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
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/
// © syam-mohan-vs @ T7 - wwww.t7wealth.com www.t7trade.com
//This is an educational code done to describe the fundemantals of pine scritpting language and integration with Indian discount broker Dhan. This strategy is not tested or recommended for live trading.
//@version=5
strategy("Pine & Dhan - Moving Average Crossover Strategy", overlay=true)
//Remove excess signals
exrem(condition1, condition2) =>
temp = false
temp := na(temp[1]) ? false : not temp[1] and condition1 ? true : temp[1] and condition2 ? false : temp[1]
ta.change(temp) == true ? true : false
// Define MA period
ma_period = input(20, title = "MA Length")
// Define target and stop loss levels
target_percentage = input.float(title="Target Profit (%)", defval=2.0)
stop_loss_percentage = input.float(title="Stop Loss (%)", defval=1.0)
// Calculate the MA
ma = ta.sma(close, ma_period)
// Entry conditions
long_entry = close >= ma
short_entry = close < ma
// Calculate target and stop loss prices
target_price = long_entry ? strategy.position_avg_price + (close * (target_percentage / 100)) : strategy.position_avg_price - (close * (target_percentage / 100))
stop_loss_price = short_entry ? strategy.position_avg_price + (close * (stop_loss_percentage/ 100)) : strategy.position_avg_price - (close * (stop_loss_percentage / 100))
long_entry := exrem(long_entry,short_entry)
short_entry := exrem(short_entry,long_entry)
// Plot the MA
plot(ma, color=color.blue, linewidth=2, title="MA")
// Plot the entry and exit signals
plotshape(long_entry, style=shape.arrowup, color=color.green, size=size.small,location = location.belowbar)
plotshape(short_entry, style=shape.arrowdown, color=color.red, size=size.small,location = location.abovebar)
//Find absolute value of positon size to exit position properly
size = math.abs(strategy.position_size)
//Replace these four JSON strings with those generated from user Dhan account
long_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"I","sort_order":"1","price":"0"}]}'
long_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
// Submit orders based on signals
if(strategy.position_size == 0)
if long_entry
strategy.order("Long", strategy.long,alert_message=long_msg)
if short_entry
strategy.order("Short", strategy.short,alert_message=short_msg)
if(strategy.position_size > 0)
if(short_entry)
strategy.order("Short", strategy.short, qty = size, alert_message=short_msg)
else
strategy.exit("Long Exit", from_entry="Long", qty = size, stop=stop_loss_price, limit= target_price, alert_message=long_exit_msg)
if(strategy.position_size < 0)
if(long_entry)
strategy.order("Long", strategy.long, qty = size, alert_message=long_msg)
else
strategy.exit("Short Exit", from_entry="Short", qty = size, stop=stop_loss_price, limit= target_price, alert_message=short_exit_msg)