এই কৌশলটি বর্তমান সময়সীমার প্রবণতা দিক নির্ধারণের জন্য একাধিক প্রযুক্তিগত সূচকের বিস্তৃত সংকেত গণনা করে। যখন একটি আপট্রেন্ড হিসাবে বিচার করা হয়, তখন একটি ট্র্যাকিং স্টপ লস লাইন তুলনামূলকভাবে উচ্চ বিন্দুতে সেট করা হয়; যখন একটি ডাউনট্রেন্ড হিসাবে বিচার করা হয়, তখন একটি ট্র্যাকিং স্টপ লস লাইন তুলনামূলকভাবে কম বিন্দুতে সেট করা হয়। কৌশলটি ঝুঁকি নিয়ন্ত্রণ অর্জনের জন্য স্টপ লস লাইনটি অভিযোজিতভাবে সামঞ্জস্য করতে পারে।
কৌশলটি চলমান গড়, এটিআর, কেডি এবং বৈচিত্র্যের হার হিসাবে একাধিক সূচককে একত্রিত করে বর্তমান সময়সীমার সামগ্রিক প্রবণতার দিক নির্ধারণ করে। বিশেষত এটি নিম্নলিখিত উপ-সাইনালগুলির যৌগিক মান গণনা করেঃ
প্রতিটি উপ-সিগন্যাল মসৃণ করা হয় এবং ক্রয় / বিক্রয় বিচার করার জন্য বিভিন্ন থ্রেশহোল্ড সেট করা হয়। তারপরে বর্তমান সময়সীমার সামগ্রিক সংকেত গণনা করতে উপ-সিগন্যালগুলি ওজন করুন। যদি সংকেতটি 0 এর চেয়ে বড় হয় তবে এটি একটি আপট্রেন্ড হিসাবে বিচার করা হয়। যদি সংকেতটি 0 এর চেয়ে কম হয় তবে এটি একটি ডাউনট্রেন্ড হিসাবে বিচার করা হয়।
যখন একটি আপট্রেন্ড হিসাবে বিচার করা হয়, তখন কৌশলটি পূর্ববর্তী উচ্চতর পয়েন্টের কাছাকাছি একটি ট্র্যাকিং স্টপ লস লাইন সেট করে; যখন একটি ডাউনট্রেন্ড হিসাবে বিচার করা হয়, এটি পূর্ববর্তী নিম্ন পয়েন্টের কাছাকাছি একটি ট্র্যাকিং স্টপ লস লাইন সেট করে। এটি ঝুঁকি নিয়ন্ত্রণের উদ্দেশ্য অর্জনের জন্য প্রকৃত মূল্য আন্দোলনের অনুযায়ী স্টপ লস স্তরকে গতিশীলভাবে সামঞ্জস্য করতে পারে।
কৌশলটি বর্তমান প্রবণতার দিক নির্ধারণের জন্য একাধিক সূচককে একীভূত করে, যা বিচারের নির্ভুলতা উন্নত করে। একই সাথে, কৌশলটি শক্তিশালী অভিযোজনযোগ্যতার সাথে বিভিন্ন জাত এবং সময়সীমার সাথে খাপ খাইয়ে নিতে পারে।
সর্বাধিক গুরুত্বপূর্ণ, কৌশলটি সিস্টেমিক ঝুঁকিগুলিকে হেজ করার জন্য ডায়নামিকভাবে স্টপ লস লাইন সামঞ্জস্য করতে পারে এবং প্রকৃত প্রবণতা অনুযায়ী ঝুঁকি নিয়ন্ত্রণের স্তর সামঞ্জস্য করতে পারে। এটি তার সবচেয়ে বড় সুবিধা।
প্রবণতা সংকেত বিচার মান সরাসরি স্টপ লস লাইন সেটিং প্রভাবিত করে। যদি বিচার ভুল হয়, এটি স্টপ লস স্তর খুব আলগা বা খুব কঠোর সেট করতে পারে। উপরন্তু, স্টপ লস লাইন সম্পূর্ণরূপে বাজার পরিবর্তন ঝুঁকি এড়াতে পারবেন না।
কৌশলটি লাভের স্তর এবং স্টপ লস দূরত্বের ভারসাম্য বজায় রাখতে হবে। যদি স্টপ লস দূরত্ব খুব কাছাকাছি হয় তবে এটি স্টপ লসের অত্যধিক ঘন ঘন ঘটতে পারে; যদি স্টপ লস দূরত্ব খুব দূরে থাকে তবে এটি কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করতে পারে না। এর জন্য বিভিন্ন জাত এবং চক্রের জন্য পরামিতি অপ্টিমাইজেশান প্রয়োজন।
ঐতিহাসিক তথ্য ব্যবহার করে ট্রেন্ডের দিকনির্দেশনা নির্ধারণের জন্য মডেলকে প্রশিক্ষণের জন্য মেশিন লার্নিং অ্যালগরিদম প্রবর্তনের বিষয়টি বিবেচনা করুন।
স্টপ লস দূরত্বকে অনুকূল করার জন্য বিভিন্ন পরামিতি সংমিশ্রণ পরীক্ষা করুন। উদাহরণস্বরূপ, বাজারের অস্থিরতার পরিবর্তনের সাথে খাপ খাইয়ে নেওয়ার জন্য গতিশীলভাবে এটিআর চক্রের পরামিতিগুলি সামঞ্জস্য করুন।
ভলিউম এনার্জি ইন্ডিকেটরগুলিকে সত্যিকারের প্রবণতা নির্ধারণ করতে এবং মূল্য-ভলিউম বিচ্যুতির কারণে সিগন্যাল ত্রুটিগুলি রোধ করতেও একত্রিত করা যেতে পারে।
কৌশলটি একাধিক প্রযুক্তিগত সূচককে একীভূত করে বর্তমান প্রবণতার দিকনির্দেশনা বিচার করে এবং সেই অনুযায়ী গতিশীলভাবে ট্র্যাকিং স্টপ লস লাইন সামঞ্জস্য করে। এটি স্টপ লসের কার্যকারিতা উন্নত করতে এবং ট্রেডিং ঝুঁকি নিয়ন্ত্রণ করতে লক্ষ্য করে। কৌশল ধারণাটি উন্নত এবং আরও অপ্টিমাইজেশন এবং যাচাইয়ের মূল্যবান। এটি একটি মাল্টি-টাইমফ্রেম অভিযোজিত ঝুঁকি নিয়ন্ত্রণ কৌশল যা রেফারেন্স করা যেতে পারে।
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © jigneshjc //@version=5 strategy("Jigga - Survival Level", shorttitle='Jigga - Survival Level', overlay=true) doBackTesting = input(true, 'Run Back Testing') entryCondition = false exitCondition = false ab21 = 14, gh41 = ab21 gh42 = ab21, ju51 = 14 ki61 = ju51 lkolkp = true ,ab22 = 58 cd31 = 5 , ab23 = 42 aa12 = 29, cd32 = 26 op71 = 5, aa11 = 12 aa13 = 9, op72 = 2.0 movnwx = false kahachale(byju, h, l) => mika = ta.change(h) awer = -ta.change(l) uikmhDM = na(mika) ? na : mika > awer and mika > 0 ? mika : 0 wrtdfcDM = na(awer) ? na : awer > mika and awer > 0 ? awer : 0 bbct = ta.rma(ta.tr, byju) uikmh = fixnan(100 * ta.rma(uikmhDM, byju) / bbct) wrtdfc = fixnan(100 * ta.rma(wrtdfcDM, byju) / bbct) [uikmh, wrtdfc] trial(gh42, gh41, h, l) => [uikmh, wrtdfc] = kahachale(gh42, h, l) uuolop = uikmh + wrtdfc trial = 100 * ta.rma(math.abs(uikmh - wrtdfc) / (uuolop == 0 ? 1 : uuolop), gh41) trial _pr(src, byjugth) => max = ta.highest(byjugth) min = ta.lowest(byjugth) 100 * (src - max) / (max - min) kyukarna(khulmkhula, mikaarwala, nichewala, bandhwala, partiwala) => sig = trial(gh42, gh41, mikaarwala, nichewala) trialIncreasing = sig > ta.ema(sig, 5) ? lkolkp : movnwx rolkmn = ta.ema(bandhwala, aa11) psolkmn = ta.ema(bandhwala, aa12) ujghd = rolkmn - psolkmn wrtycv = ta.ema(ujghd, aa13) kimnjg = ujghd - wrtycv mikalilo = ta.rma(math.max(ta.change(bandhwala), 0), ab21) awerlilo = ta.rma(-math.min(ta.change(bandhwala), 0), ab21) lilo = awerlilo == 0 ? 100 : mikalilo == 0 ? 0 : 100 - 100 / (1 + mikalilo / awerlilo) juylknlilo = ta.ema(lilo, 3) rjuylkn = ta.ema(bandhwala, cd31) psjuylkn = ta.ema(bandhwala, cd32) percentR = _pr(bandhwala, ju51) juylknpercentR = ta.ema(percentR, 3) ad = bandhwala == mikaarwala and bandhwala == nichewala or mikaarwala == nichewala ? 0 : (2 * bandhwala - nichewala - mikaarwala) / (mikaarwala - nichewala) * partiwala kiloValue = math.sum(ad, ki61) / math.sum(partiwala, ki61) liiopn = ta.atr(op71) mikaliiopn = (mikaarwala + nichewala) / 2 - op72 * liiopn mika1liiopn = nz(mikaliiopn[1], mikaliiopn) mikaliiopn := bandhwala[1] > mika1liiopn ? math.max(mikaliiopn, mika1liiopn) : mikaliiopn dnliiopn = (mikaarwala + nichewala) / 2 + op72 * liiopn dn1liiopn = nz(dnliiopn[1], dnliiopn) dnliiopn := bandhwala[1] < dn1liiopn ? math.min(dnliiopn, dn1liiopn) : dnliiopn omnerliiopn = 1 omnerliiopn := nz(omnerliiopn[1], omnerliiopn) omnerliiopn := omnerliiopn == -1 and bandhwala > dn1liiopn ? 1 : omnerliiopn == 1 and bandhwala < mika1liiopn ? -1 : omnerliiopn fitur = ujghd > 0 ? ujghd > wrtycv ? 1 : 0 : ujghd > wrtycv ? 0 : -1 mitur = kimnjg >= 0 ? kimnjg > kimnjg[1] ? 1 : 0 : kimnjg > kimnjg[1] ? 0 : -1 ritur = juylknlilo > ab22 ? 1 : juylknlilo < ab23 ? -1 : 0 circuits = rjuylkn > psjuylkn ? 1 : -1 trialPoints = trialIncreasing ? close > ta.ema(close, 3) ? 1 : -1 : 0 virar = juylknpercentR > -ab23 ? 1 : juylknpercentR < -ab22 ? -1 : 0 chikar = kiloValue > 0.1 ? 1 : kiloValue < -0.1 ? -1 : 0 sitar = omnerliiopn p = fitur + mitur + ritur + circuits + trialPoints + virar + chikar + sitar p currentP = kyukarna(open, high, low, close, volume) currentPNew = currentP >= 0 and currentP[1] <= 0 ? 0 : currentP <= 0 and currentP[1] >= 0 ? 0 : currentP colorPNew = currentPNew == 0 ? color.black : currentPNew >= 0 ? color.green : color.red //plot(currentPNew, color=colorPNew, title='CurrentTimeFrame') LTN = 0.0 LTN := nz(LTN) ? 0.0 : (currentPNew[1] < 0 and currentPNew >= 0) ? high * 1.005 : (currentPNew[1] > 0 and currentPNew <= 0) ? low * 0.995 : LTN[1] LClr = color.green LClr := (currentPNew[1] < 0 and currentPNew >= 0) ? color.green : (currentPNew[1] > 0 and currentPNew <= 0) ? color.red : LClr[1] plot(LTN,color=LClr,title="Level", style=plot.style_circles) entryCondition:= high > LTN and LClr == color.green ? lkolkp : movnwx exitCondition:= low < LTN and LClr == color.red ? lkolkp : movnwx tradeRunning = movnwx tradeRunning := nz(tradeRunning) ? movnwx : (not tradeRunning[1]) and entryCondition ? lkolkp : tradeRunning[1] and exitCondition ? movnwx : tradeRunning[1] plotshape(tradeRunning and (not tradeRunning[1]) and (not doBackTesting), style=shape.labelup, location=location.belowbar, color=color.new(#00FF00, 50), size=size.tiny, title='Buy wrtycv', text='➹', textcolor=color.new(color.black,0)) plotshape((not tradeRunning) and tradeRunning[1] and (not doBackTesting), style=shape.labeldown, location=location.abovebar, color=color.new(#FF0000, 50), size=size.tiny, title='Sell wrtycv', text='➷', textcolor=color.new(color.white, 0)) if entryCondition and doBackTesting strategy.entry(id="Buy",direction=strategy.long) if exitCondition and doBackTesting strategy.close(id="Buy")