একাধিক সূচকের উপর ভিত্তি করে ক্রস-সাইকেল আর্বিট্রেজ কৌশল

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

img

সারসংক্ষেপ

এই কৌশলটি তিনটি ভিন্ন প্রযুক্তিগত সূচকের সমন্বয় ব্যবহার করে একটি ক্রস-চক্রের সালিশ কৌশল তৈরি করে যা কম ঝুঁকিপূর্ণ অতিরিক্ত রিটার্ন অর্জনের জন্য বিভিন্ন সময়সীমার মধ্যে মূল্যের প্রবণতা ক্যাপচার করে।

কৌশলগত যুক্তি

এই কৌশলটিতে ব্যবহৃত তিনটি প্রযুক্তিগত সূচক হল কেল্টনার চ্যানেল (কেসি), ভোলাটিলিটি স্টপ (ভিস্টপ), এবং উইলিয়ামস অ্যালিগেটর (ডাব্লুএই) । কেল্টনার চ্যানেলটি নির্ধারণ করতে ব্যবহৃত হয় যে দামগুলি চ্যানেলের পরিসরের বাইরে রয়েছে এবং এইভাবে ট্রেডিং সংকেত তৈরি করে। অস্থিরতা স্টপটি অপ্রয়োজনীয় স্টপ লস হ্রাস করার সময় স্টপ লস নিশ্চিত করার জন্য স্টপ লস অবস্থানগুলিকে গতিশীলভাবে সামঞ্জস্য করতে ব্যবহৃত হয়। উইলিয়ামস অ্যালিগেটর সূচকটি নির্ধারণ করতে ব্যবহৃত হয় যে দামগুলি একটি শক্তিশালী প্রবণতায় রয়েছে কিনা। বিশেষতঃ

  1. যখন মূল্য কেল্টনার চ্যানেলের উপরের রেলের চেয়ে বেশি হয়, তখন এটিকে একটি উত্থান সংকেত হিসাবে বিবেচনা করা হয়। যখন মূল্য কেল্টনার চ্যানেলের নিম্ন রেলের চেয়ে কম হয়, তখন এটিকে একটি হ্রাস সংকেত হিসাবে বিবেচনা করা হয়।

  2. ভোলটাইলিটি স্টপ মূল্যের অস্থিরতা এবং চ্যানেলের প্রস্থের উপর ভিত্তি করে স্টপ লস অবস্থান সেট করে। এটি অত্যধিক সংরক্ষণশীল স্টপ লস অবস্থানগুলি এড়ানোর সময় স্টপ লস নিশ্চিত করার জন্য গতিশীলভাবে সামঞ্জস্য করতে পারে।

  3. উইলিয়ামস অ্যালিগেটর সূচকটি ম্যাকডি এবং বলিংজার ব্যান্ড চ্যানেলের প্রস্থ গণনা করে দামগুলি একটি শক্তিশালী আপট্রেন্ড বা ডাউনট্রেন্ডে রয়েছে কিনা তা বিচার করে।

এই তিনটি সূচককে একত্রিত করে, বিভিন্ন সময়সীমার সিগন্যালগুলি ক্রস বৈধ করা হয়। এটি ভুল বিচার করার সম্ভাবনা হ্রাস করে এবং একটি অনুকূলিত কৌশল যুক্তি তৈরি করে।

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

এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল একাধিক সূচকগুলির সংমিশ্রণ দ্বারা আনা সুনির্দিষ্ট ট্রেডিং সংকেত। তিনটি সূচক বিভিন্ন সময়সীমার মধ্যে কাজ করে এবং একে অপরকে ক্রস বৈধ করে, যা কার্যকরভাবে ভুল বিচার করার সম্ভাবনা হ্রাস করতে পারে এবং সংকেতগুলির নির্ভুলতা বাড়িয়ে তুলতে পারে। তদতিরিক্ত, অস্থিরতা স্টপ সেটিংটি গতিশীল এবং ঝুঁকিগুলি আরও নিয়ন্ত্রণের জন্য রিয়েল-টাইম অস্থিরতা অনুযায়ী স্টপ লস অবস্থানটি সামঞ্জস্য করতে পারে।

