কোয়াড্রাটিক ফিট ট্রেডিং সিগন্যাল কৌশল


সৃষ্টির তারিখ: 2023-09-23 15:40:57 অবশেষে সংশোধন করুন: 2023-09-23 15:40:57
অনুলিপি: 2 ক্লিকের সংখ্যা: 627
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

কৌশল নীতি

এই নীতির প্রধান উপাদান এবং নিয়মাবলী নিম্নরূপঃ

  1. সমন্বয় উচ্চ-নিম্ন পয়েন্টঃ K-রেখার উচ্চ-নিম্ন পয়েন্টের সমন্বয় করতে দ্বিতীয় কার্ভের সর্বনিম্ন দ্বিগুণ ব্যবহার করুন।

  2. ক্রয় সংকেত: যখন K-লাইন বন্ধের দাম উর্ধ্বগামী কার্ভকে ভেঙে দেয় তখন একটি ক্রয় সংকেত তৈরি হয়।

  3. বিক্রয় সংকেত: যখন K-লাইন বন্ধের মূল্য নিম্নগামী কার্ভকে ভেঙে দেয় তখন বিক্রয় সংকেত তৈরি হয়।

  4. N-চক্র যাচাইকরণঃ N-চক্রের জন্য ধারাবাহিকতা প্রয়োজন, যাতে ভুয়া ব্রেকিং এড়ানো যায়।

  5. সমতল অবস্থানের সংকেতঃ কোন স্পষ্ট সমতল অবস্থানের সংকেত নেই, রিটার্নিং অপ্টিমাইজেশনের মাধ্যমে অবস্থানের সময় নির্ধারণ করা হয়েছে।

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

সামর্থ্য বিশ্লেষণ

অন্যান্য সিস্টেমের তুলনায় এই কৌশলটির প্রধান সুবিধাগুলি হলঃ

  1. গাণিতিক মডেলের সাহায্যে সমন্বয় করা হয়েছে।

  2. ট্রেডিং প্রযুক্তি এবং পরিসংখ্যানগত মডেলের সমন্বয়ে এই পদ্ধতিটি উদ্ভাবনী।

  3. মাল্টি-সাইক্লিক ভেরিফিকেশন চালু করা হয়েছে, যা ভুয়া ব্রেকআপগুলিকে ফিল্টার করতে পারে।

  4. রিটার্ন অপ্টিমাইজেশান সর্বোত্তম সময় ধরে রাখার জন্য অনুসন্ধান করে।

  5. এটি বাস্তবায়নের জন্য খুব কঠিন নয় এবং এটি নমনীয়ভাবে সামঞ্জস্য করা যেতে পারে।

  6. মডেলগুলি স্বয়ংক্রিয়ভাবে আপডেট হয়, কোনও ম্যানুয়াল রক্ষণাবেক্ষণের প্রয়োজন হয় না।

  7. বিভিন্ন জাতের এবং চক্রের জন্য প্যারামিটার দৃঢ়তা পরীক্ষা করা যেতে পারে।

  8. মেশিন লার্নিং এর মাধ্যমে আরও উন্নত ও বৈধকরণ করা যায়।

  9. সামগ্রিকভাবে, নতুনত্বের একটি উচ্চ স্তর রয়েছে এবং এটি অন্বেষণযোগ্য।

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

কিন্তু এই কৌশলটি নিম্নলিখিত ঝুঁকিগুলিও বহন করেঃ

  1. ফ্যাশন প্রভাবটি প্যারামিটার নির্বাচনের উপর নির্ভর করে এবং এটি ওভার-অপ্টিমাইজ করা হতে পারে।

  2. ফ্যাশন বক্ররেখার একটি বিলম্ব রয়েছে যা ক্ষতির সম্পূর্ণ এড়াতে পারে না।

  3. তবে, এই ব্যবসায়ের পরিমাণ বিবেচনায় না নিলে, এটি সুইপ-আউট হওয়ার ঝুঁকিতে রয়েছে।

  4. পরিসংখ্যানগত অ্যারেটেজ দীর্ঘমেয়াদী স্থিতিশীলতার জন্য অতিরিক্ত লাভ অর্জন করা কঠিন।

  5. মডেলের স্থিতিশীলতা যাচাই করার জন্য সংক্ষিপ্ত পর্যবেক্ষণের সময়কাল প্রয়োজন।

  6. মাল্টি-প্রজাতির পরিবেশগত অভিযোজন পরীক্ষা করা হবে।

  7. ফিক্সড পজিশনের গতিশীল পরিবর্তন নেই।

  8. আয় প্রত্যাহারের হার কঠোরভাবে মূল্যায়ন করা প্রয়োজন।

