اوسط ریورس لفافہ اوسط حرکت پذیر حکمت عملی

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

img

جائزہ

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

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

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

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

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

فوائد

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

خطرات

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

خطرات کو حساسیت بڑھانے کے لئے مناسب حد تک وسیع کرنے اور مختلف مارکیٹ سائیکلوں کے مطابق چلنے والے اوسط کی لمبائی کو ایڈجسٹ کرنے سے کم کیا جاسکتا ہے۔

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

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

  1. مختلف حرکت پذیر اوسط الگورتھم کی جانچ کریں.

  2. مختصر مدت کے اتار چڑھاؤ کے لئے بہتر موافقت کے لئے چلتی اوسط لمبائی پیرامیٹر کو ایڈجسٹ کریں.

  3. مختلف فیصد کی ترتیبات کی جانچ کر کے لفافے کے پیرامیٹرز کو بہتر بنائیں.

  4. اسٹاپ نقصان کے طریقوں کو شامل کریں جیسے ٹریلنگ اسٹاپ نقصان کو ایک ہی تجارت کے نقصان کو محدود کرنے کے لئے.

  5. غیر معقول مارکیٹوں میں غلط اندراجات سے بچنے کے لئے دوسرے اشارے کے ساتھ فلٹرنگ کے حالات شامل کریں۔

نتیجہ

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


/*backtest
start: 2022-11-27 00:00:00
end: 2023-12-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion - Envelope Strategy", overlay=true )

// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A MEAN REVERSION SYSTEM THAT USES A MOVING AVERAGE AS BASE CALCULATION AND A % OF THIS MOVING AVERAGE TO CALCULATE THE ENVELOPE
// BY DEFAULT, THE SYSTEM WILL PLACE LONG ORDERS ON THE MOVING AVERAGE -5% PER ENVELOPE COUNT (5%, 10% AND SO ON...)
// YOU CAN ENABLE THE SHORT ORDERS THAT WILL FOLLOW THE SAME LOGIC ON THE OPPOSITE SIDE
// THE SYSTEM WILL CLOSE EVERY ONGOING TRADE WHEN THE PRICE RETURNS TO THE MEAN

// ---------------------------------------------
// ---------------- SETTINGS -------------------
src = input(close, "Moving Average Source", group = "Moving Average")
ma_window = input.int(5, "Moving Average Window", step = 1, group = "Moving Average")
ma_type = input.string('4. DEMA', "Moving Average Type", options=['1. SMA', '2. EMA', '3. RMA', '4. DEMA'], group = "Moving Average")
enveloppe_step = input.float(0.05, "Delta Per Enveloppe", step = 0.01, group = "Envelope")
envelope_count = input.int(5, "Envelope count", options = [1, 2, 3, 4, 5], group = "Envelope")
use_longs = input.bool(true, 'Use Long Orders ?', group = "Orders") 
use_short = input.bool(false, 'Use Short Orders ?', group = "Orders")


// ---------------------------------------------
// -------------- INDICATORS -------------------
ma_funct() =>
    if(ma_type == '1. SMA') 
        ta.sma(src, ma_window)
    if(ma_type == '2. EMA') 
        ta.ema(src, ma_window)
    if(ma_type == '3. RMA') 
        ta.rma(src, ma_window)
    if(ma_type == '4. DEMA') 
        2 * ta.ema(src, ma_window) - ta.ema(ta.ema(src, ma_window), ma_window)

ma_base = ma_funct()

ma_high_1 = envelope_count > 0 ? ma_base * (1 + enveloppe_step) : na
ma_high_2 = envelope_count > 1 ? ma_base * (1 + enveloppe_step * 2) : na
ma_high_3 = envelope_count > 2 ? ma_base * (1 + enveloppe_step * 3) : na
ma_high_4 = envelope_count > 3 ? ma_base * (1 + enveloppe_step * 4) : na
ma_high_5 = envelope_count > 4 ? ma_base * (1 + enveloppe_step * 5) : na

ma_low_1 = envelope_count > 0 ? ma_base * (1 - enveloppe_step) : na
ma_low_2 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 2) : na
ma_low_3 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 3) : na
ma_low_4 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 4) : na
ma_low_5 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 5) : na


// ---------------------------------------------
// --------------- STRATEGY --------------------
if use_longs
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('long 1', strategy.long, limit=ma_low_1, qty=(strategy.equity / ma_low_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('long 2', strategy.long, limit=ma_low_2, qty=(strategy.equity / ma_low_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('long 3', strategy.long, limit=ma_low_3, qty=(strategy.equity / ma_low_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('long 4', strategy.long, limit=ma_low_4, qty=(strategy.equity / ma_low_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('long 5', strategy.long, limit=ma_low_5, qty=(strategy.equity / ma_low_5) * (1 / envelope_count))


if use_short
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('short 1', strategy.short, limit=ma_high_1, qty=(strategy.equity / ma_high_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('short 2', strategy.short, limit=ma_high_2, qty=(strategy.equity / ma_high_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('short 3', strategy.short, limit=ma_high_3, qty=(strategy.equity / ma_high_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('short 4', strategy.short, limit=ma_high_4, qty=(strategy.equity / ma_high_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('short 5', strategy.short, limit=ma_high_5, qty=(strategy.equity / ma_high_5) * (1 / envelope_count))

strategy.exit('close', limit=ma_base)


// ---------------------------------------------
// ------------------ PLOT ---------------------
ma_base_plot = plot(ma_base, title = "Base MA", color = color.orange, linewidth = 3, offset = 1)

ma_high_1_plot = plot(ma_high_1, title = "MA high 1", color = color.red, offset = 1)
ma_high_2_plot = plot(ma_high_2, title = "MA high 2", color = color.red, offset = 1)
ma_high_3_plot = plot(ma_high_3, title = "MA high 3", color = color.red, offset = 1)
ma_high_4_plot = plot(ma_high_4, title = "MA high 4", color = color.red, offset = 1)
ma_high_5_plot = plot(ma_high_5, title = "MA high 5", color = color.red, offset = 1)

ma_low_1_plot = plot(ma_low_1, title = "MA low 1", color = color.green, offset = 1)
ma_low_2_plot = plot(ma_low_2, title = "MA low 2", color = color.green, offset = 1)
ma_low_3_plot = plot(ma_low_3, title = "MA low 3", color = color.green, offset = 1)
ma_low_4_plot = plot(ma_low_4, title = "MA low 4", color = color.green, offset = 1)
ma_low_5_plot = plot(ma_low_5, title = "MA low 5", color = color.green, offset = 1)


مزید