دوہری رفتار کی پیشرفت اور اتار چڑھاؤ فلٹرنگ الگورتھمک ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-22 12:01:21
ٹیگز:

img

جائزہ

یہ حکمت عملی بنیادی طور پر رجحانات کی نشاندہی کرنے کے لئے دوہری ای ایم اے اور ڈی ای ایم اے رفتار کے کراس اوور کا استعمال کرتی ہے ، اور جھوٹے بریک آؤٹ کو فلٹر کرنے کے لئے اے ٹی آر اتار چڑھاؤ انڈیکس کو شامل کرتی ہے ، دوہری رفتار کے اشارے اور اتار چڑھاؤ فلٹرنگ کے ساتھ مقداری تجارتی حکمت عملی کو نافذ کرتی ہے۔

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

اس حکمت عملی کے اہم اجزاء میں شامل ہیں:

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

  2. اے ٹی آر اتار چڑھاؤ انڈیکس کا حساب لگائیں۔ مارکیٹ کی اتار چڑھاؤ اور لیکویڈیٹی کے حالات کا تعین کرنے کے لئے اے ٹی آر ویلیو کا استعمال کریں۔ غلط بریک آؤٹ سے بچنے کے لئے اتار چڑھاؤ بہت زیادہ ہونے پر رفتار اشارے کے اشاروں کو فلٹر کریں۔

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

  4. پیرامیٹرز ATR ٹائم فریم، ATR لمبائی، ATR چلتی اوسط قسم اور لمبائی وغیرہ کو کنٹرول کرتے ہیں.

  5. طویل پوزیشنوں کے لئے سٹاپ نقصان، منافع لے اور پیچھے رکنے کے قوانین قائم کریں.

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

ڈبل ای ایم اے فلٹر بنیادی ای ایم اے کراس حکمت عملیوں کے مقابلے میں جھوٹے سگنل اور اوور ٹریڈنگ کو نمایاں طور پر کم کرسکتا ہے۔ اے ٹی آر اتار چڑھاؤ انڈیکس کو شامل کرنے سے معمولی اتار چڑھاؤ سے گمراہ کن سگنل کو مؤثر طریقے سے فلٹر کیا جاتا ہے اور پھنس جانے سے بچا جاتا ہے۔

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

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

خطرے کا تجزیہ

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

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

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

  1. بہترین ترتیبات تلاش کرنے کے لئے مختلف رفتار اشارے پیرامیٹر کے مجموعے کی جانچ کریں.

  2. دوہری ای ایم اے سے ایم اے سی ڈی یا دیگر اشارے کے ساتھ رفتار کے اشارے کی جگہ لینے کی کوشش کریں.

  3. مختلف اتار چڑھاؤ انڈیکس کی تشکیل کی جانچ کریں، جیسے مجموعی تاریخی اے ٹی آر، مارکیٹ اتار چڑھاؤ انڈیکس وغیرہ۔

  4. حجم فلٹرنگ کا اضافہ کریں تاکہ غلط قیمتوں میں خرابی سے بچنے کا خطرہ ہو۔

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

نتیجہ

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


/*backtest
start: 2023-11-21 00:00:00
end: 2023-12-21 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/
// © Qorbanjf

//@version=4
strategy("ORIGIN DEMA/EMA & VOL LONG ONLY", shorttitle="ORIGIN DEMA/EMA & VOL LONG", overlay=true)

// DEMA
length = input(10, minval=1, title="DEMA LENGTH")
src = input(close, title="Source")
e1 = ema(src, length)
e2 = ema(e1, length)
dema1 = 2 * e1 - e2
plot(dema1, "DEMA", color=color.yellow)

//EMA
len = input(25, minval=1, title="EMA Length")
srb = input(close, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
ema1 = ema(srb, len)
plot(ema1, title="EMA", color=color.blue, offset=offset)


// Inputs
atrTimeFrame = input("D", title="ATR Timeframe", type=input.resolution)
atrLookback = input(defval=14,title="ATR Lookback Period",type=input.integer)
useMA = input(title = "Show Moving Average?", type = input.bool, defval = true)
maType = input(defval="EMA", options=["EMA", "SMA"], title = "Moving Average Type")
maLength = input(defval = 20, title = "Moving Average Period", minval = 1)
//longLossPerc = input(title="Long Stop Loss (%)",
    // type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
longTrailPerc = input(title="Trail stop loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=50) * 0.01
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=3000) / 100

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2017, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)


// ATR Logic // atrValue = atr(atrLookback) // atrp = (atrValue/close)*100 // plot(atrp, color=color.white, linewidth=2, transp = 30)

atrValue = security(syminfo.tickerid, atrTimeFrame, atr(atrLookback))
atrp = (atrValue/close)*100

// Moving Average Logic
ma(maType, src, length) =>
    maType == "EMA" ? ema(src, length) : sma(src, length) //Ternary Operator (if maType equals EMA, then do ema calc, else do sma calc)
maFilter = security(syminfo.tickerid, atrTimeFrame, ma(maType, atrp, maLength))

// variables for enter position
enterLong = crossover(dema1, ema1) and atrp < maFilter

// variables for exit position
sale = crossunder(dema1, ema1)

// stop loss
//longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)

// trail stop
// Determine trail stop loss prices
longStopTrail = 0.0

longStopTrail := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopTrail[1])
else
    0
//Take profit Percentage
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)

//Enter trades when conditions are met
strategy.entry(id="long",
 long=strategy.long,
 when=enterLong,
 comment="long")

//
strategy.close("long", when = sale, comment = "Sell")
//place exit orders (only executed after trades are active)

strategy.exit(id="sell",
 limit = longExitPrice,
 stop = longStopTrail,
 comment = "SL/TP")



مزید