অপ্টিমাইজেশান দিক

উপরের বিশ্লেষণের ভিত্তিতে, এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত হতে পারেঃ

  1. বিভিন্ন বাজার পরিবেশে পরামিতির দৃঢ়তা পরীক্ষা করা।

  2. ট্রেড ভলিউম যাচাইকরণ সূচক যোগ করুন।

  3. এদিকে, সিগন্যালের গুণগত মান উন্নত করার জন্য, রান-আউট লজিকের অপ্টিমাইজেশান করা হয়েছে।

  4. একটি গতিশীল পজিশন ম্যানেজমেন্ট মডেল তৈরি করা।

  5. স্টপ লস কৌশল প্রবর্তন করা।

  6. তহবিল ব্যবস্থাপনা কৌশল অনুকূলিতকরণ

  7. পুনরুদ্ধার উইন্ডো রোলিং যাচাইকরণ

  8. বিভিন্ন জাতের স্থিতিশীল উপার্জন ক্ষমতা মূল্যায়ন করা।

  9. মেশিন লার্নিং ব্যবহার করে মডেল অপ্টিমাইজেশন করা হচ্ছে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy Quadratic Semaphore ",
         shorttitle = "SQS",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=5,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2019, title = "Year", minval = 2014)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2014)

Config            = input(title = "══════════════ Config ══════════════", defval = true, type = input.bool)
p = input(6)
length = input(30)
//
backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))
//
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

x1 = bar_index
x2 = sqrt(x1)
y = high
//
S11 = sum(x2,length) - sqrt(sum(x1,length)) / length  
S12 = sum(x1*x2,length) - (sum(x1,length) * sum(x2,length)) / length  
S22 = sum(sqrt(x2),length) - sqrt(sum(x2,length)) / length            
Sy1 = sum (y*x1,length) - (sum(y,length) * sum(x1,length)) / length   
Sy2 = sum (y*x2,length) - (sum(y,length) * sum(x2,length)) / length   
//
max1 = sma(x1,length) 
max2 = sma(x2,length)
may = sma(y,length)
b2 = ((Sy1 * S22) - (Sy2*S12))/(S22*S11 - sqrt(S12))
b3 = ((Sy2 * S11) - (Sy1 * S12))/(S22 * S11 - sqrt(S12))
b1 = may - b2*max1 - b3*max2
qr = b1 + b2*x1 + b3*x2
//
yl = low
//
Sy1l = sum(yl*x1,length) - (sum(yl,length) * sum(x1,length)) / length  
Sy2l = sum(yl*x2,length) - (sum(yl,length) * sum(x2,length)) / length  
//
mayl = sma(yl,length)
b2l = ((Sy1l * S22) - (Sy2l*S12))/(S22*S11 - sqrt(S12))
b3l = ((Sy2l * S11) - (Sy1l * S12))/(S22 * S11 - sqrt(S12))
b1l = mayl - b2l*max1 - b3l*max2
qrl = b1l + b2l*x1 + b3l*x2
//
period = round(p/2)+1
hh = qr[period]
ll = qrl[period]
countH = 0
countL = 0
buy=0
sell=0
//
for i = 1 to period-1
    if qr[i]<hh
        countH:=countH+1
    if qrl[i]>ll
        countL:=countL+1

for i = period+1 to p+1
    if qr[i]<hh
        countH:=countH+1
    if qrl[i]>ll
        countL:=countL+1

if countH==p
    pivotH = high[period]
    buy := 1
    
if countL==p
    pivotL = low[period]
    sell := 1
//    
plotshape(buy == 1 , text='💣', style=shape.arrowup, location=location.belowbar, color=#32CD32, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 , text='🔨', style=shape.arrowdown, location=location.abovebar, color=#FF0000, textcolor=color.white, offset=0, transp=0,size=size.auto)
//

if (backTestPeriod())
    strategy.entry("long", true, 1, when = buy == 1)
    strategy.entry("short", false, 1, when = sell == 1)