এই কৌশলটি মূল্যের প্রবণতা নির্ধারণ করতে সুপারট্রেন্ড সূচক ব্যবহার করে এবং প্রবণতা পরিবর্তনের সময় দীর্ঘ বা সংক্ষিপ্ত অবস্থানে প্রবেশ করে। কৌশলটি পরামিতিগুলি অনুকূল করতে ATR সময়কাল এবং গুণক সামঞ্জস্য করতে দেয়। এটি সামান্য ভিন্ন ফলাফলের জন্য ATR গণনার পদ্ধতি পরিবর্তন করার বিকল্পও সরবরাহ করে।
কৌশলটি অন্তর্নির্মিত ব্যাকটেস্টিং তারিখের পরিসীমা এবং দিনের নির্দিষ্ট সময়সীমার মধ্যে কেবল ট্রেড করার এবং সেই সময়সীমার শেষে সমস্ত বাণিজ্য বন্ধ করার ক্ষমতা রয়েছে। এটি দিনের ট্রেডিং স্টকগুলির জন্য বিশেষভাবে দরকারী। যখন টাইমফ্রেম বিকল্পটি সক্ষম করা হয়, আপনি টাইমফ্রেম শুরু হওয়ার সাথে সাথে বর্তমান অবস্থানে প্রবেশ করতে বা প্রথম অবস্থানে প্রবেশের জন্য একটি প্রবণতা পরিবর্তনের জন্য অপেক্ষা করতে পারেন।
কৌশলটি আপনাকে শতাংশ ভিত্তিক স্টপ লস এবং লাভের স্তরগুলি নির্দিষ্ট করতে দেয়। বেশিরভাগ ক্ষেত্রে, সুপারট্রেন্ড নিজেই সরবরাহিত এটিআর ভিত্তিক স্টপ অতিরিক্ত স্টপ লসকে অপ্রয়োজনীয় করে তোলে। সুতরাং আপনি কেবলমাত্র প্রফিট নিতে সক্ষম করতে পারেন প্রস্থান প্রক্রিয়াটি অনুকূল করতে।
অবশেষে, স্বয়ংক্রিয় ট্রেডিং পরিষেবাগুলির সাথে ব্যবহার করার জন্য প্রবেশ এবং প্রস্থান বার্তাগুলির জন্য কাস্টম সতর্কতা ক্ষেত্র রয়েছে।
সুপারট্রেন্ড কৌশল নিম্নলিখিত মূল নীতির উপর ভিত্তি করেঃ
এটিআর মান গণনা করুনঃ এসএমএ গণনা বা অন্তর্নির্মিত এটিআর সূচক মধ্যে নির্বাচন করতে পারেন। এসএমএ সূত্রঃ
atr2 = sma(tr, Periods)
উপরের এবং নীচের ব্যান্ড গণনা করুন। উপরের ব্যান্ডটি ঘনিষ্ঠ বিয়োগ ATR গুণক গুণিত ATR। নিম্ন ব্যান্ডটি ঘনিষ্ঠ প্লাস গুণক গুণিত ATR।
up = close - (Multiplier * atr)
dn = close + (Multiplier * atr)
দামের সাথে ব্যান্ডগুলির তুলনা করে প্রবণতার দিকনির্দেশ নির্ধারণ করুন। দাম নিম্ন ব্যান্ডের উপরে ক্রস করলে আপট্রেন্ড। দাম উপরের ব্যান্ডের নীচে ক্রস করলে ডাউনট্রেন্ড।
trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend
প্রবণতা পরিবর্তনের সময় ট্রেডিং সিগন্যাল তৈরি করুন, উদাহরণস্বরূপ আপট্রেন্ড থেকে ডাউনট্রেন্ডে পরিবর্তনের সময় বিক্রয় সিগন্যালঃ
sellSignal = trend == -1 and trend[1] == 1
সিগন্যাল এবং অতিরিক্ত অবস্থার উপর ভিত্তি করে ফিল্টার এন্ট্রি।
লাভ বা ঝুঁকি সীমাবদ্ধ করার জন্য স্টপ লস এবং লাভ নিন।
সুপারট্রেন্ড কৌশলটির পিছনে এই মূল কাজ নীতিগুলি রয়েছে। প্যারামিটার অপ্টিমাইজেশনের সাথে এটি ভাল ট্রেডিং ফলাফল তৈরি করতে পারে।
সুপারট্রেন্ড কৌশলটির বেশ কয়েকটি সুবিধা রয়েছেঃ
সুপারট্রেন্ড নিজেই কার্যকরভাবে প্রবণতা চিহ্নিত করে এবং সাধারণত ট্রেলিং স্টপগুলির জন্য ব্যবহৃত হয়।
কাস্টমাইজযোগ্য এটিআর পরামিতিগুলি সেরা ফিট করার জন্য পণ্য জুড়ে অনুকূলিত করা যেতে পারে। এসএমএ গণনা আরেকটি বিকল্প সরবরাহ করে।
কনফিগারযোগ্য ব্যাকটেস্ট এবং লাইভ ট্রেডিং সময় পরিসীমা বিভিন্ন ট্রেডিং সেশনের জন্য উপযুক্ত।
প্রথম ট্রেডে অবিলম্বে প্রবেশ করার বা সিগন্যালের জন্য অপেক্ষা করার বিকল্পটি বিভিন্ন পণ্যের জন্য।
বিল্ট-ইন স্টপ লস এবং লভ্যাংশ গ্রহণ ঝুঁকি ব্যবস্থাপনা উন্নত করতে বা আরও লাভে লক করতে সহায়তা করে।
স্বয়ংক্রিয় ট্রেডিং সিস্টেম এবং বটগুলির সাথে একীকরণের জন্য কাস্টমাইজযোগ্য ট্রেড সতর্কতা।
এছাড়াও কিছু ঝুঁকি রয়েছে যা বিবেচনা করা উচিতঃ
সুপারট্রেন্ড মিথ্যা সংকেত তৈরি করতে পারে যা অতিরিক্ত শর্ত দিয়ে ফিল্টার করা প্রয়োজন।
ভুল এটিআর পরামিতিগুলি অতিরিক্ত ট্রেডিং বা অনুপস্থিত প্রবণতা হতে পারে। সর্বোত্তম ভারসাম্যের জন্য অপ্টিমাইজেশান প্রয়োজন।
খুব কাছাকাছি স্টপ লস লাভজনক ট্রেডগুলি থেকে অল্প সময়ের জন্য বেরিয়ে আসতে পারে। খুব বেশি লাভের জন্য টেবিলে অর্থ ছেড়ে যেতে পারে।
খারাপ টাইমফ্রেম কনফিগারেশন ট্রেডিং সেশন মিস করতে পারে বা অপ্রয়োজনীয়ভাবে মার্জিন বন্ধ করতে পারে।
এই ঝুঁকিগুলি যথাযথভাবে সামঞ্জস্য করে বা আরও শক্তিশালী করার জন্য অতিরিক্ত ফিল্টার ব্যবহার করে মোকাবেলা করা যেতে পারে।
কৌশলটি আরও উন্নত করার কিছু উপায়ঃ
সঠিক ভারসাম্য খুঁজে পেতে বিভিন্ন ATR সময় পরীক্ষা করুন, সাধারণত 10-20 ভাল কাজ করে।
বিভিন্ন ATR গুণক মান চেষ্টা করুন, সাধারণত 2-5 উপযুক্ত, সর্বোত্তম খুঁজে পেতে সামঞ্জস্য করুন।
ভুল সংকেত কমাতে MACD, RSI ইত্যাদির মতো ফিল্টার যুক্ত করুন।
সর্বোত্তম ফলাফলের জন্য স্টপ লস অপ্টিমাইজ করুন এবং লাভের মাত্রা নিন। গতিশীল ট্রেলিং প্রক্রিয়া বিবেচনা করুন।
বিভিন্ন ট্রেডিং সময় পরিসীমা পরীক্ষা করুন। স্বল্পতম সময়কাল ইনট্রাডে এবং উচ্চ ফ্রিকোয়েন্সি কৌশলগুলির জন্য উপযুক্ত।
উচ্চ গতি বা অস্থিরতা ট্র্যাক করার জন্য স্বয়ংক্রিয় প্রতীক নির্বাচন বাস্তবায়ন করুন।
সামগ্রিকভাবে এটি একটি মোটামুটি সাধারণ এবং ব্যবহারিক ট্রেন্ড অনুসরণকারী কৌশল। এটি কাস্টমাইজযোগ্য পরামিতিগুলির সাথে প্রবণতা কার্যকরভাবে ট্র্যাক করে, তবে পরিচালনা করার জন্য অন্তর্নিহিত ঝুঁকিও রয়েছে। অপ্টিমাইজেশন এবং অতিরিক্ত শর্তগুলির সাথে এটি ধারাবাহিক আলফা সহ একটি শক্তিশালী পরিমাণ ট্রেডিং সিস্টেমে পরিমার্জিত হতে পারে।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m 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/ // © REV0LUTI0N //@version=4 // Strategy strategy("Supertrend Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash) Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) enableentry = input(true, title="Enter First Trade ASAP") waitentry = input(false, title="Wait To Enter First Trade") atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) Long = (trend == 1 ? up : na) buySignal = trend == 1 and trend[1] == -1 dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) Short = (trend == 1 ? na : dn) sellSignal = trend == -1 and trend[1] == 1 // Strategy Backtesting startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date') finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date') time_cond = true //Time Restriction Settings startendtime = input("", title='Time Frame To Enter Trades') enableclose = input(false, title='Enable Close Trade At End Of Time Frame') timetobuy = (time(timeframe.period, startendtime)) timetoclose = na(time(timeframe.period, startendtime)) // Stop Loss & Take Profit % Based enablesl = input(false, title='Enable Stop Loss') enabletp = input(false, title='Enable Take Profit') stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100 takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100 longStop = strategy.position_avg_price * (1 - stopTick) shortStop = strategy.position_avg_price * (1 + stopTick) shortTake = strategy.position_avg_price * (1 - takeTick) longTake = strategy.position_avg_price * (1 + takeTick) plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL") plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL") plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit") plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit") // Alert messages message_enterlong = input("", title="Long Entry message") message_entershort = input("", title="Short Entry message") message_closelong = input("", title="Close Long message") message_closeshort = input("", title="Close Short message") // Strategy Execution if Long and time_cond and timetobuy and enableentry strategy.entry("Long", strategy.long, alert_message = message_enterlong) if Short and time_cond and timetobuy and enableentry strategy.entry("Short", strategy.short, alert_message = message_entershort) if buySignal and time_cond and timetobuy and waitentry strategy.entry("Long", strategy.long, alert_message = message_enterlong) if sellSignal and time_cond and timetobuy and waitentry strategy.entry("Short", strategy.short, alert_message = message_entershort) if strategy.position_size > 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closelong) if strategy.position_size < 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closeshort) if strategy.position_size > 0 and enablesl and time_cond strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong) if strategy.position_size < 0 and enablesl and time_cond strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort) if strategy.position_size > 0 and enabletp and time_cond strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong) if strategy.position_size < 0 and enabletp and time_cond strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)