অভিযোজিত বুদ্ধিমান মাল্টি-ফ্যাক্টর হুল জেলে কৌশল অপ্টিমাইজ করা


সৃষ্টির তারিখ: 2024-01-16 15:10:06 অবশেষে সংশোধন করুন: 2024-01-16 15:10:06
অনুলিপি: 1 ক্লিকের সংখ্যা: 606
1
ফোকাস
1617
অনুসারী

অভিযোজিত বুদ্ধিমান মাল্টি-ফ্যাক্টর হুল জেলে কৌশল অপ্টিমাইজ করা

ওভারভিউ

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

কৌশল নীতি

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

কৌশলটি প্রথমে হুলের চলমান গড় এবং মৎস্যজীবীদের ঘুরিয়ে দেওয়ার সূচকটি গণনা করে। তারপরে পণ্য চ্যানেলের সূচকের সহায়ক বিচারের সাথে মিলিত হয়ে প্রবেশের শর্তটি তৈরি করে। যখন মৎস্যজীবীদের ঘুরিয়ে দেওয়া সূচকটি শূন্য অক্ষের নীচে থেকে বা সেট প্যারামিটার সীমার বাইরে থেকে অতিক্রম করে তখন এটি গোল্ড ফর্ক শর্ত হিসাবে সেট করা হয়, এটি একটি মাল্টি সিগন্যাল গঠন করে। যখন মৎস্যজীবীদের ঘুরিয়ে দেওয়া শূন্য অক্ষের উপরে থেকে নীচে থেকে অতিক্রম করে বা প্যারামিটার সীমার বাইরে অতিক্রম করে তখন এটি একটি মৃত ফর্ক শর্ত হিসাবে সেট করা হয়, এটি একটি ফাঁকা সংকেত গঠন করে।

বিপরীতভাবে, প্রস্থান শর্তে, গোল্ডফোর্ক একটি মৃত ফর্কের সমান্তরালের সাথে একটি মাল্টিপল করে; একটি মৃত ফর্কের একটি গোল্ডফোর্কের সমান্তরালের সাথে একটি শূন্য পল করে। এইভাবে, সূচকগুলির মধ্যে ক্রসগুলি ব্যবহার করে প্রবণতা পাল্টানোর পয়েন্টগুলি ধরা যায়।

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

এই কৌশলটির সবচেয়ে বড় সুবিধা হ’ল এটি বহু-ফ্যাক্টর অভিযোজনযোগ্য। এটি একই সাথে চলমান গড়, ঝড়ের সূচক এবং প্রবণতা সূচকগুলির সুবিধা গ্রহণ করে, যা বাউন্স মার্কেটে ভাল পারফরম্যান্স অর্জন করতে পারে। এবং প্যারামিটার সেটিংগুলি জাত এবং সময়কালের উপর ভিত্তি করে অভিযোজনযোগ্য।

এছাড়াও, কৌশলটিতে একটি স্বয়ংক্রিয় ক্ষতি বন্ধ করার ব্যবস্থা অন্তর্ভুক্ত করা হয়েছে। যখন দামগুলি আবার হুলের চলমান গড়কে অতিক্রম করে, তখন স্বয়ংক্রিয় ক্ষতি বন্ধ হয়ে যায়। এটি কৌশলটির ক্ষতির ঝুঁকি হ্রাস করে।

ঝুঁকি ও সমাধান

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

সমাধানটি হ’ল সূচক প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করা, কিছু ছোট সংকেত ফিল্টার করা। অথবা আরও সহায়ক সূচকগুলির সাথে একত্রিত করা যা নিশ্চিত করে। যেমন ট্র্যাফিকের পরিমাণের সূচকগুলি সত্যিকারের সংকেত নির্ধারণ করে।

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

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

  1. মেশিন লার্নিং অ্যালগরিদম যোগ করা, প্যারামিটারগুলির স্বয়ংক্রিয় অপ্টিমাইজেশন করা। ঐতিহাসিক ডেটা প্রশিক্ষণের উপর ভিত্তি করে, রিয়েল-টাইমে সূচক প্যারামিটারগুলি সামঞ্জস্য করা যেতে পারে।

  2. এই প্রকল্পের আওতাভুক্ত দেশগুলোতে কর্মসংস্থানের সুযোগ সৃষ্টি করা হয়েছে।

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

  4. একটি ঝুঁকি মূল্যায়ন মডিউল যুক্ত করা হয়েছে যা বাজারের অবস্থার উপর নির্ভর করে স্বয়ংক্রিয়ভাবে পজিশনের আকার এবং স্টপ লস সামঞ্জস্য করতে পারে।

সারসংক্ষেপ

এই কৌশলটি সামগ্রিকভাবে একটি খুব ভাল মাল্টি-ফ্যাক্টর স্বনির্ধারণ কাঠামো। এটি একটি সম্পূর্ণ এন্ট্রি-এক্সট্রি মেশিন গঠন করে যা চলমান গড়ের প্রবণতা বিচার, ওভারব্রিড ওভারসেলিং বিচার এবং ট্র্যাডিং সূচকগুলির ক্রস-অ্যাপ্লিকেশন। এটি একটি অত্যন্ত বাণিজ্যিকভাবে মূল্যবান কৌশল পণ্য হবে যদি এটি স্বনির্ধারণ এবং বুদ্ধিমান উপাদান যুক্ত করে আরও অপ্টিমাইজ করা যায়।

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

// This source code is free to copy/paste/use. no permission required. just do it!
// © @SeaSide420 
//@version=4
strategy(title="Hull Fisher",currency="USD",default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.25)

