অ্যাডাপ্টিভ রেগুলারাইজড মুভিং এভারেজ ক্রস মার্কেট আর্বিট্রেজ স্ট্র্যাটেজি

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

img

সারসংক্ষেপ

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

কৌশল নীতি

কৌশলটি প্রথমে একটি স্কেলমিনিম্যাক্স ফাংশন সংজ্ঞায়িত করে নির্দিষ্ট পরিসরে সময় সিরিজকে মানসম্মত করার জন্য। তারপরে এটি মসৃণ সংকেত লাইন সিগ গণনা করতে একটি অভিযোজিত নিয়মিত চলমান গড় ফাংশন রিমা সংজ্ঞায়িত করে। সংকেত লাইন গণনাটি হলঃ

  1. একটি স্লাইডিং উইন্ডো সংজ্ঞায়িত করুন, ডিফল্ট দৈর্ঘ্য 5 দিন।

  2. প্রতিটি দিনের সিগ মান পূর্ববর্তী সিগ মান এবং বর্তমান বন্ধ মূল্যের ওজনযুক্ত গড়। ওজন একটি অভিযোজিত ওজন প্রক্রিয়া ব্যবহার করে, যেখানে বর্তমান মূল্যের কাছাকাছি মানগুলি উচ্চতর ওজনযুক্ত হয়।

  3. সিগ ট্রানজিশনকে মসৃণ করার জন্য একটি রেগুলারাইজার হিসাবে একটি λ পরামিতি যুক্ত করুন।

সিগন্যাল লাইন পাওয়ার পর, কৌশলটি সিগন্যাল লাইন এবং মূল্যের গোল্ডেন/ডেড ক্রস এর উপর ভিত্তি করে লং/শর্ট নির্ধারণ করে। বিশেষ করেঃ

  1. যখন সিআইজি দামের উপরে চলে যায়, তখন লম্বা হয়ে যায়।

  2. যখন সিআইজি দামের নিচে চলে যায়, তখন শর্ট হয়ে যায়।

এছাড়াও, কৌশলটি নমনীয়তা বাড়ানোর জন্য সামঞ্জস্যযোগ্য পরামিতি হিসাবে মসৃণ ফ্যাক্টর এবং শো_লাইন যুক্ত করে।

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

ঐতিহ্যগত চলমান গড় কৌশল তুলনায়, এই কৌশল নিম্নলিখিত সুবিধা আছেঃ

  1. এডাপ্টিভ ওয়েটিং মেকানিজম দামের পরিবর্তনে দ্রুত প্রতিক্রিয়া জানাতে পারে।

  2. যোগ করা নিয়ন্ত্রকটি সিগন্যাল লাইনটিকে মসৃণ করে তোলে, তীব্র দামের ওঠানামা থেকে ভুল সংকেত এড়ায়।

  3. ক্রস-মার্কেট আর্বিট্রেজ বাজারগুলির মধ্যে মূল্য পার্থক্য থেকে লাভবান হতে পারে।

  4. বাজারের অবস্থার অনুযায়ী নমনীয় নিয়ন্ত্রিত পরামিতিগুলি অপ্টিমাইজ করা যেতে পারে।

ঝুঁকি এবং সমাধান

এই কৌশলের কিছু ঝুঁকিও রয়েছে:

  1. ডাবল ক্রসওভারের ভুল সংকেতগুলির সম্ভাবনা বেশি। সমাধানটি সিগন্যাল লাইনের দোলন এড়ানোর জন্য মসৃণ পরামিতিটি সঠিকভাবে সামঞ্জস্য করা।

  2. ক্রস-মার্কেট আর্বিট্রেজের জন্য দুটি বাজারের দামের সম্পর্ক এবং ধারাবাহিক প্রবণতা থাকা প্রয়োজন। সমাধানটি হল আর্বিট্রেজের জন্য অত্যন্ত সম্পর্কিত বাজার নির্বাচন করা।

  3. প্যারামিটার অপ্টিমাইজেশনের জন্য ব্যাকটেস্টিংয়ের জন্য পর্যাপ্ত historicalতিহাসিক ডেটা প্রয়োজন। সমাধানটি লাইভ ট্রেডিংয়ে সতর্কতার সাথে প্যারামিটারগুলি সামঞ্জস্য করা।

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

কৌশলটি নিম্নলিখিত দিকগুলিতেও অপ্টিমাইজ করা যেতে পারেঃ

  1. প্যারামিটার নির্বাচনে, মেশিন লার্নিং অ্যালগরিদমগুলি স্বয়ংক্রিয়ভাবে প্যারামিটার সমন্বয়গুলি অনুকূল করতে প্রবর্তিত হতে পারে।

  2. সিগন্যাল উৎপাদনে, আরও স্থিতিশীল ট্রেডিং সিগন্যাল তৈরির জন্য আরও সূচক প্রবর্তন করা যেতে পারে।

  3. ঝুঁকি নিয়ন্ত্রণে, স্টপ লস প্রতি ট্রেড প্রতি ক্ষতি সীমাবদ্ধ করতে সেট করা যেতে পারে।

  4. ক্রস-মার্কেট আর্বিট্রেজে, এটি আরও উচ্চতর সম্পর্কিত ট্রেডিং সম্পদগুলিতে প্রসারিত করা যেতে পারে।

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

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


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

//@version=3
strategy("Crossover82%", overlay=true)

//
// Functions
//
scaleMinimax(X, p, min, max) => 
    hi = highest(X, p), lo = lowest(X, p)
    (max - min) * (X - lo)/(hi - lo) + min

rema(ts, p) => // regularized ma
    rm = 0.0, lambda = .5, a = 2 / (p + 1)
    rm := (nz(rm[1]) + a * (ts - nz(rm[1])) + lambda * (2 * nz(rm[1]) - nz(rm[2]))) / (lambda + 1)
    rm
    
//
// Inputs
//
X = input(close, title="Data source")
smooth = input(2, title="REMA smooth factor")
show_line = input(true, title="Show signal line")

//
// Main
//
p = 5
sig = rema(scaleMinimax(pow(X*p,-X) - 0.1, 100, lowest(X, 100), highest(X, 100)), smooth)

plot(show_line ? sig : na, linewidth=1)
plot(cross(sig, X) ? ohlc4 : na, style=circles, linewidth=8, color=blue, transp=50)

longCondition = crossover(sig, X)
if (longCondition)
    strategy.entry("LE", strategy.long)

shortCondition = crossunder(sig, X)
if (shortCondition)
    strategy.entry("SE", strategy.short)



আরো