একক সূচক কৌশলগুলির তুলনায়, এই সমন্বিত কৌশলটি আরও নির্ভুল এবং দক্ষ ট্রেডিং সংকেত সরবরাহ করতে পারে। একই সাথে, তিনটি সূচক একাধিক সময়সীমার মধ্যে ট্রেডিং রায় গঠনের জন্য একসাথে কাজ করে, যা একটি খুব বৈজ্ঞানিক এবং যুক্তিসঙ্গত লজিক ডিজাইন যা থেকে শেখার যোগ্য।

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

এই কৌশলটির প্রধান ঝুঁকি হ'ল অনুপযুক্ত পরামিতি সেটিংগুলি ওভারফিটিংয়ের কারণ হতে পারে। তিনটি সূচকের মোট 8 টি পরামিতি রয়েছে। অনুপযুক্ত সেটিংস কৌশলটিকে প্রতিকূলভাবে প্রভাবিত করতে পারে। এছাড়াও, সূচকগুলির মধ্যে ওজন সম্পর্কও সঠিকভাবে কনফিগার করা দরকার, অন্যথায় সংকেতগুলি একে অপরকে নিরপেক্ষ করতে পারে এবং অবৈধ হয়ে যায়।

এই ঝুঁকিগুলি হ্রাস করার জন্য, প্যারামিটার সেটিংয়ের সময় বিভিন্ন বাজারের পরিবেশে অভিযোজনযোগ্যতা পুরোপুরি বিবেচনা করা উচিত, এবং ব্যাকটেস্টিং বিশ্লেষণের মাধ্যমে সর্বোত্তম প্যারামিটার সংমিশ্রণটি সামঞ্জস্য করা উচিত। তদতিরিক্ত, ট্রেডিং সংকেতগুলি কার্যকরভাবে ট্রিগার করা যায় তা নিশ্চিত করার জন্য সূচকগুলির মধ্যে ওজনগুলি যথাযথভাবে সামঞ্জস্য করুন। যখন ধারাবাহিক ক্ষতি ঘটে তখন ক্ষতি নিয়ন্ত্রণের জন্য অবস্থান আকার হ্রাস করার বিষয়টি বিবেচনা করুন।

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

এই কৌশলটির অপ্টিমাইজেশান স্পেস প্রধানত দুটি দিকের উপর দৃষ্টি নিবদ্ধ করেঃ প্যারামিটার টিউনিং এবং স্টপ লস কৌশলগুলির উন্নতি। বিশেষত নিম্নলিখিত দিকগুলি বিবেচনা করা যেতে পারেঃ

  1. সূচক পরামিতিগুলি আরও বৈজ্ঞানিকভাবে চয়ন করুন এবং পরামিতি সংমিশ্রণগুলি অনুকূল করুন। অ্যালগরিদমগুলি রিটার্ন সর্বাধিকীকরণ এবং ঝুঁকি হ্রাসের মতো লক্ষ্যগুলির সাথে সর্বোত্তম পরামিতিগুলি খুঁজে পেতে ব্যবহার করা যেতে পারে।

  2. স্টপ লস কৌশল উন্নত করুন অপ্রয়োজনীয় স্টপ লসকে আরও হ্রাস করার জন্য স্টপ লস নিশ্চিত করে, যার ফলে জয়ের হার উন্নত হয়। উদাহরণস্বরূপ, স্টপ লস সিগন্যাল হিসাবে আরও সূচক অন্তর্ভুক্ত করুন, বা স্টপ লস পজিশনের ধীরে ধীরে পলব্যাক সেট করুন।

  3. ভুল বিচার হার কমাতে সূচক এবং ট্রেডিং সিগন্যাল বিচারের যুক্তির মধ্যে ওজন অনুকূল করুন। আরও স্থিতিশীল এবং নির্ভরযোগ্য বিচারের নিয়ম তৈরি করতে আরও মূল্য আচরণ বৈশিষ্ট্য চালু করা যেতে পারে।

  4. স্বয়ংক্রিয় পরামিতি অপ্টিমাইজেশান অর্জনের জন্য মেশিন লার্নিং মডেল চালু করার চেষ্টা করুন। অথবা কৌশল মূল্যায়ন এবং উন্নতির জন্য গভীর শক্তিশালীকরণ শেখার প্রোগ্রামিং ব্যবহার করুন।

সংক্ষিপ্তসার

