وسائل لوڈ ہو رہے ہیں... لوڈنگ...

چلتی اوسط پر مبنی اوسط ریورس ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-26 15:38:14
ٹیگز:

img

جائزہ

اوسط ریورس ٹریڈنگ کی حکمت عملی تجارتی فیصلے کرنے کے لئے ایک چلتی اوسط سے قیمت کے انحراف پر مبنی ہے۔ اس میں قیمتوں کے مختصر مدتی انحراف اور طویل مدتی ریورس پیٹرن کا فائدہ اٹھایا جاتا ہے جب قیمتیں چلتی اوسط سے نمایاں طور پر نیچے یا اوپر ہوتی ہیں اور قیمتوں میں واپسی کے وقت پوزیشنیں بند ہوجاتی ہیں۔

حکمت عملی منطق

حکمت عملی پہلے ایک مخصوص مدت کے دوران ایک چلتی اوسط کا حساب لگاتی ہے تاکہ طویل مدتی قیمت کے رجحان کی نمائندگی کی جاسکے۔ پھر یہ چلتی اوسط سے قیمت کے انحراف کی بنیاد پر پوزیشنوں کے وقت اور سائز کا تعین کرتی ہے۔

جب قیمت ایک خاص فیصد کی طرف سے چلتی اوسط سے نیچے آجاتی ہے تو ، اس سے یہ اشارہ ہوتا ہے کہ قیمت طویل مدتی رجحان سے انحراف کرتی ہے۔ اس معاملے میں ، انحراف کے بڑھنے کے ساتھ ہی آہستہ آہستہ لمبی پوزیشنیں بڑھتی ہوئی سائز کے ساتھ بنائی جاتی ہیں۔ جب قیمت چلتی اوسط سے اوپر لوٹ جاتی ہے ، جس سے اوسط میں واپسی کا اشارہ ہوتا ہے تو ، منافع حاصل کرنے کے لئے لمبی پوزیشنیں بند ہوجاتی ہیں۔

اسی طرح ، جب قیمت ایک حد تک چلتی اوسط سے اوپر بڑھتی ہے تو ، مختصر پوزیشنیں بنتی ہیں۔ جب قیمت چلتی اوسط کی طرف واپس گرتی ہے تو ، مختصر پوزیشنیں منافع کے ساتھ بند ہوجاتی ہیں۔

فوائد کا تجزیہ

  1. اسٹاک کی قیمتوں کے طویل مدتی توازن کے رجحان کی پیروی کرنے اور اہم رجحان کی سمت کی نشاندہی کرنے کے لئے چلتی اوسط کی رجحان کی شناخت کی صلاحیت کا استعمال کریں.

  2. اوسط لاگت کو کم کرکے پوزیشنوں میں پیمانے پر، بہتر اندراج کی قیمتوں کو حاصل کریں.

  3. منافع کے مختلف سطحوں پر منافع کو یقینی بنانے کے لئے مرحلہ وار منافع کو اپنانا ، خطرات کو کم کرنا۔

  4. کنٹرول پوزیشن کا سائز مقررہ فی صد کے مطابق ایک ہی تجارت کے نقصان کے سائز کو محدود کرنے کے لئے.

  5. لچکدار پیرامیٹر کی ترتیبات جیسے مختلف مصنوعات پر منحصر چلتی اوسط مدت اور پوزیشن سائزنگ۔

خطرے کا تجزیہ

  1. قیمتوں میں اتار چڑھاؤ کے دوران بار بار اسٹاپ نقصان۔ اسٹاپ نقصان کی حد کو بڑھا سکتا ہے یا دوسرے فلٹرز شامل کرسکتا ہے۔

  2. مضبوط رجحان چلتی اوسط کو توڑ سکتا ہے ، جو اوسط ریورس پر بند نہیں ہوسکتا ہے۔ رجحان کی طاقت کے اشارے کے ذریعہ شناخت کردہ پوزیشن کا سائز کم کرسکتا ہے۔

  3. پیرامیٹرز کی غلط ترتیبات کا نتیجہ بہت زیادہ جارحانہ اندراجات یا رکاوٹوں میں پڑ سکتا ہے۔ مارکیٹ کے حالات کی بنیاد پر محتاط بیک ٹسٹنگ اور ایڈجسٹمنٹ ضروری ہے۔

  4. اعلی تجارتی تعدد سے تجارتی اخراجات میں کافی اضافہ ہوتا ہے۔ پیرامیٹر کی اصلاح میں لاگت کے عوامل پر غور کیا جانا چاہئے۔

بہتری کی ہدایات

  1. پروڈکٹ کی خصوصیات کو اپنانے کے لئے چلتی اوسط مدت کو بہتر بنائیں.

  2. خطرے اور واپسی کو متوازن کرنے کے لئے پوزیشن سائزنگ کو بہتر بنائیں.

  3. غیر ضروری تجارت سے بچنے کے لئے دیگر تکنیکی فلٹرز شامل کریں.

  4. مارکیٹ کے اتار چڑھاؤ کی سطح کی بنیاد پر پوزیشن کے سائز کو ایڈجسٹ کرنے کے لئے اتار چڑھاؤ کے اقدامات شامل کریں.

  5. خطرے کو کم کرنے اور واپسی کو بڑھانے کے لئے منافع کے ہدف کو بڑھانا.

نتیجہ

اوسط ریورس حکمت عملی اسٹاک کے توازن ریورس رجحان کو استعمال کرتی ہے جس میں چلتی اوسط سے انحراف پر داخل ہوتا ہے اور ریورس پر منافع حاصل ہوتا ہے۔ مناسب پیرامیٹر ٹیوننگ اور فلٹرز کے ساتھ ، یہ مارکیٹ میں ہونے والی تبدیلیوں کے مطابق ڈھال سکتا ہے اور رسک کنٹرول کے تحت اچھی واپسی حاصل کرسکتا ہے۔ اس حکمت عملی میں رجحان کی پیروی اور رسک مینجمنٹ دونوں شامل ہیں ، جس کی وجہ سے سرمایہ کاروں کے لئے تحقیق اور درخواست دینے کے قابل ہے۔


/*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)

مزید