Els فوری رجحان لائن کی حکمت عملی


تخلیق کی تاریخ: 2023-12-20 16:51:05 آخر میں ترمیم کریں: 2023-12-20 16:51:05
کاپی: 0 کلکس کی تعداد: 574
1
پر توجہ دیں
1166
پیروکار

Els فوری رجحان لائن کی حکمت عملی

جائزہ

ایلرز کی فوری رجحان لائن حکمت عملی کو جان ایلرز نے اپنے کتابچے کے اسٹاک اور فیوچر کے کنٹرول تجزیہ کٹ میں پیش کیا ہے۔ یہ حکمت عملی تکنیکی اشارے کا استعمال اسٹاک یا فیوچر کے فوری رجحانات کی نشاندہی کرنے کے لئے کرتی ہے اور جب رجحان الٹ جاتا ہے تو پوزیشن کھولتا ہے۔

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

اس حکمت عملی کا مرکز فوری طور پر رجحان لائن کی حساب سے ہے. آئی ٹی لائن کا حساب کتاب فارمولہ مندرجہ ذیل ہے:

it := (a-((a*a)/4.0))*src+0.5*a*a*src[1]-(a-0.75*a*a)*src[2]+2*(1-a )*it[1]-(1-a )*(1-a )*it[2]

جہاں src قیمت کی نمائندگی کرتا ہے ، a ایک ہموار عنصر ہے ، جس کی ڈیفالٹ قدر 0.07 ہے۔ یہ فارمولا ایک دو درجے کا فلٹر ہے ، جو قیمتوں کو ہموار کرنے اور رجحان پیدا کرنے کے قابل ہے۔

ایک اور اہم اشارے پیچھے کی لکیر ہے ((lag) ، جس کا حساب کتاب فارمولا ہے:

lag = 2.0 * it - nz(it[2])

یہ لائن آئی ٹی لائن سے ایک سائیکل پیچھے ہے۔ جب قیمت اوپر سے پیچھے کی لائن کو عبور کرتی ہے تو ، رجحان کا رخ موڑنے کا مطلب ہوتا ہے ، اور زیادہ ہوتا ہے۔ جب قیمت نیچے سے پیچھے کی لائن کو عبور کرتی ہے تو ، رجحان کا رخ موڑنے کا مطلب ہوتا ہے ، اور خالی ہوتا ہے۔

اس کے علاوہ ، حکمت عملی میں خطرے کو کنٹرول کرنے کے لئے اسٹاپ نقصان کی ایک فہرست بھی رکھی گئی ہے۔

طاقت کا تجزیہ

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

  1. آئی ٹی لائنز کا استعمال کرتے ہوئے رجحانات کی نشاندہی کریں ، مارکیٹ کے شور کو مؤثر طریقے سے فلٹر کریں اور سگنل کے معیار کو بہتر بنائیں
  2. دو درجے کے فلٹر کا استعمال کریں ، پیرامیٹرز کی اصلاح کی جگہ بڑی ، اعلی ایڈجسٹبل
  3. ٹریڈنگ سگنل بنانے کے لئے پسماندہ لائنوں کے ساتھ مل کر ٹریڈنگ سگنل بنائیں تاکہ رجحانات میں بار بار کھلنے والی پوزیشنوں سے بچا جاسکے
  4. ایک سٹاپ نقصان کنٹرول خطرہ مقرر کریں، سٹاپ نقصان تناسب پیش سیٹ کر سکتے ہیں
  5. کوڈ کی ساخت واضح ہے، سمجھنے اور ترمیم کرنے میں آسان ہے

خطرے کا تجزیہ

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

  1. آئی ٹی لائن اور پیچھے رہ جانے والی لائن پیرامیٹرز کی غلط ترتیب سے غلط سگنل پیدا ہوسکتے ہیں
  2. اسٹاپ نقصان کا نقطہ غیر مناسب طریقے سے ترتیب دیا گیا ہے جو بہت جلد یا بہت زیادہ اسٹاپ نقصان کا سبب بن سکتا ہے
  3. اعلی ٹرانزیکشن فریکوئینسی اور ٹرانزیکشن لاگت سے منافع متاثر ہوسکتا ہے
  4. طویل عرصے تک حراستی پوزیشن رکھنے سے ممکنہ طور پر منافع پر اثر پڑتا ہے

ان خطرات کو کم کرنے کے لیے درج ذیل اقدامات کیے جا سکتے ہیں۔

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

اصلاح کی سمت

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

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

آخر میں

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers Instantaneous Trendline Strategy", shorttitle = "Ehlers Instantaneous Trendline Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, backtest_fill_limits_assumption = 1)
src = input(hl2, title="Source")
a = input(0.07, title="Alpha", step=0.01) 
fr = input(false, title="Fill Trend Region")
it = na
if (na(it[2]) or na(it[1]))
    it := (src + 2 * src[1] + src[2]) / 4.0
else
    it := (a-((a*a)/4.0))*src+0.5*a*a*src[1]-(a-0.75*a*a)*src[2]+2*(1-a )*it[1]-(1-a )*(1-a )*it[2]
lag = 2.0 * it - nz(it[2])
rngFrac = input(0.35)
revPct = input(0.015)
stopType = input(title="Stop type", defval = "stop-order", options = ["stop-order", "market-order", "None"])

diff = input(0.5, title = "Spread")
LongPrice(p) =>
    LongPrice = diff == 0 ? p : floor(p / diff) * diff

ShortPrice(p) =>
    ShortPrice = diff == 0 ? p : ceil(p / diff) * diff

strategy.cancel_all()
reverseTrade = false
if stopType == "market-order" 
    if  strategy.position_size > 0 and close < strategy.position_avg_price * (1 - revPct) 
        strategy.order("StopLoss open short", strategy.short, 2 * strategy.position_size, limit = close - 2 * diff)
        reverseTrade := true
    if  strategy.position_size < 0 and close > strategy.position_avg_price * (1 + revPct) 
        strategy.order("StopLoss open long", strategy.long, -2 * strategy.position_size, limit = close + 2 * diff)
        reverseTrade := true
    
if lag > it and not reverseTrade
    price = LongPrice(max(close - (high - low) * rngFrac, low))
    if strategy.position_size <= 0
        strategy.order("Open long", strategy.long, strategy.equity / price - strategy.position_size, limit = price)
        if stopType == "stop-order"
            strategy.order("StopLoss open long", strategy.short, 2 * strategy.equity / price, stop = ShortPrice(price * (1 - revPct)))
    else
        if stopType == "stop-order"
            strategy.order("StopLoss open short", strategy.short, 2 * strategy.position_size, stop = ShortPrice(strategy.position_avg_price * (1 - revPct)))
if lag < it and not reverseTrade
    price = ShortPrice(min(close - (high - low) * rngFrac, high))
    if strategy.position_size >= 0
        strategy.order("Open short", strategy.short, strategy.equity / price + strategy.position_size, limit = price)
        if stopType == "stop-order"
            strategy.order("StopLoss open short", strategy.long, 2 * strategy.equity / price, stop = LongPrice(price * (1 + revPct)))
    else
        if stopType == "stop-order"
            strategy.order("StopLoss open long", strategy.long, -2 * strategy.position_size, stop = LongPrice(strategy.position_avg_price * (1 + revPct)))


itPlot=plot(it, color=red, linewidth=1, title="Trend")
lagPlot=plot(lag, color=blue, linewidth=1, title="Trigger")
fill(itPlot, lagPlot, it < lag ? green : red,  transp=70)

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(9, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()