
یہ حکمت عملی متحرک اوسط اور متحرک بریکٹ لائن پر مبنی ہے ، جس میں کثیر جہتی دو طرفہ تجارت کا امکان ہے۔ یہ پوزیشن قائم کرنے کے لئے قیمتوں کو اوپر اور نیچے کی بریکٹ لائنوں کو توڑنے کی پیروی کرتا ہے ، اور جب قیمت دوبارہ بیس اوسط سے نیچے آجاتی ہے تو اس کی جگہ لیتا ہے۔ یہ حکمت عملی اسٹاک اور ڈیجیٹل کرنسیوں کے لئے موزوں ہے جہاں رجحان واضح ہے۔
سب سے پہلے ، حکمت عملی صارف کے منتخب کردہ اوسط قسم اور لمبائی کی بنیاد پر بیس اوسط کا حساب لگاتی ہے۔ عام اوسط میں SMA ، EMA ، وغیرہ شامل ہیں۔
اس کے بعد ، صارف کے ذریعہ مقرر کردہ فیصد پیرامیٹرز کے مطابق ، اوپر اور نیچے کے معاہدے کی لائن کا حساب لگائیں۔ مثال کے طور پر ، 5٪ کی نمائندگی کرتا ہے قیمت میں اتار چڑھاؤ ALLOWED_BRACKET105٪ جب پوزیشن قائم کرنے کا متحرک ہو۔ معاہدے کی لائنوں کی تعداد اپنی مرضی کے مطابق ہوسکتی ہے۔
مارکیٹ میں داخلے کے قواعد پر ، اگر آپ نیچے کی لائن کو توڑ دیتے ہیں تو ، زیادہ کام کریں۔ اگر آپ اوپر کی لائن کو توڑ دیتے ہیں تو ، خالی کریں۔ قواعد بہت آسان اور واضح ہیں۔
آخر میں ، جب قیمت ایک بار پھر بیس میڈین سے نیچے آجائے تو ، تمام پوزیشنوں کو ختم کردیں۔ یہ رجحان کی پیروی کرنے کا ایک نقطہ ہے۔
نوٹ کریں کہ اس حکمت عملی میں تقسیم شدہ پوزیشنوں کی تعمیر کی گئی ہے۔ اگر متعدد لائنیں ہیں تو ، فنڈز کو متناسب طور پر تقسیم کیا جائے گا۔ اس سے یکطرفہ کھیل کے خطرات سے بچا جاسکتا ہے۔
اس حکمت عملی کے سب سے بڑے فوائد میں سے کچھ یہ ہیں:
خود کار طریقے سے رجحانات کو ٹریک کرنے کی خصوصیت کو لاگو کیا گیا ہے۔ اوسط لائن کا استعمال کرتے ہوئے رجحانات کی سمت کا تعین کرنا بہت عام ہے ، لہذا یہ ایک مؤثر طریقہ ہے۔
اس کے علاوہ ، اس میں کچھ شور کو فلٹر کرنے کے لئے باڑ لگانے والی لائنوں کا استعمال کیا گیا ہے ، جس سے زیادہ حساس اور غیر ضروری تجارت کی وجہ سے ہونے والی پریشانیوں سے بچا جاسکتا ہے۔ معقول پیرامیٹرز کی ترتیب سے حکمت عملی کی منافع بخش کارکردگی کو نمایاں طور پر بہتر بنایا جاسکتا ہے۔
اسٹیک ہولڈنگ نے اسٹریٹجک لچک کو بڑھا دیا ہے۔ یہاں تک کہ اگر یکطرفہ توڑ ناکام ہوجاتا ہے تو ، دوسری سمت اچھی طرح سے چل سکتی ہے۔ اس سے مجموعی طور پر رسک ریٹرن کو بہتر بنایا جاتا ہے۔
اپنی مرضی کے مطابق اوسط لائن اور گھیرا گھیرا لائنوں کی تعداد کی اجازت دیتا ہے۔ اس سے حکمت عملی میں لچک پیدا ہوتی ہے ، اور صارف مختلف اقسام کے لئے پیرامیٹرز کو ایڈجسٹ کرسکتا ہے۔
اس حکمت عملی کے اہم خطرات یہ ہیں:
اوسط لکیری نظام سنہری کراس قسم کے سگنل کے لئے حساس نہیں ہے۔ اگر واضح رجحان نہ ہو تو یہ حکمت عملی کچھ مواقع سے محروم ہوسکتی ہے۔
بہت زیادہ وسیع لائنوں کی ترتیب سے تجارت کی تعداد میں اضافہ ہوسکتا ہے۔ لائنوں کو بہت تنگ ڈیزائن کیا گیا ہے اور اس سے بڑے معاملات کو یاد کیا جاسکتا ہے۔ توازن کی جگہ تلاش کرنے کے لئے کافی جانچ کی ضرورت ہے۔
زلزلے کے حالات میں ، اس حکمت عملی میں فٹ ہونے کا زیادہ امکان ہوسکتا ہے۔ لہذا ، رجحانات کے ساتھ واضح قسم کا انتخاب کرنا بہتر ہے۔
اگر آپ صرف ایک طرفہ خطرہ لینا چاہتے ہیں تو ، آپ کو اضافی اصلاح کی ضرورت ہے۔
اس حکمت عملی کو مندرجہ ذیل نکات سے بہتر بنایا جاسکتا ہے:
دوسرے اشارے کو تبدیل کرنے کے لئے گودام اور گودام کا فیصلہ کریں۔ مثال کے طور پر کے ڈی جے اشارے وغیرہ۔ یا متعدد اشارے کے ساتھ مل کر فلٹرنگ کی شرائط طے کریں۔
اسٹاپ اسٹاپ لاجسٹک شامل کریں۔ اس سے منافع کا کچھ حصہ لاک ہوسکتا ہے ، اور کچھ خطرے سے بچنے کے لئے فعال ہے۔
بہترین میڈین لائن اور بوری لائن کا مجموعہ تلاش کرنے کے لئے پیرامیٹرز کو بہتر بنائیں۔ اس کے لئے بہترین پیرامیٹرز جوڑے کی تلاش کے لئے بھرپور ریٹرننگ اور اصلاح کی ضرورت ہے۔
گہری سیکھنے جیسی ٹیکنالوجیز کے ساتھ مل کر ذہین پیرامیٹرز کو بہتر بنانا۔ وقت کے ساتھ ساتھ پیرامیٹرز کی ترتیبات کو سیکھنا اور اپ ڈیٹ کرنا۔
مختلف اقسام اور مارکیٹ کی مختلف حالتوں کو مدنظر رکھتے ہوئے ، مختلف تجارتی ماحول کے مطابق متعدد پیرامیٹرز مرتب کریں۔ اس سے حکمت عملی کی استحکام میں نمایاں اضافہ ہوگا۔
یہ متحرک پیکیجڈ ایکویریم حکمت عملی مجموعی طور پر رجحان ٹریڈنگ کے لئے بہت موزوں ہے۔ یہ سادہ اور موثر ہے ، سمجھنے اور بہتر بنانے میں آسان ہے۔ ایک بنیادی حکمت عملی کے طور پر ، اس کی پلاسٹک اور توسیع دونوں بہت مضبوط ہیں۔ اس کے علاوہ ، اس کے علاوہ اور زیادہ پیچیدہ نظاموں کے ساتھ انضمام کے ذریعہ ، مجموعی طور پر منافع اور خطرے کو ایڈجسٹ کرنے والے اشارے کو مزید بہتر بنایا جاسکتا ہے۔ لہذا یہ ایک بہت ہی اچھا بنیاد ہے جس میں مقدار کی تجارت کی جاسکتی ہے۔
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Envelope Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, pyramiding = 5, commission_type=strategy.commission.percent, commission_value=0.0)
// CopyRight Crypto Robot
src = input(ohlc4, title="Source", group = "Base MA")
ma_base_window = input.int(5, "Base Mooving Average Window", step = 1, group = "Base MA")
ma_type = input.string(defval='1. SMA', options=['1. SMA', '2. PCMA', '3. EMA', '4. WMA', '5. DEMA', '6. ZLEMA', '7. HMA'], title='MA Type', group = "Base MA")
envelope_1_pct = input.float(0.05, "Envelope 1", step = 0.01, group = "Envelopes")
envelope_2_pct = input.float(0.10, "Envelope 2", step = 0.01, group = "Envelopes")
envelope_3_pct = input.float(0.15, "Envelope 3", step = 0.01, group = "Envelopes")
envelope_4_pct = input.float(0.0, "Envelope 4", step = 0.01, group = "Envelopes")
envelope_5_pct = input.float(0.0, "Envelope 5", step = 0.01, group = "Envelopes")
use_longs = input.bool(true, 'Long Positions')
use_short = input.bool(true, 'Short Positions')
total_envelope = 0
if envelope_1_pct > 0
total_envelope := total_envelope + 1
if envelope_2_pct > 0
total_envelope := total_envelope + 1
if envelope_3_pct > 0
total_envelope := total_envelope + 1
if envelope_4_pct > 0
total_envelope := total_envelope + 1
if envelope_5_pct > 0
total_envelope := total_envelope + 1
// ---------------------------------------------
// -------------- INDICATORS -------------------
ma_function(MA_type, MA_length) =>
zlema_lag = (MA_length - 1) / 2
hma_src = MA_type == '7. HMA' ? 2 * ta.wma(src, math.floor(MA_length / 2)) - ta.wma(src, MA_length) : na
MA_type == '1. SMA' ? ta.sma(src, MA_length) : MA_type == '2. PCMA' ? (ta.highest(high, MA_length) + ta.lowest(low, MA_length)) / 2 : MA_type == '3. EMA' ? ta.ema(src, MA_length) : MA_type == '4. WMA' ? ta.wma(src, MA_length) : MA_type == '5. DEMA' ? 2 * ta.ema(src, MA_length) - ta.ema(ta.ema(src, MA_length), MA_length) : MA_type == '6. ZLEMA' ? ta.ema(src + src - src[zlema_lag], MA_length) : MA_type == '7. HMA' ? ta.wma(hma_src, math.floor(math.sqrt(MA_length))) : na
ma_base = ma_function(ma_type, ma_base_window)
ma_high_1 = envelope_1_pct > 0 ? ma_base * (1 + envelope_1_pct) : na
ma_high_2 = envelope_2_pct > 0 ? ma_base * (1 + envelope_2_pct) : na
ma_high_3 = envelope_3_pct > 0 ? ma_base * (1 + envelope_3_pct) : na
ma_high_4 = envelope_4_pct > 0 ? ma_base * (1 + envelope_4_pct) : na
ma_high_5 = envelope_5_pct > 0 ? ma_base * (1 + envelope_5_pct) : na
ma_low_1 = envelope_1_pct > 0 ? ma_base * (1 - envelope_1_pct) : na
ma_low_2 = envelope_2_pct > 0 ? ma_base * (1 - envelope_2_pct) : na
ma_low_3 = envelope_3_pct > 0 ? ma_base * (1 - envelope_3_pct) : na
ma_low_4 = envelope_4_pct > 0 ? ma_base * (1 - envelope_4_pct) : na
ma_low_5 = envelope_5_pct > 0 ? ma_base * (1 - envelope_5_pct) : na
// ---------------------------------------------
// --------------- STRATEGY --------------------
if use_longs
if envelope_1_pct > 0 and strategy.opentrades < 1
strategy.entry('long 1', strategy.long, limit=ma_low_1, qty=(strategy.equity / ma_low_1) * (1 / total_envelope))
if envelope_2_pct > 0 and strategy.opentrades < 2
strategy.entry('long 2', strategy.long, limit=ma_low_2, qty=(strategy.equity / ma_low_2) * (1 / total_envelope))
if envelope_3_pct > 0 and strategy.opentrades < 3
strategy.entry('long 3', strategy.long, limit=ma_low_3, qty=(strategy.equity / ma_low_3) * (1 / total_envelope))
if envelope_4_pct > 0 and strategy.opentrades < 4
strategy.entry('long 4', strategy.long, limit=ma_low_4, qty=(strategy.equity / ma_low_4) * (1 / total_envelope))
if envelope_5_pct > 0 and strategy.opentrades < 5
strategy.entry('long 5', strategy.long, limit=ma_low_5, qty=(strategy.equity / ma_low_5) * (1 / total_envelope))
if use_short
if envelope_1_pct > 0 and strategy.opentrades < 1
strategy.entry('short 1', strategy.short, limit=ma_high_1, qty=(strategy.equity / ma_high_1) * (1 / total_envelope))
if envelope_2_pct > 0 and strategy.opentrades < 2
strategy.entry('short 2', strategy.short, limit=ma_high_2, qty=(strategy.equity / ma_high_2) * (1 / total_envelope))
if envelope_3_pct > 0 and strategy.opentrades < 3
strategy.entry('short 3', strategy.short, limit=ma_high_3, qty=(strategy.equity / ma_high_3) * (1 / total_envelope))
if envelope_4_pct > 0 and strategy.opentrades < 4
strategy.entry('short 4', strategy.short, limit=ma_high_4, qty=(strategy.equity / ma_high_4) * (1 / total_envelope))
if envelope_5_pct > 0 and strategy.opentrades < 5
strategy.entry('short 5', strategy.short, limit=ma_high_5, qty=(strategy.equity / ma_high_5) * (1 / total_envelope))
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)
plot(ohlc4, color=color.purple)
// use_period = input.bool(false, "Période spécifique ?", group="periode")
// startDate = input.time(timestamp("01 Jan 2020"), "Date de début", group="periode")
// endDate = input.time(timestamp("01 Jan 2025"), "Date de fin", group="periode")
//------------------------------------------
//-------------Indicateurs------------------
// inDateRange = use_period ? ((time >= startDate) and (time < endDate)) : true
// //--------------Backtest-------------------
// strategy_pnl = strategy.netprofit + strategy.openprofit
// bnh_strategy_pnl_pcnt = (strategy_pnl / strategy.initial_capital) * 100
// float bnh_start_bar = na
// bnh_start_bar := na(bnh_start_bar[1]) or inDateRange != true? close : bnh_start_bar[1]
// float bnl_buy_hold_equity = na
// bnl_buy_hold_equity := inDateRange == true ? ((close - bnh_start_bar)/bnh_start_bar) * 100 : bnl_buy_hold_equity[1]
// bnh_vs_diff = bnh_strategy_pnl_pcnt - bnl_buy_hold_equity
// bnh_diff_color = bnh_vs_diff > 0 ? color.new(color.green, inDateRange ? 60 : 100) : color.new(color.red, inDateRange ? 60 : 100)
// var Table = table.new(position.top_right, columns = 2, rows = 4, border_width = 1, bgcolor = color.black, border_color = color.gray)
// table.cell(table_id = Table, column = 0, row = 0, text_color=(bnh_strategy_pnl_pcnt>bnl_buy_hold_equity)?color.gray:color.green, text_size = size.normal, text = "Buy & hold profit")
// table.cell(table_id = Table, column = 1, row = 0, text_color=(bnh_strategy_pnl_pcnt>bnl_buy_hold_equity)?color.gray:color.green, text_size = size.normal, text = str.tostring(bnl_buy_hold_equity, '#.##') + ' %')
// table.cell(table_id = Table, column = 0, row = 1, text_color=(bnh_strategy_pnl_pcnt<bnl_buy_hold_equity)?color.gray:color.green, text_size = size.normal, text = "Strategy profit")
// table.cell(table_id = Table, column = 1, row = 1, text_color=(bnh_strategy_pnl_pcnt<bnl_buy_hold_equity)?color.gray:color.green, text_size = size.normal, text = str.tostring(bnh_strategy_pnl_pcnt, '#.##') + ' %')
// table.cell(table_id = Table, column = 0, row = 2, text_color=color.yellow, text_size = size.normal, text = "Date de début")
// table.cell(table_id = Table, column = 1, row = 2, text_color=color.yellow, text_size = size.normal, text = str.format("{0,date,dd-MM-YYYY}",strategy.closedtrades.entry_time(1)))