আপেক্ষিক গতির কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৪-০১-২৯ ৮ঃ৩৮ঃ০৪
ট্যাগঃ

img

সারসংক্ষেপ

আপেক্ষিক গতির কৌশলটি বৃহত্তর বাজারের তুলনায় স্টকগুলির আপেক্ষিক শক্তি বিচার করার জন্য পৃথক স্টক এবং সূচকগুলির গতির তুলনা করে। এটি যখন স্টক গতি সূচকের চেয়ে বেশি হয় তখন এটি কিনে এবং যখন স্টক গতি সূচকের চেয়ে কম হয় তখন বিক্রি করে, যাতে পৃথক স্টকগুলির বৃদ্ধির শিখর ধরা যায়।

নীতিমালা

এই কৌশলটির মূল যুক্তি হ'ল বাজারের তুলনায় পৃথক স্টকগুলির আপেক্ষিক শক্তি বিচার করা, বিশেষতঃ

  1. স্টক এর গতি হিসাবে একটি সময়ের মধ্যে রিটার্ন গণনা করুন
  2. সূচক গতির সাথে একই সময়ের জন্য সূচক রিটার্ন গণনা করুন
  3. স্টক এবং সূচক গতিশীলতা মসৃণ করার জন্য চলমান গড় ব্যবহার করুন
  4. যখন স্টক গতির চলমান গড় সূচকের উপরে অতিক্রম করে, তখন স্টক গতি সামগ্রিকভাবে বাজারের চেয়ে শক্তিশালী বলে মনে করা হয় - এটি ক্রয় সংকেত
  5. যখন স্টক ইম্পোমেন্টাম চলমান গড় সূচক ইম্পোমেন্টাম চলমান গড়ের নীচে অতিক্রম করে, স্টক ইম্পোমেন্টামকে দুর্বল বলে মনে করা হয়, বিক্রয় সংকেতটি ট্রিগার করে

এই যুক্তির মাধ্যমে, আমরা যখন শেয়ারের বৃদ্ধি সমৃদ্ধ হয় তখন আমরা শেয়ার কিনতে পারি এবং যখন বৃদ্ধির গতি কমে যায় তখন বিক্রি করতে পারি, যা শেয়ারের সর্বাধিক বৃদ্ধির সময় অতিরিক্ত রিটার্নকে লক করে।

সুবিধা বিশ্লেষণ

আপেক্ষিক গতির কৌশলটির প্রধান সুবিধাঃ

  1. নির্দিষ্ট বাজার অবস্থার উদ্বেগ ছাড়াই স্টকগুলির বৃদ্ধির শিখরকে গতিশীলভাবে ক্যাপচার করতে পারে - যখন স্টক বৃদ্ধির পরিমাণ সামগ্রিক বাজারের চেয়ে বেশি হয় তখনই কিনুন
  2. চলমান গড়ের সাথে মসৃণতা স্বল্পমেয়াদী ওঠানামা ফিল্টার করে এবং সংকেত নির্ভরযোগ্যতা উন্নত করে
  3. সহজ সরাসরি ক্রয় এবং বিক্রয় শর্ত, সহজ বুঝতে এবং পরিচালনা
  4. আপেক্ষিক গতিবেগ গণনা এবং অপ্টিমাইজ করার জন্য সময়কাল কনফিগার করার নমনীয়তা

ঝুঁকি বিশ্লেষণ

আপেক্ষিক গতির কৌশল নিয়েও কিছু ঝুঁকি রয়েছেঃ

  1. বৃদ্ধির শিখর শেষ হওয়ার পরে স্টকগুলি প্রত্যাহার করতে পারে, যা লাভের ঝুঁকিকে যথেষ্ট পরিমাণে উপস্থাপন করে না
  2. আপেক্ষিক গতির সংকেত মিথ্যা হতে পারে, বাস্তব শিখর পরিবর্তে একটি জাল সনাক্তকরণ
  3. সর্বাধিক ক্ষতি নিয়ন্ত্রণ করতে স্টপ লস সেট করতে হবে

এই ঝুঁকিগুলি যুক্তিসঙ্গত মুনাফা গ্রহণ, স্টপ লস, প্যারামিটার টিউনিং ইত্যাদির মাধ্যমে পরিচালনা করা যেতে পারে।

অপ্টিমাইজেশান নির্দেশাবলী

আপেক্ষিক গতির কৌশল প্রধানত নিম্নলিখিত দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. অপ্টিমাম খুঁজে বের করার জন্য কম্পিউটিং গতির জন্য বিভিন্ন সময়সীমা পরীক্ষা
  2. সেরা পরামিতি জন্য চলন্ত গড় বিভিন্ন ধরনের এবং দৈর্ঘ্য চেষ্টা করুন
  3. ভলিউম ফিল্টার যোগ করুন গতির অভাবের কারণে মিথ্যা ব্রেকআউট এড়াতে
  4. অপ্টিমাইজড এন্ট্রি টাইমিং নিশ্চিত করার জন্য অন্যান্য সূচক অন্তর্ভুক্ত করুন

সিদ্ধান্ত

আপেক্ষিক গতির কৌশলটি আলফা তৈরির জন্য সামগ্রিক বাজারের তুলনায় পৃথক স্টকগুলির অতিরিক্ত বৃদ্ধির পর্যায়গুলি ক্যাপচার করে। এর সহজ, পরিষ্কার কিনুন / বিক্রয় যুক্তি এবং অপারেশন সহজতার সাথে এবং যখন প্যারামিটার অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণের সাথে যুক্ত হয়, তখন এই কৌশলটি খুব ভাল পারফর্ম করতে পারে।


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

আরো