//=================================== Inputs =========================================================
period =input(title="HullMA Length", type=input.integer, defval=14, minval=2)
length =input(9, minval=1, title="Signal Length")
line1 = input(5, minval=2, title="Top Line")
line5 = input(-5, maxval=-2, title="Bottom Line")
price = input(open, type=input.source, title="Price data")
entry1 =input(true,type=input.bool, title="Open when HullFisher crossover outside Lines")
entry2 =input(true,type=input.bool, title="Open when HullFisher past zero")
useHMA =input(true,type=input.bool, title="Include Hull_moving_average")
useCCI =input(true,type=input.bool, title="Include Commodity_channel_index")
fishclose=input(true,type=input.bool, title="Close order when Fisher crossover")
HMAclose=input(true,type=input.bool, title="Close order when Hull crossover")

//================================ Calculations ======================================================
HMA = hma(price,period)
HMA2 = HMA[1]
high_ = highest(HMA, length)
low_ = lowest(HMA, length)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((HMA - low_) / max(high_ - low_, .001) - .5) + .67 * nz(value[1]))
value1 = 0.0
value1 := .5 * log((1 + value) / max(1 - value, .001)) + .5 * nz(value1[1])
value2 = value1[1]
CCI1 = cci(price,period)
CCI2 = CCI1[1]
line2 = line1/2
line4 = line5/2

//================================ Draw Plots =======================================================
colorchange1 =CCI1>CCI2?color.lime:color.red
colorchange2 =value1>value2?color.lime:color.red
a =plot(line1,style=plot.style_line,color=color.red,transp=50,linewidth=2,title="Top Line")
b =plot(line2,style=plot.style_line,color=color.red,transp=50,linewidth=2,title="Upper Line")
c =plot(0,style=plot.style_line,color=color.black,transp=50,linewidth=2,title="Middle Line")
d =plot(line4,style=plot.style_line,color=color.lime,transp=50,linewidth=2,title="Lower Line")
e =plot(line5,style=plot.style_line,color=color.lime,transp=50,linewidth=2,title="Bottom Line")
f =plot(value1, color=color.black,transp=50,linewidth=2, title="Value 1")
g =plot(value2, color=color.black,transp=50,linewidth=2, title="Value 2")
h =plot(CCI1/50,style=plot.style_area, color=colorchange1,transp=50,linewidth=2, title="CCI")
fill(f,g,color=colorchange2,transp=20,title="Color fill")
plot(cross(value1, value2) ? value1 : na, style=plot.style_circles, color=color.black, linewidth=10)
plot(cross(value1, value2) ? value1 : na, style=plot.style_circles, color=color.white, linewidth=8)
plot(cross(value1, value2) ? value1 : na, style=plot.style_circles, color=colorchange2, linewidth=5)

//============================= Entry conditions ====================================================
// Outside Lines crossover or zero lines crossover
LongCondition1 = value1>value2 and value1<line5 and entry1 and not useCCI and not useHMA
ShortCondition1 = value1<value2 and value1>line1 and entry1 and not useCCI and not useHMA
LongCondition2 = value1>value2 and value1>0 and entry2 and not useCCI and not useHMA
ShortCondition2 = value1<value2 and value1<0 and entry2 and not useCCI and not useHMA

// Use CCI
LongCondition3 = value1>value2 and value1<line5 and CCI1>CCI2 and entry1 and useCCI and not useHMA
ShortCondition3 = value1<value2 and value1>line1 and CCI1<CCI2 and entry1 and useCCI and not useHMA
LongCondition4 = value1>value2 and value1>0 and CCI1>CCI2 and entry2 and useCCI and not useHMA
ShortCondition4 = value1<value2 and value1<0 and CCI1<CCI2 and entry2 and useCCI and not useHMA

// Use HMA
LongCondition5 = value1>value2 and value1<line5 and CCI1>CCI2 and HMA>HMA2 and entry1 and not useCCI and useHMA
ShortCondition5 = value1<value2 and value1>line1 and CCI1<CCI2 and HMA<HMA2 and entry1 and not useCCI and useHMA
LongCondition6 = value1>value2 and value1>0 and CCI1>CCI2 and HMA>HMA2 and entry2 and not useCCI and useHMA
ShortCondition6 = value1<value2 and value1<0 and CCI1<CCI2 and HMA<HMA2 and entry2 and not useCCI and useHMA

//Use CCI & HMA
LongCondition7 = value1>value2 and value1<line5 and CCI1>CCI2 and HMA>HMA2 and entry1 and useCCI and useHMA
ShortCondition7 = value1<value2 and value1>line1 and CCI1<CCI2 and HMA<HMA2 and entry1 and useCCI and useHMA
LongCondition8 = value1>value2 and value1>0 and CCI1>CCI2 and HMA>HMA2 and entry2 and useCCI and useHMA
ShortCondition8 = value1<value2 and value1<0 and CCI1<CCI2 and HMA<HMA2 and entry2 and useCCI and useHMA

//========================= Exit & Entry excecution =================================================
if HMAclose and fishclose and value1<value2 and HMA<HMA2
    strategy.close("BUY")
if HMAclose and fishclose and value1>value2 and HMA>HMA2
    strategy.close("SELL")
if HMAclose and HMA<HMA2
    strategy.close("BUY")
if HMAclose and HMA>HMA2
    strategy.close("SELL")
if fishclose and value1<value2
    strategy.close("BUY")
if fishclose and value1>value2
    strategy.close("SELL")    
if LongCondition1 or LongCondition2 or LongCondition3 or LongCondition4 or LongCondition5 or LongCondition6 or LongCondition7 or LongCondition8
    strategy.entry("BUY", strategy.long)
if ShortCondition1 or ShortCondition2 or ShortCondition3 or ShortCondition4 or ShortCondition5 or ShortCondition6 or ShortCondition7 or ShortCondition8
    strategy.entry("SELL", strategy.short)