এই কৌশলটি একটি পরিমাণগত ট্রেডিং কৌশল যা ট্রিপল সুপারট্রেন্ড সূচক, ইচিমোকু ক্লাউড সূচক, গড় সত্য পরিসীমা (এটিআর) সূচক এবং এক্সপোনেন্সিয়াল চলমান গড় (ইএমএ) একত্রিত করে। এটি একটি তুলনামূলকভাবে সম্পূর্ণ ট্রেডিং সিস্টেম গঠনের জন্য বাজারের প্রবণতা নির্ধারণের জন্য ট্রিপল সুপারট্রেন্ড, সমর্থন এবং প্রতিরোধের জন্য ইচিমোকু ক্লাউড, স্টপ লস জন্য এটিআর, প্রবণতা নিশ্চিতকরণের জন্য ইএমএ ব্যবহার করে।
এই কৌশলটির মূল যুক্তিটি ট্রিপল সুপারট্রেন্ড সূচকের উপর ভিত্তি করে। সুপারট্রেন্ড সূচকটি নির্দিষ্ট সময়ের মধ্যে গড় সত্য পরিসরের সাথে দামের তুলনা করে প্রবণতার দিক নির্ধারণ করে। যখন দাম উপরের ব্যান্ডের উপরে থাকে, এটি একটি বুলিশ সংকেত, এবং যখন দাম নিম্ন ব্যান্ডের নীচে থাকে, এটি একটি bearish সংকেত। এই কৌশলটি বিভিন্ন পরামিতি সহ তিনটি সুপারট্রেন্ড সূচক গ্রহণ করে। যখন তিনটি একই সময়ে কিনতে বা বিক্রয় সংকেত দেয় তখন ট্রেডিং সংকেত তৈরি হয়।
এছাড়াও, ইচিমোকু মেঘের বেধ কিছু মিথ্যা সংকেত ফিল্টার করার জন্য বর্তমান প্রবণতার শক্তি নির্ধারণে সহায়তা করে। এটিআর সূচকটি স্টপ লস সেট করতে ব্যবহৃত হয়। ইএমএ সূচক মধ্যম এবং দীর্ঘমেয়াদী প্রবণতা নিশ্চিত করে।
বিশেষত, যখন দাম তিনটি সুপারট্রেন্ড সূচকের উপরের ব্যান্ডের উপরে থাকে তখন দীর্ঘ যান এবং যখন তিনটি সুপারট্রেন্ড সূচকের নীচের ব্যান্ডের নীচে থাকে তখন সংক্ষিপ্ত যান। এছাড়াও অনিশ্চিত সংকেতগুলি ফিল্টার করার জন্য ইচিমোকু মেঘের উপরে বা নীচে দামের প্রয়োজন। স্টপ লসটি প্রবেশের দাম বিয়োগ করে গতিশীল ট্রেলিং স্টপের জন্য এটিআর মান সেট করা হয়।
বিভিন্ন সেটিংসের সাথে ট্রিপল সুপারট্রেন্ড সূচকগুলি কার্যকরভাবে বাজারের গোলমাল ফিল্টার করতে পারে এবং প্রবণতার দিকটি আরও সঠিকভাবে নির্ধারণ করতে পারে।
ইচিমোকু মেঘ মিথ্যা ব্রেকআউট এড়াতে প্রবণতা শক্তি নির্ধারণ করে। এটিআর স্টপ লস সেটিং সর্বোচ্চ পরিমাণে বিশাল ক্ষতি এড়াতে যুক্তিসঙ্গত।
ইএমএ মধ্যম ও দীর্ঘমেয়াদী প্রবণতার দিকনির্দেশ নিশ্চিত করতে সহায়তা করে, সুপারট্রেন্ডের সংকেতগুলি যাচাই করে, নির্ভরযোগ্যতা আরও উন্নত করে।
একাধিক সূচককে একত্রিত করে, সংকেতগুলি আরও নির্ভরযোগ্য কারণ তারা বাজারের প্রবণতা নির্ধারণের সময় একে অপরকে যাচাই করতে পারে।
যদিও ইচিমোকু মেঘ যোগ করা হয়, তবুও মেঘের বেধ অনুপ্রবেশ করলে অবৈধ অঞ্চলে প্রবেশের ঝুঁকি রয়েছে। এটিআর কিছু পরিমাণে ক্ষতির সীমা নির্ধারণ করবে।
যখন অস্থিরতা উচ্চ হয়, এটিআর দ্বারা সেট করা স্টপ লস সরাসরি ট্রিগার করা যেতে পারে, যার ফলে ক্ষতির হার বৃদ্ধি পায়। পরামিতিগুলি সামঞ্জস্য করা যায় বা স্টপ লস পরিসীমা বাড়ানো যায়।
যদি সুপার ট্রেন্ড প্যারামিটারগুলি অনুপযুক্তভাবে সেট করা হয় তবে অবৈধ সংকেতগুলি ঘন ঘন দেখা দিতে পারে। সর্বোত্তম সমন্বয় খুঁজে পেতে অনেকগুলি ব্যাকটেস্টের প্রয়োজন হয়।
ভোলাটিলিটি ইনডেক্স, বোলিংজার ব্যান্ডের মতো আরও সূচক যুক্ত করা যেতে পারে যাতে সংকেতগুলি ফিল্টার করতে এবং নির্ভরযোগ্যতা উন্নত করতে সহায়তা করা যায়।
এটিআর হিসাবের উন্নতি করা যাতে হ্রাস হারের হার কম করার জন্য বিশাল দোলের সময় গতিশীলভাবে স্টপ লস পরিসীমা সামঞ্জস্য করা যায়।
ম্যানুয়াল প্যারামিটার সেটিংয়ের পরিবর্তে ট্রেডিং সংকেতগুলি বিচার করতে historicalতিহাসিক ডেটাতে প্রশিক্ষিত মেশিন লার্নিং মডেল যুক্ত করুন। সংকেতের নির্ভুলতা উন্নত করা যেতে পারে।
এই কৌশলটি ট্রিপল সুপারট্রেন্ড, ইচিমোকু ক্লাউড, এটিআর এবং ইএমএ সহ চারটি অংশকে একত্রিত করে। বাজারের প্রবণতা নির্ধারণের সময় সংকেতগুলি সূচক জুড়ে যাচাই করা হয়। ইচিমোকু ক্লাউড এবং এটিআর স্টপ লস নিয়ন্ত্রণ ঝুঁকি। ইএমএ মধ্যম এবং দীর্ঘমেয়াদী প্রবণতা নিশ্চিত করে। এই কৌশল থেকে সংকেতগুলি মধ্যম থেকে দীর্ঘমেয়াদী হোল্ডিংয়ের জন্য তুলনামূলকভাবে নির্ভরযোগ্য। স্টপ লস আরও অনুকূলিত করা যেতে পারে এবং আরও সহায়ক সূচক যুক্ত করা যেতে পারে যাতে আরও ভাল কৌশল কর্মক্ষমতা অর্জন করা যায়।
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="HyperTrend", shorttitle="HyperTrend", overlay=true ) // float percent_of_portfo = input.int(2, title = "percent of portfo per order", minval = 0, maxval = 100) / 100 // ichimoku Cloud conversionPeriods = input.int(9, minval=1, title="Conversion Line Length", group = "ichimoku") basePeriods = input.int(26, minval=1, title="Base Line Length", group = "ichimoku") laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length", group = "ichimoku") displacement = input.int(26, minval=1, title="Lagging Span", group = "ichimoku") donchian(len) => math.avg(ta.lowest(len), ta.highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = math.avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7, title="Leading Span A", display = display.none) p2 = plot(leadLine2, offset = displacement - 1, color=#ef9a9a, title="Leading Span B", display = display.none) plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Upper Line", display = display.none) plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Lower Line", display = display.none) fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 72, 59) : color.rgb(244, 67, 54, 70)) // three supertrend //1 atrPeriod1 = input(10, "ATR Length1", group="SuperTrend") factor1 = input.float(1.0, "Factor1", step = 0.01, group="SuperTrend") [supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1) supertrend1 := barstate.isfirst ? na : supertrend1 bodyMiddle1 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none) upTrend1 = plot(direction1 < 0 ? supertrend1 : na, "Up Trend", color = color.green, style = plot.style_linebr) downTrend1 = plot(direction1 < 0 ? na : supertrend1, "Down Trend", color = color.red, style = plot.style_linebr) //2 atrPeriod2 = input(11, "ATR Length2", group="SuperTrend") factor2 = input.float(2.0, "Factor2", step = 0.01, group="SuperTrend") [supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2) supertrend2 := barstate.isfirst ? na : supertrend2 bodyMiddle2 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none) upTrend2 = plot(direction2 < 0 ? supertrend2 : na, "Up Trend", color = color.green, style = plot.style_linebr) downTrend2 = plot(direction2 < 0 ? na : supertrend2, "Down Trend", color = color.red, style = plot.style_linebr) //3 atrPeriod3 = input(12, "ATR Length2", group="SuperTrend") factor3 = input.float(3.0, "Factor2", step = 0.01, group="SuperTrend") [supertrend3, direction3] = ta.supertrend(factor3, atrPeriod3) supertrend3 := barstate.isfirst ? na : supertrend3 bodyMiddle3 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none) upTrend3 = plot(direction3 < 0 ? supertrend3 : na, "Up Trend", color = color.green, style = plot.style_linebr) downTrend3 = plot(direction3 < 0 ? na : supertrend3, "Down Trend", color = color.red, style = plot.style_linebr) // ATR lengthATR = input.int(title="Length (ATR)", defval=14, minval=1, group="ATR") smoothingATR = input.string(title="Smoothing (ATR)", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"], group="ATR") ma_function(sourceATR, lengthATR) => switch smoothingATR "RMA" => ta.rma(sourceATR, lengthATR) "SMA" => ta.sma(sourceATR, lengthATR) "EMA" => ta.ema(sourceATR, lengthATR) => ta.wma(sourceATR, lengthATR) ATR = ma_function(ta.tr(true), lengthATR) plot(ATR, title = "ATR", color=color.new(#B71C1C, 0), display = display.none) // EMA lenEMA = input.int(200, minval=1, title="Length of EMA", group="EMA") srcEMA = input(close, title="Source of EMA", group="EMA") offset = input.int(title="Offset (EMA)", defval=0, minval=-500, maxval=500, group="EMA") outEMA = ta.ema(srcEMA, lenEMA) plot(outEMA, title="EMA", color=color.blue, offset=offset, display = display.none) ma(sourceEMA, lengthEMA, type) => switch type "SMA" => ta.sma(sourceEMA, lengthEMA) "EMA" => ta.ema(sourceEMA, lengthEMA) "SMMA (RMA)" => ta.rma(sourceEMA, lengthEMA) "WMA" => ta.wma(sourceEMA, lengthEMA) "VWMA" => ta.vwma(sourceEMA, lengthEMA) typeMA = input.string(title = "Method (EMA)", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="EMA") smoothingLengthEMA = input.int(title = "Smoothing Length (EMA)", defval = 5, minval = 1, maxval = 100, group="EMA") smoothingLine = ma(outEMA, smoothingLengthEMA, typeMA) plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none) //logic if (open + ATR > supertrend1) and (open + ATR > supertrend2) and (open + ATR > supertrend3) strategy.entry("L", strategy.long) else if (open < supertrend1 + ATR) and (open < supertrend2 + ATR) and (open < supertrend3 + ATR) strategy.entry("S", strategy.short) else strategy.close_all("C")