
نسبتاً متحرک حکمت عملی اسٹاک اور انڈیکس کی نقل و حرکت کا موازنہ کرکے ، بڑے بازار کے مقابلے میں اسٹاک کی طاقت کا فیصلہ کرنے کے لئے ، جب اسٹاک کی نقل و حرکت بڑے بازار سے زیادہ ہو تو خریدیں ، اور جب اسٹاک کی نقل و حرکت بڑے بازار سے کم ہو تو بیچیں ، تاکہ اسٹاک کی ترقی کے عروج کو پکڑ سکیں۔
اس حکمت عملی کا مقصد اسٹاک کے مقابلے میں بڑے بازار کی طاقت اور کمزوری کا اندازہ لگانا ہے۔ اس کی منطق یہ ہے:
اس منطق کے ساتھ ، ہم ایک اسٹاک خرید سکتے ہیں جب اس کی نمو عروج پر ہے ، اور جب اس کی ترقی کی طاقت ختم ہوجائے تو اسے وقت پر بیچ دیں ، اور اس کی اونچائی پر اضافی آمدنی کو لاک کریں۔
رشتہ دار متحرک حکمت عملی کے بنیادی فوائد یہ ہیں:
اس کے علاوہ، اس میں کچھ خطرات بھی ہیں:
ان خطرات کو مناسب طریقے سے روکنے اور روکنے کے نقصانات، مناسب ایڈجسٹمنٹ پیرامیٹرز اور دیگر طریقوں سے کنٹرول کیا جا سکتا ہے.
رشتہ دار متحرک حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
رشتہ دار متحرک حکمت عملی انفرادی اسٹاک کے نسبتا بڑے حجم کی ترقی کے عروج کو پکڑنے کے ذریعہ اضافی منافع حاصل کرنے کے لئے موثر ہے۔ اس حکمت عملی میں خرید و فروخت کی سادہ اور واضح منطق ، کام کرنے میں آسانی ، پیرامیٹرز کی اصلاح اور خطرے کے کنٹرول کے ذریعہ بہتر اثر حاصل کرنے کے فوائد ہیں۔
/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 15m
basePeriod: 5m
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/
// © HeWhoMustNotBeNamed
//@version=4
strategy("Relative Returns Strategy", overlay=false, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)
index_ticker=input("BTC_USDT:swap")
Loopback = input(40, step=20)
useStopAndIndexReturns = input(true)
useStopAndIndexReturnsMa = input(true)
useDifference = not useStopAndIndexReturns
MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
MALength = input(10, minval=10,step=10)
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Backtest Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "Backtest End Time", type = input.time)
inDateRange = true
f_secureSecurity(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on)
f_getMovingAverage(source, MAType, length)=>
ma = sma(source, length)
if(MAType == "ema")
ma := ema(source,length)
if(MAType == "hma")
ma := hma(source,length)
if(MAType == "rma")
ma := rma(source,length)
if(MAType == "vwma")
ma := vwma(source,length)
if(MAType == "wma")
ma := wma(source,length)
ma
index = f_secureSecurity(index_ticker, '1D', close, 0)
stock_return = (close - close[Loopback])*100/close
index_return = (index - index[Loopback])*100/index
stock_return_ma = f_getMovingAverage(stock_return, MAType, MALength)
index_return_ma = f_getMovingAverage(index_return, MAType, MALength)
relativeReturns = stock_return - index_return
relativeReturns_ma = f_getMovingAverage(relativeReturns, MAType, MALength)
plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma : stock_return : na, title="StockReturn", color=color.green, linewidth=1)
plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? index_return_ma : index_return : na, title="IndexReturn", color=color.red, linewidth=1)
plot(useDifference?relativeReturns:na, title="Relative-Returns", color=color.blue, linewidth=1)
plot(useDifference?relativeReturns_ma:na, title="MA", color=color.red, linewidth=1)
buyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma > index_return_ma : stock_return > index_return : relativeReturns > relativeReturns_ma)
closeBuyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma < index_return_ma : stock_return < index_return : relativeReturns < relativeReturns_ma)
strategy.entry("Buy", strategy.long, when=buyCondition and inDateRange, oca_name="oca")
strategy.close("Buy", when=closeBuyCondition)