یہ ایک ای ٹی ایف الگورتھمک ٹریڈنگ حکمت عملی ہے جو اوسط حقیقی رینج (اے ٹی آر) اور قیمت بریک آؤٹ پر مبنی ہے۔ یہ اسٹاپ نقصان اور منافع کی سطح کا حساب لگانے کے لئے اے ٹی آر کا استعمال کرتا ہے ، اور جب قیمت کسی خاص مدت کی سب سے زیادہ یا سب سے کم قیمت سے ٹوٹ جاتی ہے تو لمبی یا مختصر پوزیشنیں کھولتا ہے۔
یہ حکمت عملی بنیادی طور پر مندرجہ ذیل اصولوں پر مبنی ہے:
قیمت کے رجحان اور سمت کا تعین کرنے کے لئے کسی خاص مدت کی سب سے زیادہ اور کم قیمتوں کا استعمال کریں (مثال کے طور پر 20 موم بتیاں) ۔ جب قیمت مدت کی سب سے زیادہ قیمت کو توڑتی ہے تو طویل ہوجائیں ، اور جب قیمت کم قیمت کو توڑتی ہے تو مختصر ہوجائیں۔
اسٹاپ نقصان کی سطح کو متحرک طور پر حساب کرنے کے لئے اے ٹی آر کا استعمال کریں۔ اسٹاپ نقصان کو اے ٹی آر مدت کی اے ٹی آر ویلیو کے فاصلے پر رکھا جاتا ہے جس میں انٹری قیمت سے ایک گتانک (مثال کے طور پر 2) ضرب ہوتا ہے۔
ٹیک منافع کی سطح کا تعین کرنے کے لئے اے ٹی آر کا استعمال کریں۔ ٹیک منافع کو اے ٹی آر مدت کی اے ٹی آر ویلیو کے فاصلے پر رکھا جاتا ہے جو انٹری قیمت سے ایک گتانک (مثال کے طور پر 1) سے ضرب ہوتا ہے۔
ٹریلر اسٹاپ نقصان کو ٹریک کرنے کے لئے اے ٹی آر ٹریلر ضرب استعمال کریں۔ جب قیمت ٹریلر اسٹاپ نقصان کی سطح کو ناقص سمت کی طرف توڑتی ہے تو اسٹاپ نقصان کے ساتھ پوزیشنیں بند کریں۔
یہ حکمت عملی سادہ اور قابل اعتماد ہے، کیونکہ اس میں قیمتوں کی نقل و حرکت کو بروقت پکڑنے کے لئے قیمت کی رجحان کی سمت دونوں پر غور کیا جاتا ہے، اور منافع لینے اور خطرے کے کنٹرول کے لئے نقصان کو روکنے اور منافع حاصل کرنے کا تعین کرتا ہے.
اس حکمت عملی کے فوائد میں شامل ہیں:
حکمت عملی کا منطق سادہ اور واضح ہے، سمجھنے اور لاگو کرنے میں آسان ہے.
اے ٹی آر کا استعمال کرتے ہوئے موافقت پذیر سٹاپ نقصان اور منافع لینے کی سطحوں کا حساب لگانے سے پوزیشن کے لچکدار سائز اور رسک کنٹرول میں مدد ملتی ہے۔
بریک آؤٹ کی حکمت عملی قیمتوں کے رجحانات کو پکڑنے میں اچھی ہے، جس سے اچھی واپسی ہوتی ہے۔
ٹریلر سٹاپ نقصان بروقت پوزیشن بند کر سکتے ہیں، زیادہ سے زیادہ نقصان سے بچنے.
یہ واضح رجحانات کے ساتھ مصنوعات کے لئے موزوں ہے، جیسے ای ٹی ایف اور اسٹاک.
اس حکمت عملی کے خطرات میں شامل ہیں:
قیمتوں کی توسیع کے دوران مزید غلط سگنل اور الٹ افتتاحی ہوسکتے ہیں۔
پیرامیٹرز کو غلط طریقے سے ایڈجسٹ کرنے سے قیمتوں کے رجحانات غائب ہو سکتے ہیں یا بہت زیادہ غیر ضروری تجارت ہوسکتی ہے۔
انتہائی پیرامیٹر اقدار کا نتیجہ بہت زیادہ جارحانہ یا بہت زیادہ محتاط اسٹاپ نقصان اور منافع لے سکتا ہے ، جو حکمت عملی کی منافع بخش پر اثر انداز ہوتا ہے۔
ای ٹی ایف کے بنیادی خطرات جیسے پالیسی اور پریمیم کے خطرات بھی حکمت عملی کی کارکردگی کو متاثر کرسکتے ہیں۔
متعلقہ حل:
اسٹریٹیجی کو مندرجہ ذیل پہلوؤں سے مزید بہتر بنایا جاسکتا ہے:
جھوٹے اشاروں کو فلٹر کرنے کے لئے اوسط حرکت پذیر جیسے اشارے شامل کریں.
مختلف ادوار اور مصنوعات کے لئے پیرامیٹرز کو خودکار طور پر ایڈجسٹ کرنے کے لئے موافقت پذیر پیرامیٹر اصلاح ماڈیول تیار کریں۔
بریک آؤٹ سگنل کا تعین کرنے کے لئے اگلی موم بتی کی اعلی اور کم قیمتوں کی پیش گوئی کے لئے مشین لرننگ ماڈل اپنانا۔
جھوٹے بریک آؤٹ سے بچنے کے لئے تجارتی حجم کے اوور فلو پر غور کریں۔
مختلف مصنوعات اور مارکیٹ کے نظام کے مطابق ابتدائی پوزیشن سائزنگ اور الاٹمنٹ فیصد کو بہتر بنائیں۔
اس حکمت عملی میں واضح اور آسان منطق ہے۔ بریک آؤٹ اور موافقت پذیر اے ٹی آر اسٹاپ نقصان / منافع حاصل کرنے کے بنیادی طریقہ کار خطرات کو مؤثر طریقے سے کنٹرول کرسکتے ہیں اور منافع میں تالا لگا سکتے ہیں۔ پیرامیٹر کی اصلاح اور زیادہ فلٹرز کو مربوط کرنے کے ذریعے منافع کے عوامل اور رسک کنٹرول کی صلاحیتوں کو مزید بڑھانا اسے منافع بخش اور بہتر مقدار کی حکمت عملی بنا سکتا ہے۔
/*backtest start: 2023-12-18 00:00:00 end: 2023-12-21 03:00:00 period: 1m 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/ // © FX_minds //@version=4 strategy("ETF tradedr", overlay=true, pyramiding=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //------------------------------ get user input lookback = input(title="HH LL lookback", type=input.integer, defval=20) ATR_periode = input(title="ATR period", type=input.integer, defval=14) ATR_SL_multiplier = input(title="ATR SL multiplier", type=input.float, defval=2) ATR_TP_multiplier = input(title="ATR TP multiplier", type=input.float, defval=1) trailing_SL_ATR_multiplier = input(title="ATR trailing SL multiplier", type=input.float, defval=3.5) lookback_trailing_SL = input(title="trailing SL lookback", type=input.integer, defval=4) max_sequel_trades = input(title="max sequel trades", type=input.float, defval=1) trade_long = input(title= "trade long ?", type=input.bool, defval=true) trade_short = input(title= "trade short ?", type=input.bool, defval=false) //------------------------------ determine entry conditions long_condition = barstate.isconfirmed and crossover(high, highest(high, lookback)[1]) short_condition = barstate.isconfirmed and crossunder(low, lowest(low, lookback)[1]) //------------------------------ count open long trades count_open_longs = 0 count_open_longs := nz(count_open_longs[1]) if (long_condition) count_open_longs := count_open_longs +1 //label.new(bar_index, low, tostring(count_open_longs, "#"), xloc.bar_index, yloc.belowbar, color.green, label.style_none, color.green, size.large) if (short_condition) count_open_longs := 0 //------------------------------ count open short trades count_open_shorts = 0 count_open_shorts := nz(count_open_shorts[1]) if (short_condition) count_open_shorts := count_open_shorts +1 //label.new(bar_index, low, tostring(count_open_shorts, "#"), xloc.bar_index, yloc.belowbar, color.red, label.style_none, color.red, size.large) if (long_condition) count_open_shorts := 0 //------------------------------ calculate entryprice entryprice_long = long_condition ? close : na entryprice_short = short_condition ? close : na //------------------------------ calculate SL & TP SL_distance = atr(ATR_periode) * ATR_SL_multiplier TP_distance = atr(ATR_periode) * ATR_TP_multiplier trailing_SL_distance = atr(ATR_periode) * trailing_SL_ATR_multiplier SL_long = entryprice_long - SL_distance SL_short = entryprice_short + SL_distance trailing_SL_short = lowest(close, lookback_trailing_SL) + trailing_SL_distance trailing_SL_long = highest(close, lookback_trailing_SL) - trailing_SL_distance trailing_SL_short_signal = crossover(high, trailing_SL_short[1]) trailing_SL_long_signal = crossunder(low, trailing_SL_long[1]) //------------------------------ plot entry price & SL plot(entryprice_long, style=plot.style_linebr, color=color.white) plot(SL_long, style=plot.style_linebr, color=color.red) plot(SL_short, style=plot.style_linebr, color=color.green) plot(trailing_SL_short, style=plot.style_linebr, color=color.red) plot(trailing_SL_long, style=plot.style_linebr, color=color.green) //------------------------------ submit entry orders if (long_condition) and (count_open_longs <= max_sequel_trades) and (trade_long == true) strategy.entry("Long" + tostring(count_open_longs, "#"), strategy.long) strategy.exit("SL Long"+ tostring(count_open_longs, "#"), from_entry="Long" + tostring(count_open_longs, "#"), stop=SL_long) if (short_condition) and (count_open_shorts <= max_sequel_trades) and (trade_short == true) strategy.entry("Short" + tostring(count_open_shorts, "#"), strategy.short) strategy.exit("SL Short" + tostring(count_open_shorts, "#"), from_entry="Short" + tostring(count_open_shorts, "#"), stop=SL_short) //------------------------------ submit exit conditions if (trailing_SL_long_signal) strategy.close("Long" + tostring(count_open_longs, "#")) strategy.close("Long" + tostring(count_open_longs-1, "#")) strategy.close("Long" + tostring(count_open_longs-2, "#")) strategy.close("Long" + tostring(count_open_longs-4, "#")) strategy.close("Long" + tostring(count_open_longs-5, "#")) strategy.close("Long" + tostring(count_open_longs-6, "#")) strategy.close("Long" + tostring(count_open_longs-7, "#")) strategy.close("Long" + tostring(count_open_longs-8, "#")) strategy.close("Long" + tostring(count_open_longs-9, "#")) if (trailing_SL_short_signal) strategy.close("Short" + tostring(count_open_shorts, "#")) strategy.close("Short" + tostring(count_open_shorts-1, "#")) strategy.close("Short" + tostring(count_open_shorts-2, "#")) strategy.close("Short" + tostring(count_open_shorts-3, "#")) strategy.close("Short" + tostring(count_open_shorts-4, "#")) strategy.close("Short" + tostring(count_open_shorts-5, "#")) strategy.close("Short" + tostring(count_open_shorts-6, "#")) strategy.close("Short" + tostring(count_open_shorts-7, "#")) strategy.close("Short" + tostring(count_open_shorts-8, "#")) strategy.close("Short" + tostring(count_open_shorts-9, "#"))