
মাল্টি-ইনডিকেটর স্কোর ট্রেডিং কৌশলটি প্রযুক্তিগত সূচক স্কোরকে সংহত করে ট্রেন্ডের দিকনির্দেশনা এবং শক্তি সনাক্ত করে স্বয়ংক্রিয়ভাবে ট্রেডিংয়ের জন্য। এই কৌশলটি ইচিমোকু মেঘ, এইচএমএ, আরএসআই, স্টচ, সিসিআই এবং এমএসিডি সহ সূচকগুলির একটি গোষ্ঠীকে সামগ্রিকভাবে বিবেচনা করে। প্রতিটি সূচকের ফলাফলের উপর ভিত্তি করে, এটির জন্য একটি স্কোর করুন, তারপরে সমস্ত সূচকের স্কোরকে সংহত করুন, একটি সামগ্রিক স্কোর তৈরি করুন। যখন সামগ্রিক স্কোরটি ট্রিজারের উপরে থাকে তখন আরও কিছু করুন, যখন ট্রিজারের নীচে থাকে তখন স্প্যান করুন।
এই কৌশলটি বিভিন্ন অংশে বিভক্তঃ
ইচিমোকু ক্লাউড, হুল মুভিং এভারেজ, আপেক্ষিক দুর্বলতা সূচক, এলোমেলো সূচক, পণ্য চ্যানেল সূচক এবং মুভিং এভারেজ সংবেদনশীলতা সহ সূচকগুলির একটি সেট গণনা করা হয়েছে।
প্রতিটি সূচককে একটি স্কোর দেওয়া হয়। যখন সূচকটি একাধিক হেড সংকেত দেখায় তখন ইতিবাচক চিহ্ন দেওয়া হয় এবং খালি হেড সংকেত হলে নেতিবাচক চিহ্ন দেওয়া হয়।
সকল সূচককে যোগ করে গড় করলে একটি সমন্বিত স্কোর পাওয়া যায়।
সমন্বিত রেটিংটি পূর্ব নির্ধারিত থ্রেশহোল্ডের সাথে তুলনা করে সামগ্রিক প্রবণতার দিকনির্দেশনা নির্ধারণ করুন। থ্রেশহোল্ডের উপরে রেটিংটি উচ্চতর এবং থ্রেশহোল্ডের নীচে কম।
মূল্যায়নের ভিত্তিতে পজিশন খোলার জন্য। যখন আপনি বেশি দেখেন তখন বেশি করুন, যখন আপনি কম দেখেন তখন কম করুন।
স্টপ লস এটিআর সূচক দ্বারা সেট করা হয়েছে।
এই কৌশলটি একাধিক সূচকের সুবিধাগুলিকে পুরোপুরি ব্যবহার করে এবং বাজারের প্রবণতার দিকনির্দেশকে সমন্বিত করে। একটি একক সূচকের তুলনায়, এটি কিছু মিথ্যা সংকেত ফিল্টার করতে এবং সংকেতের নির্ভরযোগ্যতা বাড়িয়ে তুলতে সক্ষম।
এই কৌশলটির সুবিধাগুলো হলঃ
একাধিক সূচক সমন্বিত বিচার, সংকেত নির্ভুলতা বৃদ্ধি। একটি একক সূচক ভুল সিদ্ধান্তের জন্য সহজ, এই কৌশলটি স্কোরিং-এভারেজ পদ্ধতির মাধ্যমে কার্যকরভাবে মিথ্যা সংকেতগুলি ফিল্টার করতে পারে।
সূচকটির শক্তি ব্যবহার করে, প্রবণতা এবং বর্তমান শক্তি চিহ্নিত করুন। উদাহরণস্বরূপ, Ichimoku মেঘটি বড় প্রবণতা নির্ধারণ করে, স্টোক ওভারবয় ওভারসেল নির্ধারণ করে।
স্বয়ংক্রিয় লেনদেন আবেগগত প্রভাব এড়াতে এবং কৌশলগত সংকেত কঠোরভাবে বাস্তবায়ন করে।
এটিআর ব্যবহার করে স্টপ লস সুবিধা সেট করুন, যা ঝুঁকি নিয়ন্ত্রণে সহায়ক।
বিভিন্ন জাতের জন্য প্যারামিটারগুলি সামঞ্জস্য করা যায়। নির্দেশক প্যারামিটার এবং রেটিং থ্রেশহোল্ডগুলি অপ্টিমাইজ করা যায়।
এই নীতিমালাটি সহজ এবং স্পষ্ট, সহজেই বোঝা যায় এবং পরিবর্তন করা যায়।
এই কৌশলটি নিম্নলিখিত ঝুঁকিগুলিও বহন করেঃ
একাধিক সূচকের সমন্বয় একক সূচকের চেয়ে ভাল হতে পারে না, সর্বোত্তম প্যারামিটার খুঁজে পেতে বারবার পরীক্ষা করা প্রয়োজন।
যখন সূচকটি ভুল সংকেত দেয়, তখন স্কোরের গড়ও পুরোপুরি ক্ষতি এড়াতে পারে না।
এটিআর স্টপডাউন খুব কাছাকাছি বা খুব শিথিল হতে পারে এবং জাতের বৈশিষ্ট্য অনুসারে সামঞ্জস্য করা প্রয়োজন।
ওভার-অপ্টিমাইজেশনের ফলে যে কার্ভ ফিট হয় তা এড়ানো দরকার। বিভিন্ন জাত এবং সময়কালের মধ্যে কৌশলগুলির স্থায়িত্ব পরীক্ষা করা উচিত।
ট্রেডিং ফ্রিকোয়েন্সি খুব বেশি হতে পারে এবং ট্রেডিং খরচ চূড়ান্ত মুনাফা প্রভাবিত করতে পারে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
আরও কিছু সূচকের সমন্বয় পরীক্ষা করে, নির্দিষ্ট জাতের জন্য সর্বোত্তম সূচক নির্বাচন করুন।
প্রতিটি সূচকের জন্য রেটিং ওজনের সমন্বয় করুন, রেটিং অ্যালগরিদমকে অপ্টিমাইজ করুন।
এটিআর প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করে যাতে স্টপ লস সুদের হারকে বাজারের ওঠানামার সাথে সামঞ্জস্য করে।
ট্রেডিং ফিল্টার শর্তাবলী যোগ করুন, অপ্রয়োজনীয় ট্রেডিং ফ্রিকোয়েন্সি কমাতে। যেমন ট্রেন্ড ফিল্টার, ট্রেডিং ভলিউম ফিল্টার ইত্যাদি।
ধাপে ধাপে অপ্টিমাইজেশনের মাধ্যমে, আপনি একটি প্যারামিটার অপ্টিমাইজেশনের জন্য একটি ব্যাপ্তি খুঁজে পাবেন, এবং তারপর আপনি সর্বোত্তম প্যারামিটার সমন্বয় খুঁজতে র্যান্ডম / গ্রিড অপ্টিমাইজেশান ব্যবহার করবেন।
একাধিক প্রজাতির একাধিক সময় ফ্রেমে কৌশলটির স্থায়িত্ব পরীক্ষা করুন, অত্যধিক অপ্টিমাইজেশন এড়িয়ে চলুন।
অন্যান্য কার্যকর ট্রেডিং কৌশলগুলির সাথে মিলিত হয়ে একটি কৌশলগত পোর্টফোলিও তৈরি করুন।
মাল্টি-ইনডিকেটর রেটিং ট্রেডিং কৌশলটি গড়ের জন্য রেটিংয়ের চিন্তাভাবনার মাধ্যমে সংকেত সিদ্ধান্তের নির্ভুলতা এবং নির্ভরযোগ্যতা উন্নত করে। এই কৌশলটি প্যারামিটারগুলিকে সামঞ্জস্য করার জন্য বড় এবং বিভিন্ন জাতের জন্য অনুকূলিতকরণের জন্য আরও ভাল। তবে প্যারামিটার অপ্টিমাইজেশন এবং কৌশল পরীক্ষার বৈজ্ঞানিকতা বজায় রাখার জন্য অপ্টিমাইজেশনের ঝুঁকি সম্পর্কেও সতর্কতা অবলম্বন করা দরকার। একটি অপ্টিমাইজেশন দিকের বিস্তৃত ট্রেডিং কৌশল ধারণা হিসাবে, এটি আরও গবেষণা এবং প্রয়োগের জন্য উপযুক্ত।
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Ichi HMA RSI Stoch CCI MACD Technicals Rating Strategy",shorttitle="TRSv420",overlay=true,default_qty_type=strategy.percent_of_equity,default_qty_value=50,commission_type=strategy.commission.percent,commission_value=0.05)
res = input("", title="Indicator Timeframe", type=input.resolution)
Period = input(defval = 14, title = "Period Length", minval = 2)
MinSignalStrength= input(title="Minimum Signal Strength", type=input.float, defval=1.1, minval=0.00, maxval=2.00, step=0.1)
Price = input(defval=open, title="Price Source", type=input.source)
Use_Only_Buy= input(false, title = "Use ONLY BUY mode",type=input.bool)
Use_Only_Sell= input(false, title = "Use ONLY SELL mode",type=input.bool)
Use_ATR_SL_TP= input(true, title = "Use ATR for TP & SL",type=input.bool)
Use_Ichimoku= input(true, title = "Use Ichimoku",type=input.bool)
Use_HMA= input(true, title = "Use Hull MA",type=input.bool)
Use_RSI= input(true, title = "Use RSI",type=input.bool)
Use_Stoch= input(true, title = "Use Stoch",type=input.bool)
Use_CCI= input(true, title = "Use CCI",type=input.bool)
Use_MACD= input(true, title = "Use MacD",type=input.bool)
// Ichimoku Cloud
donchian(len) => avg(lowest(len), highest(len))
ichimoku_cloud() =>
conversionLine = donchian(9)
baseLine = donchian(26)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(52)
[conversionLine, baseLine, leadLine1, leadLine2]
[IC_CLine, IC_BLine, IC_Lead1, IC_Lead2] = ichimoku_cloud()
calcRatingMA(ma, src) => na(ma) or na(src) ? na : (ma == src ? 0 : ( ma < src ? 1 : -1 ))
calcRating(buy, sell) => buy ? 1 : ( sell ? -1 : 0 )
calcRatingAll() =>
//============== HMA =================
HMA10 = hma(Price, Period)
HMA20 = hma(Price, 20)
HMA30 = hma(Price, 30)
HMA50 = hma(Price, 50)
HMA100 = hma(Price, 100)
HMA200 = hma(Price, 200)
// Relative Strength Index, RSI
RSI = rsi(Price,14)
// Stochastic
lengthStoch = 14
smoothKStoch = 3
smoothDStoch = 3
kStoch = sma(stoch(Price, high, low, lengthStoch), smoothKStoch)
dStoch = sma(kStoch, smoothDStoch)
// Commodity Channel Index, CCI
CCI = cci(Price, 20)
// Moving Average Convergence/Divergence, MACD
[macdMACD, signalMACD, _] = macd(Price, 12, 26, 9)
// -------------------------------------------
PriceAvg = hma(Price, Period)
DownTrend = Price < PriceAvg
UpTrend = Price > PriceAvg
float ratingMA = 0
float ratingMAC = 0
if(Use_HMA)
if not na(HMA10)
ratingMA := ratingMA + calcRatingMA(HMA10, Price)
ratingMAC := ratingMAC + 1
if not na(HMA20)
ratingMA := ratingMA + calcRatingMA(HMA20, Price)
ratingMAC := ratingMAC + 1
if not na(HMA30)
ratingMA := ratingMA + calcRatingMA(HMA30, Price)
ratingMAC := ratingMAC + 1
if not na(HMA50)
ratingMA := ratingMA + calcRatingMA(HMA50, Price)
ratingMAC := ratingMAC + 1
if not na(HMA100)
ratingMA := ratingMA + calcRatingMA(HMA100, Price)
ratingMAC := ratingMAC + 1
if not na(HMA200)
ratingMA := ratingMA + calcRatingMA(HMA200, Price)
ratingMAC := ratingMAC + 1
if(Use_Ichimoku)
float ratingIC = na
if not (na(IC_Lead1) or na(IC_Lead2) or na(Price) or na(Price[1]) or na(IC_BLine) or na(IC_CLine))
ratingIC := calcRating(
IC_Lead1 > IC_Lead2 and Price > IC_Lead1 and Price < IC_BLine and Price[1] < IC_CLine and Price > IC_CLine,
IC_Lead2 > IC_Lead1 and Price < IC_Lead2 and Price > IC_BLine and Price[1] > IC_CLine and Price < IC_CLine)
if not na(ratingIC)
ratingMA := ratingMA + ratingIC
ratingMAC := ratingMAC + 1
ratingMA := ratingMAC > 0 ? ratingMA / ratingMAC : na
float ratingOther = 0
float ratingOtherC = 0
if(Use_RSI)
ratingRSI = RSI
if not(na(ratingRSI) or na(ratingRSI[1]))
ratingOtherC := ratingOtherC + 1
ratingOther := ratingOther + calcRating(ratingRSI < 30 and ratingRSI[1] < ratingRSI, ratingRSI > 70 and ratingRSI[1] > ratingRSI)
if(Use_Stoch)
if not(na(kStoch) or na(dStoch) or na(kStoch[1]) or na(dStoch[1]))
ratingOtherC := ratingOtherC + 1
ratingOther := ratingOther + calcRating(kStoch < 20 and dStoch < 20 and kStoch > dStoch and kStoch[1] < dStoch[1], kStoch > 80 and dStoch > 80 and kStoch < dStoch and kStoch[1] > dStoch[1])
if(Use_CCI)
ratingCCI = CCI
if not(na(ratingCCI) or na(ratingCCI[1]))
ratingOtherC := ratingOtherC + 1
ratingOther := ratingOther + calcRating(ratingCCI < -100 and ratingCCI > ratingCCI[1], ratingCCI > 100 and ratingCCI < ratingCCI[1])
if(Use_MACD)
if not(na(macdMACD) or na(signalMACD))
ratingOtherC := ratingOtherC + 1
ratingOther := ratingOther + calcRating(macdMACD > signalMACD, macdMACD < signalMACD)
ratingOther := ratingOtherC > 0 ? ratingOther / ratingOtherC : na
float ratingTotal = 0
float ratingTotalC = 0
if not na(ratingMA)
ratingTotal := ratingTotal + ratingMA
ratingTotalC := ratingTotalC + 1
ratingTotal := ratingTotal + ratingOther
ratingTotalC := ratingTotalC + 1
ratingTotal := ratingTotalC > 0 ? ratingTotal / ratingTotalC : na
[ratingTotal, ratingOther, ratingMA, ratingOtherC, ratingMAC]
[ratingTotal, ratingOther, ratingMA, ratingOtherC, ratingMAC] = security(syminfo.tickerid, res, calcRatingAll(), lookahead=false)
tradeSignal = ratingTotal+ratingOther+ratingMA
dynSLpoints(factor) => factor * atr(14) / syminfo.mintick
if not (Use_Only_Sell)
strategy.entry("long", strategy.long, when = tradeSignal > MinSignalStrength)
if not (Use_Only_Buy)
strategy.entry("short", strategy.short, when = tradeSignal < -MinSignalStrength)
if(Use_ATR_SL_TP)
strategy.exit("sl/tp", loss = dynSLpoints(3), trail_points = dynSLpoints(5), trail_offset = dynSLpoints(2))