اوسط ریورس لفافہ چلتی اوسط حکمت عملی ایک اوسط ریورس ٹریڈنگ حکمت عملی ہے جس کی بنیاد چلتی اوسط پر ہے۔ یہ ڈبل ایکسپونینشل چلتی اوسط (ڈی ای ایم اے) کو بیس حساب کے طور پر استعمال کرتی ہے اور اس کے اوپر اور نیچے کئی لفافے شامل کرتی ہے۔ جب قیمت لفافے کی بینڈ کو چھوتی ہے تو ، یہ سمت کی بنیاد پر لمبی یا مختصر پوزیشنیں کھولتی ہے۔ جب قیمت چلتی اوسط میں کمی واقع ہوتی ہے تو ، یہ تمام پوزیشنیں بند کردیتی ہے۔
اس حکمت عملی میں ڈبل ایکسپونینشل موونگ ایوریج (ڈی ای ایم اے) کو بیس انڈیکیٹر کے طور پر استعمال کیا جاتا ہے ، جو ایک موونگ ایوریج ہے جو حالیہ قیمت کی تبدیلیوں کے لئے زیادہ حساس ہے۔ ڈی ای ایم اے کے اوپر اور نیچے ، ایک لفافہ زون بنانے کے لئے کئی قیمت بینڈ شامل کیے جاتے ہیں۔ لفافے کی حد صارف کے ذریعہ مقرر کی جاتی ہے ، ہر بینڈ کے درمیان ایک مقررہ فیصد وقفہ ہوتا ہے۔
جب قیمت بڑھتی ہے اور اوپری لفافے بینڈ کے قریب پہنچ جاتی ہے تو ، حکمت عملی ایک مختصر پوزیشن کھولتی ہے۔ جب قیمت گرتی ہے اور نچلے لفافے بینڈ کو چھوتی ہے تو ، یہ ایک لمبی پوزیشن کھولتی ہے۔ جب بھی کوئی نیا قیمت بینڈ چھوتا ہے تو یہ ایک نئی پوزیشن شامل کرتی ہے۔ جب قیمت حرکت پذیر اوسط کے قریب واپس آجاتی ہے تو ، تمام پوزیشنیں بند ہوجاتی ہیں۔
لفافہ بینڈ کے ساتھ قیمتوں میں زیادہ اتار چڑھاؤ کو پکڑنے اور الٹ جانے سے فائدہ اٹھانے کے ذریعے ، اس حکمت عملی کا مقصد کم خریدنا اور زیادہ فروخت کرنا ہے۔ یہ واضح اوسط الٹ رجحانات کے ساتھ مارکیٹ کے دوروں میں فٹ بیٹھتا ہے ، جیسے بٹ کوائن جیسی کریپٹو کرنسیاں۔
خطرات کو حساسیت بڑھانے کے لئے مناسب حد تک وسیع کرنے اور مختلف مارکیٹ سائیکلوں کے مطابق چلنے والے اوسط کی لمبائی کو ایڈجسٹ کرنے سے کم کیا جاسکتا ہے۔
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
مختلف حرکت پذیر اوسط الگورتھم کی جانچ کریں.
مختصر مدت کے اتار چڑھاؤ کے لئے بہتر موافقت کے لئے چلتی اوسط لمبائی پیرامیٹر کو ایڈجسٹ کریں.
مختلف فیصد کی ترتیبات کی جانچ کر کے لفافے کے پیرامیٹرز کو بہتر بنائیں.
اسٹاپ نقصان کے طریقوں کو شامل کریں جیسے ٹریلنگ اسٹاپ نقصان کو ایک ہی تجارت کے نقصان کو محدود کرنے کے لئے.
غیر معقول مارکیٹوں میں غلط اندراجات سے بچنے کے لئے دوسرے اشارے کے ساتھ فلٹرنگ کے حالات شامل کریں۔
اوسط ریورس لفافہ چلتی اوسط حکمت عملی مؤثر طریقے سے چلتی اوسط کے ارد گرد ایک قیمت چینل کی تعمیر کی طرف سے اوسط ریورس مواقع پر قبضہ کرتی ہے. یہ پیرامیٹر ایڈجسٹمنٹ کے ذریعے مختلف مارکیٹ کے ماحول میں لچکدار طور پر اپنایا جا سکتا ہے. نسبتا کم ٹرانزیکشن اخراجات اور اعلی واپسی کے ساتھ، یہ ایک سفارش کی مقدار کی تجارتی حکمت عملی ہے.
/*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)