ETF ٹریڈنگ کی حکمت عملی ATR اور بریک آؤٹ پر مبنی ہے۔


تخلیق کی تاریخ: 2023-12-26 16:05:55 آخر میں ترمیم کریں: 2023-12-26 16:05:55
کاپی: 2 کلکس کی تعداد: 822
1
پر توجہ دیں
1623
پیروکار

ETF ٹریڈنگ کی حکمت عملی ATR اور بریک آؤٹ پر مبنی ہے۔

جائزہ

یہ حکمت عملی ایک ETF کی خودکار تجارت کی حکمت عملی ہے جو اوسط حقیقی طول و عرض (ATR) اور قیمت کے ٹوٹنے پر مبنی ہے۔ یہ ATR کا استعمال اسٹاپ نقصان اور اسٹاپ آؤٹ پٹ کا حساب لگانے کے لئے کرتا ہے ، اور جب قیمت کسی خاص دورانیے کی اعلی ترین قیمت یا کم ترین قیمت کو توڑ دیتی ہے تو زیادہ یا کم ہوجاتا ہے۔

حکمت عملی کا اصول

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

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

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

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

  4. ATRtrailer کثیر عنصر کا استعمال کرتے ہوئے اسٹاپ کا سراغ لگانا۔ جب قیمت منفی سمت میں ٹریلر اسٹاپ کی حد کو توڑ دیتی ہے تو ، اس کی پوزیشن بند کردی جاتی ہے۔

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

طاقت کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

  1. حکمت عملی سادہ اور واضح ہے اور اسے سمجھنا اور اس پر عمل درآمد کرنا آسان ہے۔

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

  3. سائیکل بریک فیصلے کی حکمت عملی قیمتوں کے رجحانات کو پکڑنے میں آسان ہے ، اور اس سے بہتر منافع ہوتا ہے۔

  4. ٹریلر کو روکنے سے وقت پر روکنے سے بچنے سے بچنے سے بچنے سے بچنے سے بچنے سے بچنے سے بچنے سے بچنے کے لۓ.

  5. ای ٹی ایف ، اسٹاک ، وغیرہ جیسے رجحانات کے لئے مناسب۔

خطرے کا تجزیہ

اس حکمت عملی میں مندرجہ ذیل خطرات بھی ہیں:

  1. جب قیمت میں اتار چڑھاؤ ہوتا ہے تو ، زیادہ غلط سگنل اور ریورس کھولنے کا امکان ہوتا ہے۔

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

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

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

اس کا حل کیا ہے؟

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

اصلاح کی سمت

اس حکمت عملی کو مزید بہتر بنانے کے لیے درج ذیل نکات پر غور کیا جا سکتا ہے:

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

  2. ایڈجسٹمنٹ پیرامیٹرز کو بہتر بنانے کے ماڈیول کو شامل کیا گیا ہے تاکہ پیرامیٹرز کو مختلف ادوار اور اقسام کے مطابق خود بخود بہتر بنایا جاسکے۔

  3. ایک مشین لرننگ ماڈل شامل کریں جو اگلے K لائن کی اونچائی اور نچلے حصے کی پیشن گوئی کرے ، تاکہ اس کے بارے میں فیصلہ کیا جاسکے۔

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