یہ حکمت عملی متعدد تیز رفتار / سست حرکت پذیر اوسط جوڑوں کی لچکدار تشکیل کی اجازت دیتی ہے۔ جب تمام تیز رفتار ایم اے سست ایم اے کے اوپر عبور کرتے ہیں تو یہ طویل ہوجاتا ہے ، اور جب کوئی تیز رفتار ایم اے سست ایم اے سے نیچے عبور کرتا ہے تو باہر نکل جاتا ہے۔ متعدد ایم اے کے ساتھ ووٹنگ میکانزم کا مقصد پوزیشن ہولڈنگ کے مضبوط فیصلے کرنا ہے۔
اہم اجزاء اور قواعد یہ ہیں:
متعدد تیز / سست ایم اے: ایس ایم اے ، ڈبلیو ایم اے ، وی ڈبلیو ایم اے وغیرہ کا استعمال کرتے ہوئے۔
طویل سگنل: تمام تیز رفتار ایم اے سست رفتار ایم اے کے اوپر سے گزر رہے ہیں.
باہر نکلنے کا اشارہ: کسی بھی تیز رفتار ایم اے کو سست ایم اے سے نیچے عبور کرنا۔
منافع/نقصان کے پوائنٹس: اے ٹی آر پر مبنی مقررہ پوائنٹس۔
ترتیب دینے کے قابل: متعدد ایم اے جوڑوں کی لچکدار ترتیب۔
متعدد ایم اے کے ساتھ ووٹنگ پر مبنی اندراج سگنل کی وشوسنییتا کو بہتر بناتا ہے۔ اپنی مرضی کے مطابق ترتیب لچک فراہم کرتی ہے۔
انفرادی ایم اے حکمت عملیوں کے مقابلے میں، فوائد یہ ہیں:
متعدد ایم اے رجحانات کا زیادہ جامع اندازہ فراہم کرتے ہیں۔
ووٹنگ شور سے غلط سگنل سے بچتی ہے۔
اپنی مرضی کے مطابق ایم اے ترتیب سے بڑی ٹیوننگ کی جگہ.
مختلف ایم او اقسام کی حمایت سے موافقت میں اضافہ ہوتا ہے۔
تجارت کے خطرے/فوائد کے مطابق منافع/نقصان کے پوائنٹس کا کنٹرول۔
طویل وقت کے فریم پر بہتر کام کرتا ہے، کم وکر whipssaws.
سادہ اور بدیہی منطق، لاگو کرنے اور کام کرنے کے لئے آسان.
مجموعی طور پر زیادہ مستحکم اور لمبی عمر کے مقابلے میں زیادہ لمبی عمر کے ساتھ۔
تاہم، کچھ خطرات موجود ہیں:
متعدد ایم اے کے ساتھ پیچیدگی میں اضافہ.
زیادہ سے زیادہ اصلاح کے خطرات.
رجحان کی تبدیلیوں کی نشاندہی کرنے میں بنیادی تاخیر۔
کوئی حجم غور، پھنس جانے کا خطرہ ہے.
منافع/نقصان کے پوائنٹس غیر ضروری باہر نکلنے کا سبب بن سکتے ہیں.
کارکردگی مارکیٹ کے نظام میں تبدیلی کے تابع ہے.
فائدہ / خطرہ تناسب اور منحنی smoothness کی نگرانی کرنے کی ضرورت ہے.
آلات کے درمیان استحکام کی توثیق کی ضرورت ہے۔
تجزیہ کی بنیاد پر، بہتری میں شامل ہوسکتا ہے:
مختلف آلات پر پیرامیٹر استحکام کی جانچ.
حجم یا اتار چڑھاؤ کی تصدیق کا اضافہ۔
منافع / نقصان کے پوائنٹس کو بہتر بنانا.
زیادہ سے زیادہ قابل برداشت استعمال کی حد کا تعین
متحرک پوزیشن سائزنگ ماڈلز کی تعمیر.
مشین لرننگ متعارف کرانے کے اثرات کا جائزہ لینا۔
زیادہ سے زیادہ کھپت اور وکر ہموار کی نگرانی.
مسلسل iterations کے overfitting سے بچنے کے لئے
ترتیب دینے والا ملٹی ایم اے نقطہ نظر ایک مضبوط پوزیشن ہولڈنگ میکانزم تشکیل دیتا ہے۔ لیکن کسی بھی حکمت عملی کی لمبی عمر کے لئے اوور فٹ اور متحرک موافقت کو روکنا اہم ہے۔ صرف سخت جاری اصلاحات اور جانچ کے ذریعے ہی ایک مقدار کی حکمت عملی کامیابی کو برقرار رکھ سکتی ہے۔
/*backtest start: 2022-09-16 00:00:00 end: 2023-09-22 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/ // © levieux //@version=5 strategy(title='Configurable Multi MA Crossover Voting System', shorttitle='Configurable Multi MA Crossover Voting System', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1) crossoverConfig= input.string(defval="2x4,3x5,4x6", title="Crossover Config") source= input.source(high) maType= input.string("WMA", title="Moving Average Type", options=["WMA","SMA","VWMA"]) atrPeriod= input(14, title="ATR Period") profitAtr = input(10, title="Profit ATR x") lossAtr = input(5, title="Loss ATR x") ma(src,length,type) => float ma = switch type "SMA" => ta.sma(src, length) "WMA" => ta.wma(src, length) "VWMA" => ta.vwma(src, length) crossoverGroups= str.split(crossoverConfig, ",") crossoverCount= array.size(crossoverGroups) crossovers= array.new_string(crossoverCount) positions= array.new_int(crossoverCount, 0) longVotes= 0 for i= 0 to crossoverCount-1 crossover= str.tostring(array.get(crossoverGroups, i)) crossoverBoundaries= str.split(crossover, "x") int fastLength= math.round(str.tonumber(array.get(crossoverBoundaries, 0))) int slowLength= math.round(str.tonumber(array.get(crossoverBoundaries, 1))) wmaFast= ma(source,fastLength,maType) wmaSlow= ma(source,slowLength,maType) if wmaFast>wmaSlow longVotes:= longVotes + 1 array.set(positions, i, 1) longCondition= longVotes==crossoverCount and strategy.position_size==0 //profitTicks = profitAtr*ta.atr(atrPeriod)/syminfo.mintick //lossTicks = lossAtr*ta.atr(atrPeriod)/syminfo.mintick profitPrice= close+profitAtr*ta.atr(atrPeriod) lossPrice= close-lossAtr*ta.atr(atrPeriod) if strategy.position_size>0 profitPrice:= profitPrice[1] lossPrice:= lossPrice[1] plot(profitPrice, color=color.green) plot(lossPrice, color=color.red) if longCondition and profitPrice>0 strategy.entry("Long", strategy.long) if longVotes<crossoverCount and strategy.position_size>0 and (high>profitPrice or low<lossPrice) strategy.close("Long") longVotes:= 0