یہ ایک تجارتی حکمت عملی ہے جو متعدد متحرک اوسط کی بنیاد پر حد کے احکامات طے کرتی ہے۔ جب قیمت مختلف ایم اے کی سطحوں کو توڑتی ہے تو یہ مختلف تعداد میں لمبی یا مختصر حد کے احکامات طے کرے گی ، جس سے اہرام کی شکل میں ملٹی پوزیشن بنتی ہے۔ جب قیمت دوبارہ ایم اے کو توڑتی ہے تو ، ریورس حد کے احکامات کھولے جائیں گے۔ پوزیشنوں کو برقرار رکھنے کے وقت ، اگر قیمت درمیانی ایم اے کو توڑتی ہے تو پوزیشنوں کو ریورس مارکیٹ آرڈرز کے ذریعہ بند کردیا جائے گا۔
یہ حکمت عملی رجحان کی سمت کا تعین کرنے کے لئے چلتی اوسط کا استعمال کرتی ہے۔ خاص طور پر ، یہ اس بات کی بنیاد پر لمبی حد کے احکامات کی تعداد کا تعین کرتی ہے کہ آیا قیمت 3 اوپر کی ایم اے لائنوں کو توڑتی ہے۔ اور یہ اس بات کی بنیاد پر مختصر حد کے احکامات کی تعداد کا تعین کرتی ہے کہ آیا قیمت 3 نیچے کی ایم اے لائنوں کو توڑتی ہے۔
اس طرح ، جب رجحان زیادہ مضبوط ہوتا ہے تو ، اسی سمت میں زیادہ حد کے احکامات طے کیے جائیں گے۔ جب قیمت میں الٹ سگنل دکھائے جاتے ہیں تو ، الٹ پوزیشنیں کھولی جائیں گی۔ درمیانی ایم اے کا استعمال موجودہ پوزیشنوں کی توڑ کا فیصلہ کرنے اور قریبی سگنل پیدا کرنے کے لئے کیا جاتا ہے۔
پوری حکمت عملی میں تجارتی منطق بنانے کے لئے اہرام طرز کے افتتاح اور توڑنے کے انداز میں بندش کو جوڑ دیا گیا ہے۔ اس کا مقصد لاگت کو کم کرنے کے لئے بہتر اوسط قیمتوں پر پوزیشنیں کھولنا ہے ، اور خطرات کو کنٹرول کرنے کے لئے اسٹاپ نقصان کے لئے درمیانی ایم اے کا استعمال کرتا ہے۔
اس حکمت عملی کے فوائد میں شامل ہیں:
رجحانات کا تعین کرنے کے لئے MAs کا استعمال کرتے ہوئے، کام کرنے کے لئے آسان اور بدیہی.
اہرام طرز کے افتتاحی رجحانات کے ابتدائی مرحلے میں بہتر اوسط قیمت حاصل کر سکتے ہیں.
درمیانی ایم اے سٹاپ نقصان بروقت نقصانات کو روک سکتا ہے اور خطرات کو کنٹرول کرسکتا ہے۔
حد کے احکامات کو سلائڈ سے بچنے.
اپنی مرضی کے مطابق پیرامیٹرز مختلف مصنوعات کو اپنانے.
واضح ڈھانچہ، سمجھنے اور بڑھانے میں آسان.
اس حکمت عملی کے خطرات میں شامل ہیں:
ایم اے تاخیر سے غلط فیصلے ہو سکتے ہیں۔
ناکام حد کے احکامات داخلہ کے مواقع کو کھو سکتے ہیں.
درمیانی ایم اے سٹاپ نقصان بہت خام ہو سکتا ہے کہ اس کے بارے میں فیصلہ کیا جا سکے.
غلط پیرامیٹرز کی ترتیبات بہت بڑی پوزیشنوں کا سبب بن سکتی ہیں.
ناکافی backtest مدت overfitting کی وجہ سے ہو سکتا ہے.
لین دین کے اخراجات کا کوئی حساب نہیں.
حل یہ ہیں:
تصدیق کے لیے دوسرے اشارے شامل کریں، پیرامیٹرز کو بہتر بنائیں۔
ختم ہونے کا وقت مقرر کریں، حد کی قیمتوں کو ایڈجسٹ کریں.
مڈل ایم اے سٹاپ نقصان پر منافع لینے یا منطق شامل کریں.
پیرامیٹرز کو بہتر بنائیں، خطرہ انعام کے تناسب کا اندازہ کریں.
بیک ٹیسٹ کی مدت میں توسیع، کثیر مارکیٹ بیک ٹیسٹ.
ٹرانزیکشن لاگت اور سلائڈج منطق شامل کریں.
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
مشین لرننگ کے طریقوں کا استعمال کرتے ہوئے، زیادہ مصنوعات کے لئے پیرامیٹرز کو بہتر بنائیں.
تصدیق کے لیے دیگر اشارے شامل کریں، جیسے MACD، KDJ وغیرہ۔
مڈل ایم اے لائن پر منافع لینے کی منطق شامل کریں.
متحرک طور پر پوزیشن سائز اور سٹاپ نقصان کی سطح کو ایڈجسٹ کریں.
بہتر لاگت کے لئے حد کی قیمتوں کو بہتر بنائیں، مثال کے طور پر اتار چڑھاؤ پر مبنی.
اخراجات کو منظم کریں تاکہ زیادہ سے زیادہ رجحانات کو روکنے کے لئے.
پیرامیٹر پول بنانے کے لئے مختلف مصنوعات پر ٹیسٹ پیرامیٹرز.
یہ حکمت عملی بہتر اوسط اخراجات کے حصول کے لئے حد کے احکامات کے ساتھ اہرام کی شکل کی پوزیشنیں کھولتی ہے۔ یہ خطرات کو کنٹرول کرنے کے لئے اسٹاپ نقصان کے لئے درمیانی ایم اے کا استعمال کرتی ہے۔ حکمت عملی کی ساخت آسان اور واضح ، سمجھنے اور بڑھانے میں آسان ہے۔ لیکن اسے مزید مضبوط بنانے کے لئے دوسرے اشارے ، پیرامیٹرز کو بہتر بنانے ، حد کے آرڈر منطق وغیرہ کو بہتر بنانے سے اسے بہتر بنایا جاسکتا ہے۔ مجموعی طور پر ، یہ حکمت عملی حد کے آرڈر کی تجارت کا ایک آسان اور عملی خیال فراہم کرتی ہے جس میں کچھ حوالہ قیمت ہوتی ہے۔
/*backtest start: 2022-09-15 00:00:00 end: 2023-09-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Robot WhiteBox MultiMA", shorttitle = "Robot WhiteBox MultiMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(3, minval = 1, title = "MA Length") s = input(defval = "7. OHLC4", options = ["1. Open", "2. High", "3. Low", "4. Close", "5. HL2", "6. HLC3", "7. OHLC4", "8. OC2", "9. PCMA"], title = "Data") short3 = input(true, title = "short 3") short2 = input(true, title = "short 2") short1 = input(true, title = "short 1") long1 = input(true, title = "long 1") long2 = input(true, title = "long 2") long3 = input(true, title = "long 3") shortlevel3 = input(15.0, title = "Short line 3") shortlevel2 = input(10.0, title = "Short line 2") shortlevel1 = input(5.0, title = "Short line 1") longlevel1 = input(-5.0, title = "Long line 1") longlevel2 = input(-10.0, title = "Long line 2") longlevel3 = input(-15.0, title = "Long line 3") needoffset = input(true, title = "Offset") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Variables size = strategy.position_size mult = 1 / syminfo.mintick needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59) //MA oc2 = (open + close) / 2 pcma = (highest(high, len) + lowest(low, len)) / 2 src = s == "1. Open" ? open : s == "2. High" ? high : s == "3. Low" ? low : s == "4. Close" ? close : s == "5. HL2" ? hl2 : s == "6. HLC3" ? hlc3 : s == "7. OHLC4" ? ohlc4 : s == "8. OC2" ? oc2: close sma = sma(src, len) ma = s == "9. PCMA" ? round(pcma * mult) / mult : round(sma * mult) / mult //Levels longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close longline2 = long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close longline3 = long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close shortline1 = short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close shortline2 = short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close shortline3 = short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close //Lines colorlong1 = long1 ? color.lime : na colorlong2 = long2 ? color.lime : na colorlong3 = long3 ? color.lime : na colorshort1 = short1 ? color.red : na colorshort2 = short2 ? color.red : na colorshort3 = short3 ? color.red : na offset = needoffset ? 1 : 0 plot(shortline3, offset = offset, color = colorshort3, title = "Short line 3") plot(shortline2, offset = offset, color = colorshort2, title = "Short line 2") plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1") plot(ma, offset = offset, color = color.blue, title = "MA line") plot(longline1, offset = offset, color = colorlong1, title = "Long line 1") plot(longline2, offset = offset, color = colorlong2, title = "Long line 2") plot(longline3, offset = offset, color = colorlong3, title = "Long line 3") //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] lots = 0.0 if ma > 0 lots := round(size / lot) strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long1 and needtime)) lots := round(size / lot) strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long2 and needtime)) lots := round(size / lot) strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long3 and needtime)) lots := round(size / lot) strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short1 and needtime)) lots := round(size / lot) strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short2 and needtime)) lots := round(size / lot) strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short3 and needtime)) if size > 0 strategy.entry("TPL", strategy.short, 0, limit = ma) if size < 0 strategy.entry("TPS", strategy.long, 0, limit = ma) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()