وسائل لوڈ ہو رہے ہیں... لوڈنگ...

اے ٹی آر اور بریک آؤٹ پر مبنی ای ٹی ایف ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-26 16:05:55
ٹیگز:

img

جائزہ

یہ ایک ای ٹی ایف الگورتھمک ٹریڈنگ حکمت عملی ہے جو اوسط حقیقی رینج (اے ٹی آر) اور قیمت بریک آؤٹ پر مبنی ہے۔ یہ اسٹاپ نقصان اور منافع کی سطح کا حساب لگانے کے لئے اے ٹی آر کا استعمال کرتا ہے ، اور جب قیمت کسی خاص مدت کی سب سے زیادہ یا سب سے کم قیمت سے ٹوٹ جاتی ہے تو لمبی یا مختصر پوزیشنیں کھولتا ہے۔

حکمت عملی منطق

یہ حکمت عملی بنیادی طور پر مندرجہ ذیل اصولوں پر مبنی ہے:

  1. قیمت کے رجحان اور سمت کا تعین کرنے کے لئے کسی خاص مدت کی سب سے زیادہ اور کم قیمتوں کا استعمال کریں (مثال کے طور پر 20 موم بتیاں) ۔ جب قیمت مدت کی سب سے زیادہ قیمت کو توڑتی ہے تو طویل ہوجائیں ، اور جب قیمت کم قیمت کو توڑتی ہے تو مختصر ہوجائیں۔

  2. اسٹاپ نقصان کی سطح کو متحرک طور پر حساب کرنے کے لئے اے ٹی آر کا استعمال کریں۔ اسٹاپ نقصان کو اے ٹی آر مدت کی اے ٹی آر ویلیو کے فاصلے پر رکھا جاتا ہے جس میں انٹری قیمت سے ایک گتانک (مثال کے طور پر 2) ضرب ہوتا ہے۔

  3. ٹیک منافع کی سطح کا تعین کرنے کے لئے اے ٹی آر کا استعمال کریں۔ ٹیک منافع کو اے ٹی آر مدت کی اے ٹی آر ویلیو کے فاصلے پر رکھا جاتا ہے جو انٹری قیمت سے ایک گتانک (مثال کے طور پر 1) سے ضرب ہوتا ہے۔

  4. ٹریلر اسٹاپ نقصان کو ٹریک کرنے کے لئے اے ٹی آر ٹریلر ضرب استعمال کریں۔ جب قیمت ٹریلر اسٹاپ نقصان کی سطح کو ناقص سمت کی طرف توڑتی ہے تو اسٹاپ نقصان کے ساتھ پوزیشنیں بند کریں۔

یہ حکمت عملی سادہ اور قابل اعتماد ہے، کیونکہ اس میں قیمتوں کی نقل و حرکت کو بروقت پکڑنے کے لئے قیمت کی رجحان کی سمت دونوں پر غور کیا جاتا ہے، اور منافع لینے اور خطرے کے کنٹرول کے لئے نقصان کو روکنے اور منافع حاصل کرنے کا تعین کرتا ہے.

فوائد کا تجزیہ

اس حکمت عملی کے فوائد میں شامل ہیں:

  1. حکمت عملی کا منطق سادہ اور واضح ہے، سمجھنے اور لاگو کرنے میں آسان ہے.

  2. اے ٹی آر کا استعمال کرتے ہوئے موافقت پذیر سٹاپ نقصان اور منافع لینے کی سطحوں کا حساب لگانے سے پوزیشن کے لچکدار سائز اور رسک کنٹرول میں مدد ملتی ہے۔

  3. بریک آؤٹ کی حکمت عملی قیمتوں کے رجحانات کو پکڑنے میں اچھی ہے، جس سے اچھی واپسی ہوتی ہے۔

  4. ٹریلر سٹاپ نقصان بروقت پوزیشن بند کر سکتے ہیں، زیادہ سے زیادہ نقصان سے بچنے.

  5. یہ واضح رجحانات کے ساتھ مصنوعات کے لئے موزوں ہے، جیسے ای ٹی ایف اور اسٹاک.

خطرے کا تجزیہ

اس حکمت عملی کے خطرات میں شامل ہیں:

  1. قیمتوں کی توسیع کے دوران مزید غلط سگنل اور الٹ افتتاحی ہوسکتے ہیں۔

  2. پیرامیٹرز کو غلط طریقے سے ایڈجسٹ کرنے سے قیمتوں کے رجحانات غائب ہو سکتے ہیں یا بہت زیادہ غیر ضروری تجارت ہوسکتی ہے۔

  3. انتہائی پیرامیٹر اقدار کا نتیجہ بہت زیادہ جارحانہ یا بہت زیادہ محتاط اسٹاپ نقصان اور منافع لے سکتا ہے ، جو حکمت عملی کی منافع بخش پر اثر انداز ہوتا ہے۔

  4. ای ٹی ایف کے بنیادی خطرات جیسے پالیسی اور پریمیم کے خطرات بھی حکمت عملی کی کارکردگی کو متاثر کرسکتے ہیں۔

متعلقہ حل:

  1. غیر ضروری تجارت کو کم کرنے کے لئے پیرامیٹرز کو بہتر بنائیں.
  2. تجارتی سگنل کی تصدیق کے لیے مزید عوامل اور فلٹرز شامل کریں۔
  3. مختلف مارکیٹوں کے لئے موافقت پذیر پیرامیٹرز کو ایڈجسٹ کریں.
  4. ایک ہی ETF کی سرمایہ کاری اور کنٹرول پوزیشن کا سائز متنوع کریں.

اصلاح کی ہدایات

اسٹریٹیجی کو مندرجہ ذیل پہلوؤں سے مزید بہتر بنایا جاسکتا ہے:

  1. جھوٹے اشاروں کو فلٹر کرنے کے لئے اوسط حرکت پذیر جیسے اشارے شامل کریں.

  2. مختلف ادوار اور مصنوعات کے لئے پیرامیٹرز کو خودکار طور پر ایڈجسٹ کرنے کے لئے موافقت پذیر پیرامیٹر اصلاح ماڈیول تیار کریں۔

  3. بریک آؤٹ سگنل کا تعین کرنے کے لئے اگلی موم بتی کی اعلی اور کم قیمتوں کی پیش گوئی کے لئے مشین لرننگ ماڈل اپنانا۔

  4. جھوٹے بریک آؤٹ سے بچنے کے لئے تجارتی حجم کے اوور فلو پر غور کریں۔

  5. مختلف مصنوعات اور مارکیٹ کے نظام کے مطابق ابتدائی پوزیشن سائزنگ اور الاٹمنٹ فیصد کو بہتر بنائیں۔

نتیجہ

اس حکمت عملی میں واضح اور آسان منطق ہے۔ بریک آؤٹ اور موافقت پذیر اے ٹی آر اسٹاپ نقصان / منافع حاصل کرنے کے بنیادی طریقہ کار خطرات کو مؤثر طریقے سے کنٹرول کرسکتے ہیں اور منافع میں تالا لگا سکتے ہیں۔ پیرامیٹر کی اصلاح اور زیادہ فلٹرز کو مربوط کرنے کے ذریعے منافع کے عوامل اور رسک کنٹرول کی صلاحیتوں کو مزید بڑھانا اسے منافع بخش اور بہتر مقدار کی حکمت عملی بنا سکتا ہے۔


/*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, "#"))



مزید