এই কৌশলটি কেল্টনার চ্যানেল, ভোলাটিলিটি স্টপ এবং উইলিয়ামস অ্যালিগেটরের সংমিশ্রণের মাধ্যমে একটি ক্রস-চক্রের সালিশ ব্যবস্থা তৈরি করে। মাল্টি-ইন্ডিক্টর সংমিশ্রণ সংকেত নির্ভুলতা উন্নত করে এবং গতিশীল স্টপ লস ঝুঁকি নিয়ন্ত্রণ করে। তবে পরামিতি সেটিং এবং অপ্টিমাইজেশনে উন্নতির সুযোগ রয়েছে। সামগ্রিকভাবে, এই কৌশলটির শক্তিশালী বৈজ্ঞানিকতা রয়েছে এবং আরও গবেষণা এবং প্রয়োগের মূল্যবান।


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuarryLake", overlay=true)  ///Ultilized modified full kelly for this strategy = 36%

///Keltner channel///
nPeriod = input(title="Keltner Period", type=input.integer, defval=200, minval=1)
Mult = input(title="Keltner Mult", type=input.integer, defval=5, minval=1)
xPrice = ema(hlc3, nPeriod)
xMove = ema(high - low, nPeriod)
xMoveMult = xMove * Mult
xUpper = xPrice + xMoveMult
xLower = xPrice - xMoveMult

// plot(xPrice, color=red, title="KSmid")
p1 = plot(xUpper, color=color.white, title="KSup")
p2 = plot(xLower, color=color.white, title="KSdn")
fill(p1, p2, color=close > xUpper ? color.green : close < xLower ? color.red : color.white)

kclongcondition = close > xUpper
kcshortcondition = close < xLower
kccloselongcondition = crossunder(close, xUpper)
kccloseshortcondition = crossover(close, xLower)

///Volatility Stop///
length = input(title="Vstop length", type=input.integer, defval=3, minval=1)
mult1 = 1.5

atr_ = atr(length)
max1 = 0.0
min1 = 0.0
is_uptrend_prev = false
stop = 0.0
vstop_prev = 0.0
vstop1 = 0.0
is_uptrend = false
is_trend_changed = false
max_ = 0.0
min_ = 0.0
vstop = 0.0
max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)
is_uptrend_prev := nz(is_uptrend[1], true)
stop := is_uptrend_prev ? max1 - mult1 * atr_ : min1 + mult1 * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult1 * atr_ : min_ + mult1 * atr_ : 
   vstop1

plot(vstop, color=is_uptrend ? color.green : color.red, style=plot.style_line, linewidth=1)

vstoplongcondition = close > vstop
vstoplongclosecondition = crossunder(close, vstop)
vstopshortcondition = close < vstop
vstopshortclosecondition = crossover(close, vstop)

///Waddah Attar Explosion///
sensitivity = input(150, title="Sensitivity")
fastLength = input(20, title="FastEMA Length")
slowLength = input(40, title="SlowEMA Length")
channelLength = input(20, title="BB Channel Length")
mult = input(2.0, title="BB Stdev Multiplier")
DEAD_ZONE = nz(rma(tr(true), 100)) * 3.7
calc_macd(source, fastLength, slowLength) =>
    fastMA = ema(source, fastLength)
    slowMA = ema(source, slowLength)
    fastMA - slowMA
calc_BBUpper(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis + dev
calc_BBLower(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis - dev
t1 = (calc_macd(close, fastLength, slowLength) - 
   calc_macd(close[1], fastLength, slowLength)) * sensitivity
t2 = (calc_macd(close[2], fastLength, slowLength) - 
   calc_macd(close[3], fastLength, slowLength)) * sensitivity
e1 = calc_BBUpper(close, channelLength, mult) - 
   calc_BBLower(close, channelLength, mult)
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

waelongcondition = trendUp and trendUp > DEAD_ZONE and trendUp > e1
waeshortcondition = trendDown and trendDown > DEAD_ZONE and trendDown > e1

///Long Entry///
longcondition = kclongcondition and vstoplongcondition and waelongcondition
if longcondition
    strategy.entry("Long", strategy.long)

///Long exit///
closeconditionlong = kccloselongcondition or vstoplongclosecondition
if closeconditionlong
    strategy.close("Long")

///Short Entry///
shortcondition = kcshortcondition and vstopshortcondition and waeshortcondition
if shortcondition
    strategy.entry("Short", strategy.short)

///Short exit///
closeconditionshort = kccloseshortcondition or vstopshortclosecondition
if closeconditionshort
    strategy.close("Short")

///Free Hong Kong, the revolution of our time///


আরো