بیس لائن کراس کوالیفائیر ATR Volatility & HMA Trend Bias Mean Reversal Strategy

مصنف:چاؤ ژانگ، تاریخ: 2024-01-17 16:37:23
ٹیگز:

img

جائزہ

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

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

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

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

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

اس حکمت عملی میں ایک مختلف قسم کی حکمت عملی شامل ہے جس میں مختلف قسم کے فوائد اور نقصانات شامل ہیں۔ اس حکمت عملی میں مختلف قسم کے نقصانات شامل ہیں۔ اس کے علاوہ ، اس میں مختلف قسم کے نقصانات شامل ہیں۔ اس میں مختلف قسم کے نقصانات شامل ہیں۔ اس میں مختلف قسم کے نقصانات شامل ہیں۔ اس میں مختلف قسم کے نقصانات شامل ہیں۔ اس میں مختلف قسم کے نقصانات شامل ہیں۔

خطرات اور حل

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

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

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

  1. پیرامیٹرز کے زیادہ سے زیادہ مجموعوں کا تجربہ کریں تاکہ اقدار کا بہترین سیٹ مل سکے، مثال کے طور پر، بیس لائن مدت، اے ٹی آر مدت، اتار چڑھاؤ ضابطہ وغیرہ.

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

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

  4. زیادہ موثر تجارتی سگنل پیدا کرنے کے لئے مشین لرننگ ماڈلز کو شامل کریں.

نتیجہ

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


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
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/
// © sevencampbell

//@version=5
strategy(title="Baseline Cross Qualifier Volatility Strategy with HMA Trend Bias", overlay=true)

// --- User Inputs ---

// Baseline Inputs
baselineLength = input.int(title="Baseline Length", defval=20)
baseline = ta.sma(close, baselineLength)

// PBCQ Inputs
pbcqEnabled = input.bool(title="Post Baseline Cross Qualifier Enabled", defval=true)
pbcqBarsAgo = input.int(title="Post Baseline Cross Qualifier Bars Ago", defval=3)

// Volatility Inputs
atrLength = input.int(title="ATR Length", defval=14)
multiplier = input.float(title="Volatility Multiplier", defval=2.0)
rangeMultiplier = input.float(title="Volatility Range Multiplier", defval=1.0)
qualifierMultiplier = input.float(title="Volatility Qualifier Multiplier", defval=0.5)

// Take Profit Inputs
takeProfitType = input.string(title="Take Profit Type", options=["1 Take Profit", "2 Take Profits", "3 Take Profits"], defval="1 Take Profit")

// HMA Inputs
hmaLength = input.int(title="HMA Length", defval=50)

// --- Calculations ---

// ATR
atr = ta.atr(atrLength)

// Range Calculation
rangeHigh = baseline + rangeMultiplier * atr
rangeLow = baseline - rangeMultiplier * atr
rangeColor = rangeLow <= close and close <= rangeHigh ? color.yellow : na
bgcolor(rangeColor, transp=90)

// Qualifier Calculation
qualifier = qualifierMultiplier * atr

// Dot Calculation
isLong = close > baseline and (close - baseline) >= qualifier and close > ta.hma(close, hmaLength)
isShort = close < baseline and (baseline - close) >= qualifier and close < ta.hma(close, hmaLength)
colorDot = isLong ? color.green : isShort ? color.red : na
plot(isLong or isShort ? baseline : na, color=colorDot, style=plot.style_circles, linewidth=3)

// --- Strategy Logic ---

// PBCQ
pbcqValid = not pbcqEnabled or low[pbcqBarsAgo] > baseline

// Entry Logic
longCondition = isLong and pbcqValid
shortCondition = isShort and pbcqValid
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Logic
if (takeProfitType == "1 Take Profit")
    strategy.exit("TP/SL", "Long", limit=rangeHigh, stop=rangeLow)
    strategy.exit("TP/SL", "Short", limit=rangeLow, stop=rangeHigh)
else if (takeProfitType == "2 Take Profits")
    strategy.exit("TP1", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh / 2)
    strategy.exit("TP2", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh)
    strategy.exit("TP1", "Short", qty=strategy.position_size * 0.5, limit=rangeLow / 2)
    strategy.exit("TP2", "Short", qty=strategy.position_size * 0.5, limit=rangeLow)
else if (takeProfitType == "3 Take Profits")
    strategy.exit("TP1", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh / 2)
    strategy.exit("TP2", "Long", qty=strategy.position_size * 0.25, limit=rangeHigh * 0.75)
    strategy.exit("TP3", "Long", qty=strategy.position_size * 0.25, limit=rangeHigh * 1.5)


مزید