
আপেক্ষিক গতিশীলতা কৌশলটি শেয়ারের গতিশীলতা এবং সূচকগুলির তুলনা করে শেয়ারের শক্তি এবং বড় বাজারের তুলনায় দুর্বলতা নির্ধারণ করে। যখন শেয়ারের গতিশীলতা বড় বাজারের চেয়ে বেশি থাকে তখন কেনা হয় এবং যখন শেয়ারের গতিশীলতা বড় বাজারের চেয়ে কম থাকে তখন বিক্রি হয়, যাতে শেয়ারের বৃদ্ধির শিখর ধরা যায়।
এই কৌশলটি মূলত মূল বাজারের তুলনায় শেয়ারের শক্তি এবং দুর্বলতার মূল্যায়ন করে।
এই যুক্তি অনুযায়ী, আমরা একটি শেয়ারের উচ্চ প্রবৃদ্ধির সময় কিনতে পারি এবং যখন তার প্রবৃদ্ধির গতি কমে যায় তখন তা বিক্রি করতে পারি এবং উচ্চ প্রবৃদ্ধির সময় অতিরিক্ত লাভের জন্য লক করতে পারি।
আপেক্ষিক গতিশীলতা কৌশল প্রধানত নিম্নলিখিত সুবিধার আছেঃ
কিন্তু এই কৌশলগুলোতে কিছু ঝুঁকি রয়েছেঃ
এই ঝুঁকিগুলি যুক্তিসঙ্গত স্টপ লস, প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করার মতো পদ্ধতির মাধ্যমে নিয়ন্ত্রণ করা যেতে পারে।
আপেক্ষিক গতিশীলতা কৌশল নিম্নলিখিত দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ
আপেক্ষিক গতিশীলতা কৌশলটি প্রতিটি শেয়ারের তুলনামূলকভাবে বড় আকারের বৃদ্ধির শীর্ষগুলিকে ক্যাপচার করে কার্যকরভাবে অতিরিক্ত উপার্জন অর্জন করতে পারে। এই কৌশলটির সহজ এবং পরিষ্কার ক্রয় বিক্রয় যুক্তি, পরিচালনা সহজতার সুবিধা রয়েছে, প্যারামিটার অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণের মাধ্যমে আরও ভাল ফলাফল পাওয়া যায়।
/*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)