یہ حکمت عملی سپر ٹرینڈ اشارے اور ٹریلنگ اسٹاپ نقصان کی بنیاد پر پوزیشنوں کو کھولتی اور بند کرتی ہے۔ یہ لمبی اور مختصر پوزیشنوں کو کھولنے اور بند کرنے کے لئے 4 انتباہات کا استعمال کرتی ہے ، اور ایک سپر ٹرینڈ حکمت عملی اپناتی ہے۔ یہ حکمت عملی خاص طور پر ٹریلنگ اسٹاپ نقصان کی فعالیت والے روبوٹس کے لئے ڈیزائن کی گئی ہے۔
اس حکمت عملی میں اوپری اور نچلے بینڈ کا حساب لگانے کے لئے اے ٹی آر اشارے کا استعمال کیا جاتا ہے۔ جب اختتامی قیمت اوپری بینڈ کو توڑتی ہے تو خرید کا اشارہ پیدا ہوتا ہے ، اور جب یہ نچلے بینڈ کو توڑتا ہے تو فروخت کا اشارہ پیدا ہوتا ہے۔ حکمت عملی رجحان کی سمت کا تعین کرنے کے لئے ایک سپر ٹرینڈ لائن کا بھی استعمال کرتی ہے۔ جب سپر ٹرینڈ لائن اوپر جاتی ہے تو ، یہ ایک بیل مارکیٹ کے آغاز کی نشاندہی کرتی ہے۔ جب یہ نیچے جاتی ہے تو ، یہ ریچھ مارکیٹ کے آغاز کی نشاندہی کرتی ہے۔ جب سگنل پیدا ہوتا ہے تو حکمت عملی پوزیشنیں کھولتی ہے ، اور ابتدائی اسٹاپ نقصان کی قیمت طے کرتی ہے۔ اس کے بعد یہ منافع میں مقفل ہونے اور ٹریلنگ اسٹاپ نقصان اثر کو حاصل کرنے کے لئے قیمت کی تبدیلیوں کی بنیاد پر اسٹاپ نقصان کی قیمت کو ایڈجسٹ کرتی ہے۔
اس حکمت عملی میں رجحان کی سمت کا تعین کرنے کے لئے سپر ٹرینڈ اشارے اور اسٹاپس کی ترتیب کے لئے اے ٹی آر اشارے کے فوائد کو یکجا کیا گیا ہے۔ یہ غلط بریک آؤٹس کو مؤثر طریقے سے فلٹر کرسکتا ہے۔ ٹریلنگ اسٹاپس منافع کو بہت اچھی طرح سے لاک کرسکتے ہیں اور ڈراؤونگ کو کم کرسکتے ہیں۔ اس کے علاوہ ، یہ حکمت عملی خاص طور پر روبوٹ کے لئے ڈیزائن کی گئی ہے ، جس سے خودکار تجارت ممکن ہے۔
سپر ٹرینڈ اشارے آسانی سے مزید غلط سگنل پیدا کرسکتے ہیں۔ جب اسٹاپ نقصان کی ایڈجسٹمنٹ کی حد بڑی ہوتی ہے تو ، اسٹاپ نقصان کی ہٹ ہونے کا امکان بڑھ جاتا ہے۔ اس کے علاوہ ، روبوٹ ٹریڈنگ کو بھی تکنیکی خطرات کا سامنا کرنا پڑتا ہے جیسے سرور کریش اور نیٹ ورک کی رکاوٹیں۔
غلط سگنلز کے امکان کو کم کرنے کے لئے ، اے ٹی آر پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے یا فلٹریشن کے لئے دوسرے اشارے شامل کیے جاسکتے ہیں۔ ٹریلنگ اسٹاپ رینج کو ایڈجسٹ کرتے وقت ، منافع اور خطرہ کو متوازن کرنے کی ضرورت ہے۔ اسی وقت ، تکنیکی خرابی کے خطرات سے بچاؤ کے لئے بیک اپ سرورز اور نیٹ ورک تیار کریں۔
ذیل میں کچھ ایسی سمتیں ہیں جن میں اس حکمت عملی کو بہتر بنایا جاسکتا ہے:
انٹری سگنلز کو فلٹر کرنے اور جھوٹے سگنلز سے بچنے کے لئے اشارے یا حالات شامل کریں۔ مثال کے طور پر ، MACD اشارے کو شامل کیا جاسکتا ہے۔
بہترین پیرامیٹرز تلاش کرنے کے لیے مختلف اے ٹی آر پیرامیٹرز کے مجموعوں کا تجربہ کریں۔
بہترین توازن نقطہ تلاش کرنے کے لئے پیچھے سٹاپ نقصان کی حد کو بہتر بنائیں.
نقصانات کے بیچ سٹاپ حاصل کرنے کے لئے مزید سٹاپ نقصان کی قیمتوں کو شامل کریں.
بنیادی اور اسٹینڈ بائی سرورز کے ساتھ ڈبل سرور فن تعمیر بنائیں جو مرکزی سرور کی ناکامی کے وقت تیزی سے سوئچ کرسکتے ہیں۔
یہ حکمت عملی نقصانات کے خودکار افتتاحی اور روکنے کے لئے سپر ٹرینڈ اشارے اور ٹریلنگ اسٹاپ نقصان کے فوائد کو مربوط کرتی ہے۔ براہ راست تجارت کے دوران اصلاح کی سمتوں میں بہتری کے اقدامات کے ساتھ مل کر ، یہ ایک بہت ہی عملی مقداری تجارتی حکمت عملی بن سکتی ہے۔
/*backtest start: 2023-11-18 00:00:00 end: 2023-12-18 00:00:00 period: 1h basePeriod: 15m 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/ // © arminomid1375 //@version=5 strategy('Mizar_BOT_super trend', overlay=true, default_qty_value=100, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=100, max_bars_back=4000) //===== INPUTS ==========================================================================// factor = input.float(4.5, title='ATR Factor', step=0.1,group = 'ATR') period = input.int(59, minval=1, maxval=100, title='ATR Period',group = 'ATR') up = (high + low) / 2 - factor * ta.atr(period) down = (high + low) / 2 + factor * ta.atr(period) trend_up = 0.0 trend_up := close[1] > trend_up[1] ? math.max(up, trend_up[1]) : up trend_down = 0.0 trend_down := close[1] < trend_down[1] ? math.min(down, trend_down[1]) : down trend = 0.0 trend := close > trend_down[1] ? 1 : close < trend_up[1] ? -1 : nz(trend[1], 1) tsl = trend == 1 ? trend_up : trend_down line_color = trend == 1 ? 'green' : 'red' long_signal = trend == 1 and trend[1] == -1 short_signal = trend == -1 and trend[1] == 1 background = true //ss = input.float(defval=15.0, minval=0.0, title=' stop loss %',group = 'stop loss') use_sl = input(title='trailing stop ?', defval=true,group = 'stop loss') initial_sl_pct = input.float(defval=15.0, minval=0.0, title='trailing stop %',group = 'stop loss') Tpactive1 = input(title='Take profit1 On/Off ?', defval=true, group='take profit') tp1percent = input.float(5.0, title='TP1 %', group='take profit') *100 tp1amt = input.int(10, title='TP1 Amount %', group='take profit') Tpactive2 = input(title='Take profit2 On/Off ?', defval=true, group='take profit') tp2percent = input.float(10, title='TP2 %', group='take profit') *100 tp2amt = input.int(15, title='TP2 Amount %', group='take profit') Tpactive3 = input(title='Take profit3 On/Off ?', defval=true, group='take profit') tp3percent = input.float(15, title='TP3 %', group='take profit')*100 tp3amt = input.int(20, title='TP3 Amount %', group='take profit') //===== TIMEFRAME ==========================================================================// from_month = input.int(defval=1, title='From Month', minval=1, maxval=12) from_day = input.int(defval=1, title='From Day', minval=1, maxval=31) from_year = input.int(defval=2019, title='From Year', minval=2017) to_month = input.int(defval=1, title='To Month', minval=1, maxval=12) to_day = input.int(defval=1, title='To Day', minval=1, maxval=31) to_year = input.int(defval=9999, title='To Year', minval=2017) start = timestamp(from_year, from_month, from_day, 00, 00) finish = timestamp(to_year, to_month, to_day, 23, 59) window() => time >= start and time <= finish ? true : false //===== PLOTS ==========================================================================// // Line line_plot = plot(tsl, color=trend == 1 ? color.green : color.red, linewidth=2, title='Trend Line') // Labels plotshape(long_signal and window() ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.normal, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) plotshape(short_signal and window() ? down : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.normal, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) // Circles plotshape(long_signal and window() ? up : na, title='Uptrend starts', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0)) plotshape(short_signal and window() ? down : na, title='Downtrend starts', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0)) // Background long_fill = background ? trend == 1 ? color.green : na : na short_fill = background ? trend == -1 ? color.red : na : na candle_plot = plot(ohlc4, title='Price Line', color=trend == 1 ? long_fill : short_fill, linewidth=2, transp=90) fill(candle_plot, line_plot, title='Long Background', color=long_fill, transp=90) fill(candle_plot, line_plot, title='Short Background', color=short_fill, transp=90) //===== GLOBAL ==========================================================================// var entry_price = 0.0 var updated_entry_price = 0.0 var sl_price = 0.0 longString = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box." longclose = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box." shortString = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box." shortclose = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box." longAlertMessage = input(title="Long Alert Message", defval="long", group="Alert Messages", tooltip=longString) longcloseAlertMessage = input(title="Long close Alert Message", defval="long", group="Alert Messages", tooltip=longclose) shortAlertMessage = input(title="Short Alert Message", defval="short", group="Alert Messages", tooltip=shortString) shortcloseAlertMessage = input(title="Short close Alert Message", defval="short", group="Alert Messages", tooltip=shortclose) has_open_trade() => strategy.position_size != 0 has_no_open_trade() => strategy.position_size == 0 is_long() => strategy.position_size > 0 ? true : false is_short() => strategy.position_size < 0 ? true : false plot(use_sl ? has_no_open_trade() ? close : sl_price : na, color=has_no_open_trade() ? na : color.blue, title='Stop Loss') strategy_close() => if is_long() strategy.close('Long') alert(longcloseAlertMessage) if is_short() strategy.close('Short') alert(shortcloseAlertMessage) strategy_long() => strategy.entry('Long', strategy.long) strategy_short() => strategy.entry('Short', strategy.short) sl_pct = initial_sl_pct if long_signal or is_long() and not(short_signal or is_short()) sl_pct := initial_sl_pct * -1 sl_pct //===== STRATEGY ==========================================================================// crossed_sl = false if is_long() and use_sl crossed_sl := close <= sl_price crossed_sl if is_short() and use_sl crossed_sl := close >= sl_price crossed_sl terminate_operation = window() and has_open_trade() and crossed_sl if terminate_operation and not(long_signal or short_signal) // Do not close position if trend is flipping anyways. entry_price := 0.0 updated_entry_price := entry_price sl_price := 0.0 strategy_close() start_operation = window() and (long_signal or short_signal) if start_operation entry_price := close updated_entry_price := entry_price sl_price := entry_price + entry_price * sl_pct / 100 if long_signal strategy_long() if Tpactive1==true strategy.exit('TPL1','Long', qty_percent=tp1amt,profit =tp1percent) alert(shortcloseAlertMessage) alert(longAlertMessage) if short_signal strategy_short() if Tpactive1==true strategy.exit('TPL1','Short', qty_percent=tp1amt,profit =tp1percent) alert(longcloseAlertMessage) alert(shortAlertMessage) //===== TRAILING ==========================================================================// if is_long() and use_sl strategy_pct = (close - updated_entry_price) / updated_entry_price * 100.00 if strategy_pct > 1 sl_pct += strategy_pct - 1.0 new_sl_price = updated_entry_price + updated_entry_price * sl_pct / 100 sl_price := math.max(sl_price, new_sl_price) updated_entry_price := sl_price updated_entry_price if is_short() and use_sl strategy_pct = (close - updated_entry_price) / updated_entry_price * 100.00 if strategy_pct < -1 sl_pct += strategy_pct + 1.0 new_sl_price = updated_entry_price + updated_entry_price * sl_pct / 100 sl_price := math.min(sl_price, new_sl_price) updated_entry_price := sl_price updated_entry_price