اوسط ریورس ٹریڈنگ کی حکمت عملی تجارتی فیصلے کرنے کے لئے ایک چلتی اوسط سے قیمت کے انحراف پر مبنی ہے۔ اس میں قیمتوں کے مختصر مدتی انحراف اور طویل مدتی ریورس پیٹرن کا فائدہ اٹھایا جاتا ہے جب قیمتیں چلتی اوسط سے نمایاں طور پر نیچے یا اوپر ہوتی ہیں اور قیمتوں میں واپسی کے وقت پوزیشنیں بند ہوجاتی ہیں۔
حکمت عملی پہلے ایک مخصوص مدت کے دوران ایک چلتی اوسط کا حساب لگاتی ہے تاکہ طویل مدتی قیمت کے رجحان کی نمائندگی کی جاسکے۔ پھر یہ چلتی اوسط سے قیمت کے انحراف کی بنیاد پر پوزیشنوں کے وقت اور سائز کا تعین کرتی ہے۔
جب قیمت ایک خاص فیصد کی طرف سے چلتی اوسط سے نیچے آجاتی ہے تو ، اس سے یہ اشارہ ہوتا ہے کہ قیمت طویل مدتی رجحان سے انحراف کرتی ہے۔ اس معاملے میں ، انحراف کے بڑھنے کے ساتھ ہی آہستہ آہستہ لمبی پوزیشنیں بڑھتی ہوئی سائز کے ساتھ بنائی جاتی ہیں۔ جب قیمت چلتی اوسط سے اوپر لوٹ جاتی ہے ، جس سے اوسط میں واپسی کا اشارہ ہوتا ہے تو ، منافع حاصل کرنے کے لئے لمبی پوزیشنیں بند ہوجاتی ہیں۔
اسی طرح ، جب قیمت ایک حد تک چلتی اوسط سے اوپر بڑھتی ہے تو ، مختصر پوزیشنیں بنتی ہیں۔ جب قیمت چلتی اوسط کی طرف واپس گرتی ہے تو ، مختصر پوزیشنیں منافع کے ساتھ بند ہوجاتی ہیں۔
اسٹاک کی قیمتوں کے طویل مدتی توازن کے رجحان کی پیروی کرنے اور اہم رجحان کی سمت کی نشاندہی کرنے کے لئے چلتی اوسط کی رجحان کی شناخت کی صلاحیت کا استعمال کریں.
اوسط لاگت کو کم کرکے پوزیشنوں میں پیمانے پر، بہتر اندراج کی قیمتوں کو حاصل کریں.
منافع کے مختلف سطحوں پر منافع کو یقینی بنانے کے لئے مرحلہ وار منافع کو اپنانا ، خطرات کو کم کرنا۔
کنٹرول پوزیشن کا سائز مقررہ فی صد کے مطابق ایک ہی تجارت کے نقصان کے سائز کو محدود کرنے کے لئے.
لچکدار پیرامیٹر کی ترتیبات جیسے مختلف مصنوعات پر منحصر چلتی اوسط مدت اور پوزیشن سائزنگ۔
قیمتوں میں اتار چڑھاؤ کے دوران بار بار اسٹاپ نقصان۔ اسٹاپ نقصان کی حد کو بڑھا سکتا ہے یا دوسرے فلٹرز شامل کرسکتا ہے۔
مضبوط رجحان چلتی اوسط کو توڑ سکتا ہے ، جو اوسط ریورس پر بند نہیں ہوسکتا ہے۔ رجحان کی طاقت کے اشارے کے ذریعہ شناخت کردہ پوزیشن کا سائز کم کرسکتا ہے۔
پیرامیٹرز کی غلط ترتیبات کا نتیجہ بہت زیادہ جارحانہ اندراجات یا رکاوٹوں میں پڑ سکتا ہے۔ مارکیٹ کے حالات کی بنیاد پر محتاط بیک ٹسٹنگ اور ایڈجسٹمنٹ ضروری ہے۔
اعلی تجارتی تعدد سے تجارتی اخراجات میں کافی اضافہ ہوتا ہے۔ پیرامیٹر کی اصلاح میں لاگت کے عوامل پر غور کیا جانا چاہئے۔
پروڈکٹ کی خصوصیات کو اپنانے کے لئے چلتی اوسط مدت کو بہتر بنائیں.
خطرے اور واپسی کو متوازن کرنے کے لئے پوزیشن سائزنگ کو بہتر بنائیں.
غیر ضروری تجارت سے بچنے کے لئے دیگر تکنیکی فلٹرز شامل کریں.
مارکیٹ کے اتار چڑھاؤ کی سطح کی بنیاد پر پوزیشن کے سائز کو ایڈجسٹ کرنے کے لئے اتار چڑھاؤ کے اقدامات شامل کریں.
خطرے کو کم کرنے اور واپسی کو بڑھانے کے لئے منافع کے ہدف کو بڑھانا.
اوسط ریورس حکمت عملی اسٹاک کے توازن ریورس رجحان کو استعمال کرتی ہے جس میں چلتی اوسط سے انحراف پر داخل ہوتا ہے اور ریورس پر منافع حاصل ہوتا ہے۔ مناسب پیرامیٹر ٹیوننگ اور فلٹرز کے ساتھ ، یہ مارکیٹ میں ہونے والی تبدیلیوں کے مطابق ڈھال سکتا ہے اور رسک کنٹرول کے تحت اچھی واپسی حاصل کرسکتا ہے۔ اس حکمت عملی میں رجحان کی پیروی اور رسک مینجمنٹ دونوں شامل ہیں ، جس کی وجہ سے سرمایہ کاروں کے لئے تحقیق اور درخواست دینے کے قابل ہے۔
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("YJ Mean Reversion", overlay=true) //Was designed firstly to work on an index like the S&P 500 , which over time tends to go up in value. //Avoid trading too frequently (e.g. Daily, Weekly), to avoid getting eaten by fees. //If you change the underlying asset, or time frame, tweaking the moving average may be necessary. //Can work with a starting capital of just $1000, optimise the settings as necessary. //Accepts floating point values for the amount of units to purchase (e.g. Bitcoin ). //If price of units exceeds available capital, script will cancel the buy. //Adjusted the input parameters to be more intuitive. //input variables movingAverage = input(title="Moving Average (bars)", type=input.integer, defval=28, minval=1, maxval=1000) //riskPercentage = input(title="Amount to Risk (%)", type=input.integer, defval=1, minval=1, maxval=50) deviation = input(title="Deviation Increment (%)", type=input.float, defval=5, minval=0.01, maxval=100) / 100 unitsLevel1 = input(title="Level 1 (units)", type=input.float, defval=1, minval=0.0001, maxval=10000) unitsLevel2 = input(title="Level 2 (units)", type=input.float, defval=2, minval=0.0001, maxval=10000) unitsLevel3 = input(title="Level 3 (units)", type=input.float, defval=4, minval=0.0001, maxval=10000) unitsLevel4 = input(title="Level 4 (units)", type=input.float, defval=8, minval=0.0001, maxval=10000) unitsLevel5 = input(title="Level 5 (units)", type=input.float, defval=16, minval=0.0001, maxval=10000) //moving average and ma slope (use on weekly chart) ma = sma(close, movingAverage) //sl = ma > ma[4] //units to buy //amount = riskPercentage / 100 * (strategy.initial_capital + strategy.netprofit) //units = floor(amount / close) //mode 1 //strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (strategy.position_size < 10)) //strategy.order("sell", false, strategy.position_size, when = (close > 1.05 * ma) and (strategy.position_size > 0)) //mode 2 //strategy.order("buy", true, 1, when = close < 0.8 * ma) //strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0)) //mode 3 //strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("buy", true, 2, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("buy", true, 4, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("buy", true, 8, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("buy", true, 16, when = (close < 0.75 * ma)) //strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0)) //mode 4 //strategy.order("buy", true, 1, when = (close < 0.98 * ma) and (close > 0.96 * ma) and (sl)) //strategy.order("buy", true, 2, when = (close < 0.96 * ma) and (close > 0.94 * ma) and (sl)) //strategy.order("buy", true, 4, when = (close < 0.94 * ma) and (close > 0.92 * ma) and (sl)) //strategy.order("buy", true, 8, when = (close < 0.92 * ma) and (close > 0.90 * ma) and (sl)) //strategy.order("buy", true, 16, when = (close < 0.90 * ma) and (sl)) //strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0)) //mode 5 //strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("buy", true, 2, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("buy", true, 4, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("buy", true, 8, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("buy", true, 16, when = (close < 0.75 * ma)) //strategy.order("sell", false, 1, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 2, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 4, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 8, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 16, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0)) //mode 6 //strategy.order("B1", true, unitsLevel1 * units, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("B2", true, unitsLevel2 * units, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("B3", true, unitsLevel3 * units, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("B4", true, unitsLevel4 * units, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("B5", true, unitsLevel5 * units, when = (close < 0.75 * ma)) //strategy.order("S1", false, unitsLevel1 * units, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0)) //strategy.order("S2", false, unitsLevel2 * units, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0)) //strategy.order("S3", false, unitsLevel3 * units, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0)) //strategy.order("S4", false, unitsLevel4 * units, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0)) //strategy.order("S5", false, unitsLevel5 * units, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0)) //mode 7 //strategy.order("B1", true, units, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("B2", true, units, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("B3", true, units, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("B4", true, units, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("B5", true, units, when = (close < 0.75 * ma)) //strategy.order("S1", false, units, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0)) //strategy.order("S2", false, units, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0)) //strategy.order("S3", false, units, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0)) //strategy.order("S4", false, units, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0)) //strategy.order("S5", false, units, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0)) //banding calculations aH = 1.0 - deviation aL = aH - deviation bH = aL bL = bH - deviation cH = bL cL = cH - deviation dH = cL dL = dH - deviation eH = dL strategy.initial_capital = 50000 //mode 8 strategy.order("B1", true, unitsLevel1, when = (close < aH * ma) and (close > aL * ma) and (unitsLevel1 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B2", true, unitsLevel2, when = (close < bH * ma) and (close > bL * ma) and (unitsLevel2 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B3", true, unitsLevel3, when = (close < cH * ma) and (close > cL * ma) and (unitsLevel3 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B4", true, unitsLevel4, when = (close < dH * ma) and (close > dL * ma) and (unitsLevel4 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B5", true, unitsLevel5, when = (close < eH * ma) and (unitsLevel5 * close < (strategy.initial_capital + strategy.netprofit))) //banding calculations fL = 1.0 + deviation fH = fL + deviation gL = fH gH = gL + deviation hL = gH hH = hL + deviation iL = hH iH = iL + deviation jL = iH strategy.order("S1", false, unitsLevel1, when = (close > fL * ma) and (close < fH * ma) and (strategy.position_size > 0)) strategy.order("S2", false, unitsLevel2, when = (close > gL * ma) and (close < gH * ma) and (strategy.position_size > 0)) strategy.order("S3", false, unitsLevel3, when = (close > hL * ma) and (close < hH * ma) and (strategy.position_size > 0)) strategy.order("S4", false, unitsLevel4, when = (close > iL * ma) and (close < iH * ma) and (strategy.position_size > 0)) strategy.order("S5", false, unitsLevel5, when = (close > jL * ma) and (strategy.position_size > 0)) plot(ma, color=#666666, linewidth=5)