اتفاق سے ، میں اوپن سورس منافع بخش فاریکس حکمت عملی شیئر کر رہا ہوں۔ اتفاق سے ، کیونکہ اس کا مقصد خالصتا educational تعلیمی مواد ہونا تھا۔ کچھ دن پہلے ٹریڈنگ ویو نے پائن اسکرپٹ سے متحرک اقدار کی ایک بہت ہی طاقتور خصوصیت جاری کی جس کی اب الرٹس میں گزرنے کی اجازت ہے۔ اور ٹریڈنگ کنیکٹر کی بدولت ، انہیں دنیا کے کسی بھی بروکر کے ایم ٹی 4 یا ایم ٹی 5 پلیٹ فارم میں فوری طور پر عملدرآمد کیا جاسکتا ہے۔ تو ہاں - ٹریڈنگ کنیکٹر انڈیکس اور اجناس کے ساتھ بھی کام کرتا ہے۔
اس EURUSD 6h حکمت عملی کا منطق بہت آسان ہے - یہ اسٹوکاسٹک کراس اوورز پر مبنی ہے جس میں اسٹاپ نقصان حالیہ محور نقطہ کے تحت طے ہوتا ہے۔ انتباہات میں متحرک اقدار کی اجازت کی بدولت جراحی کی درستگی کے ساتھ اسٹاپ نقصان کی ترتیب بالکل ممکن ہے۔ ان متحرک اقدار سے فائدہ اٹھانے کے لئے ٹریڈنگ کنیکٹر کو بھی اپ گریڈ کیا گیا ہے اور اب یہ پہلے سے حساب شدہ اسٹاپ نقصان ، منافع لینے کے ساتھ ساتھ اسٹاپ اور حد کے احکامات کے ساتھ تجارت کو انجام دینے کے قابل بناتا ہے۔
ٹریڈنگ کنیکٹر کی ایک اور تازہ خصوصیت ، صرف جزوی طور پر پوزیشنوں کو بند کرنا ہے - بشرطیکہ بروکر اس کی اجازت دے ، یقینا.۔ کسی پوزیشن کو اندراج کے وقت trade_id کی وضاحت کرنے کی ضرورت ہوتی ہے ، جس کا حوالہ جزوی بندش کے ساتھ مزید انتباہات میں دیا جاتا ہے۔ انتباہات کے نحو اور فعالیت کی تفصیلی تفصیلات ٹریڈنگ کنیکٹر کی ویب سائٹ پر مل سکتی ہیں۔ انتباہاتی پیغامات میں متحرک متغیرات کو شامل کرنے کا طریقہ انتباہ کی حالت میں اسکرپٹ کے آخر میں دیکھا جاسکتا ہے۔
اسٹریٹجی میں کمیشن کو بھی مدنظر رکھا گیا ہے۔
Slippage کو جان بوجھ کر 0 پر چھوڑ دیا جاتا ہے۔ ٹریڈنگ کنیکٹر کے 1 سیکنڈ سے کم ترسیل کے وقت کی وجہ سے ، slippage عملی طور پر غیر موجود ہے۔ یہ خاص طور پر اس صورت میں حاصل کیا جاسکتا ہے جب آپ VPS سرور استعمال کررہے ہو ، جو آپ کے بروکرز کے سرورز کے ساتھ ہی ڈیٹا سینٹر میں ہوسٹ کیا گیا ہو۔ میں اس طرح کا سیٹ اپ استعمال کر رہا ہوں ، یہ قابل عمل ہے۔ چھوٹا سلائپ اور پھیلاؤ پہلے ہی کمیشن کی قیمت میں شامل ہے۔
یہ حکمت عملی NON-REPAINTING ہے اور NO TRAILING-STOP یا کسی بھی دوسری خصوصیت کا استعمال کرتی ہے جو ٹریڈنگ ویو بیک ٹیسٹر میں ناقص معلوم ہوتی ہے۔ کیا یہ اس حکمت عملی کو گولیوں سے محفوظ اور 100٪ کامیابی کی ضمانت دیتا ہے؟ جہنم نہیں! بیک ٹیسٹنگ کا نمبر 1 اصول یاد رکھیں - اس سے کوئی فرق نہیں پڑتا ہے کہ اسکرپٹ کتنا منافع بخش اور اچھا لگ رہا ہے ، یہ صرف ماضی کے بارے میں بتاتا ہے۔ اسی حکمت عملی کو مستقبل میں اسی طرح کے نتائج ملنے کی صفر ضمانت ہے۔
اس اسکرپٹ کو مطالعہ میں تبدیل کرنے کے لئے تاکہ انتباہات تیار کیے جاسکیں ، 2 کام کریں:
یہ سکرپٹ صرف تعلیمی مقاصد کے لئے بنایا گیا تھا.
یہ یقینی طور پر مالی مشورہ نہیں ہے۔ جو بھی اس اسکرپٹ یا اس کے کسی بھی حصے کو کسی بھی طرح سے استعمال کرتا ہے ، اسے تجارت سے وابستہ اعلی خطرات سے آگاہ ہونا چاہئے۔
شکریہ @LucF اور @a.tesla2018 مجھے کوڈ کی اصلاحات کے ساتھ مدد کرنے کے لئے :)
بیک ٹسٹ
/*backtest start: 2022-04-23 00:00:00 end: 2022-05-22 23:59:00 period: 15m basePeriod: 5m 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/ // © Peter_O //@version=5 strategy(title='TradingView Alerts to MT4 MT5 Strategy example', commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=false, default_qty_value=100000, initial_capital=1000) //study(title="TradingView Alerts to MT4 MT5 Strategy example") //uncomment this line and comment previous one to make it a study producing alerts // // This script was created for educational purposes only. // It is showing how to use dynamic variables in TradingView alerts. // And how to execute them in Forex, indices and commodities markets TakeProfitDistance = input(400) TakePartialProfitDistance = input(150) // **** Entries logic **** { periodK = input.int(13, title='K', minval=1) periodD = input.int(3, title='D', minval=1) smoothK = input.int(4, title='Smooth', minval=1) k = ta.sma(ta.stoch(close, high, low, periodK), smoothK) d = ta.sma(k, periodD) plot(k, title='%K', color=color.new(color.blue, 0)) plot(d, title='%D', color=color.new(color.orange, 0)) h0 = hline(80) h1 = hline(20) fill(h0, h1, color=color.new(color.purple, 75)) GoLong = ta.crossover(k, d) and k < 80 GoShort = ta.crossunder(k, d) and k > 20 // } End of entries logic // **** Pivot-points and stop-loss logic **** { piv_high = ta.pivothigh(high, 1, 1) piv_low = ta.pivotlow(low, 1, 1) var float stoploss_long = low var float stoploss_short = high pl = ta.valuewhen(piv_low, piv_low, 0) ph = ta.valuewhen(piv_high, piv_high, 0) if GoLong stoploss_long := low < pl ? low : pl stoploss_long if GoShort stoploss_short := high > ph ? high : ph stoploss_short // } End of Pivot-points and stop-loss logic strategy.entry('Long', strategy.long, when=GoLong) strategy.exit('XPartLong', from_entry='Long', qty_percent=50, profit=TakePartialProfitDistance) strategy.exit('XLong', from_entry='Long', stop=stoploss_long, profit=TakeProfitDistance) strategy.entry('Short', strategy.short, when=GoShort) strategy.exit('XPartShort', from_entry='Short', qty_percent=50, profit=TakePartialProfitDistance) strategy.exit('XShort', from_entry='Short', stop=stoploss_short, profit=TakeProfitDistance) if GoLong alertsyntax_golong = 'long slprice=' + str.tostring(stoploss_long) + ' tp1=' + str.tostring(TakePartialProfitDistance) + ' part1=0.5 tp=' + str.tostring(TakeProfitDistance) alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close) if GoShort alertsyntax_goshort = 'short slprice=' + str.tostring(stoploss_short) + ' tp1=' + str.tostring(TakePartialProfitDistance) + ' part1=0.5 tp=' + str.tostring(TakeProfitDistance) alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close) if GoLong strategy.entry("Enter Long", strategy.long) else if GoShort strategy.entry("Enter Short", strategy.short)