মাল্টি-পিরিয়ড সুপারট্রেন্ড EMA মোমেন্টাম ফিল্টার কৌশল

ATR EMA DEMA RSI supertrend VOLUME SL TP
সৃষ্টির তারিখ: 2025-08-15 11:33:46 অবশেষে সংশোধন করুন: 2025-08-15 11:33:46
অনুলিপি: 0 ক্লিকের সংখ্যা: 286
2
ফোকাস
319
অনুসারী

মাল্টি-পিরিয়ড সুপারট্রেন্ড EMA মোমেন্টাম ফিল্টার কৌশল মাল্টি-পিরিয়ড সুপারট্রেন্ড EMA মোমেন্টাম ফিল্টার কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির কেন্দ্রীয় নীতিটি একটি বিস্তৃত ট্রেডিং সিদ্ধান্ত গ্রহণের কাঠামো তৈরি করে, যা একাধিক স্তরের সিগন্যাল নিশ্চিতকরণ ব্যবস্থার উপর ভিত্তি করে তৈরি করা হয়েছেঃ

  1. সুপারট্রেন্ডিং কোর সিগন্যাল সিস্টেমএটিআর ব্যবহার করে গতিশীল প্রবণতা ব্যান্ড গণনা করা হয়, যখন বন্ধের দামটি নিম্নগামী হয় তখন একটি ক্রয় সংকেত উত্পন্ন হয় (উপরে) এবং যখন এটির উত্থান হয় তখন একটি বিক্রয় সংকেত উত্পন্ন হয় (নিচে) । এটিআর চক্র এবং গুণকটি বিভিন্ন বাজারের পরিবেশের অস্থিরতার সাথে খাপ খাইয়ে নিতে পারে।

  2. গতি নিশ্চিতকরণ ফিল্টার: স্বল্পমেয়াদী ইএমএ (ডিফল্ট 21 চক্র) এবং দীর্ঘমেয়াদী ডিএমএ (ডিফল্ট 200 চক্র) এর উপরে দামের প্রয়োজন, যাতে ট্রেডিংয়ের দিকটি মূল প্রবণতার সাথে সামঞ্জস্যপূর্ণ থাকে এবং বিপরীত ট্রেডিং এড়ানো যায়।

  3. সংকেত শক্তি যাচাইকরণ: RSI ((ডিফল্ট প্রয়োজনীয়তা> 50)) এর মাধ্যমে দামের গতিশীলতা নিশ্চিত করা, এবং তার EMA ((ডিফল্ট 20 চক্র) এর চেয়ে বেশি লেনদেনের পরিমাণ নিশ্চিত করা বাজার অংশগ্রহণ নিশ্চিত করা, প্রবেশের সংকেতের গুণমান উন্নত করা।

  4. স্মার্ট রি-এন্ট্রি ব্যবস্থাএকটি নিশ্চিত উত্থান প্রবণতায়, যখন দামের পুনর্নির্ধারণের পরে EMA-তে পুনরায় প্রবেশ করা হয় এবং অন্যান্য শর্ত পূরণ করা হয়, তখন কৌশলটি পুনরায় প্রবেশ করে এবং প্রবণতা অব্যাহত রাখার সুযোগকে কার্যকরভাবে ক্যাপচার করে।

  5. ঝুঁকি ব্যবস্থাপনা সিস্টেম

    • স্টপ লস সেট করা হয়েছে 1 টি এটিআর (ডিফল্ট) প্রবেশ মূল্যের নীচে
    • স্টপ সেট 3 টিএটিআর (ঐচ্ছিক) প্রবেশ মূল্যের উপরে
    • একবার আপনি 1 টিরও বেশি এটিআর উপার্জন করলে, ট্র্যাকিং স্টপ লস প্রক্রিয়াটি চালু করুন এবং মুনাফার কিছু অংশ লক করুন
  6. মাল্টি-পিরিয়ড প্যারামিটার

    • “অটো-১এইচ/৪এইচ”: এটিআর চক্র ১০, গুণ ৩, স্বল্পমেয়াদী দোলন ব্যবসায়ের জন্য উপযুক্ত
    • “অটো-১ডি”: এটিআর চক্র ১৪, গুণিত ৩, সূর্যমুখী প্রবণতা ট্র্যাকিংয়ের জন্য উপযুক্ত
    • “অটো-১ডাব্লু”: এটিআর চক্র ২০, গুণ ৪, দীর্ঘমেয়াদী প্রবণতা ধরার জন্য উপযুক্ত

কৌশলগত সুবিধা

এই কৌশলটি গভীরভাবে বিশ্লেষণ করা হয়েছে এবং এর উল্লেখযোগ্য সুবিধাগুলি হলঃ

  1. নমনীয়তা: সুপার ট্রেন্ডিং সূচকটি এটিআর গতিশীল সামঞ্জস্যের উপর ভিত্তি করে, যা বাজারের অস্থিরতার পরিবর্তনের সাথে স্বয়ংক্রিয়ভাবে খাপ খাইয়ে নেয় এবং বিভিন্ন বাজারের পরিবেশে কার্যকর থাকে।

  2. মাল্টি-লেয়ার নিশ্চিতকরণ: ইএমএ, ডিইএমএ, আরএসআই এবং ট্রেডিং ভলিউমের একাধিক যাচাইকরণের মাধ্যমে, ভুয়া সংকেতের ঝুঁকি উল্লেখযোগ্যভাবে হ্রাস পেয়েছে এবং লেনদেনের গুণমান উন্নত হয়েছে।

  3. স্মার্ট পুনঃপ্রবেশ ধারাবাহিকতা ধরে রাখে: উদ্ভাবনী পুনরায় প্রবেশের লজিকটি ট্রেন্ডের ওঠানামার পরে পুনরায় প্রবেশের অনুমতি দেয়, ট্রেন্ডের ওঠানামার কার্যকর ব্যবহার করে তহবিলের ব্যবহারের দক্ষতা বাড়ায়।

  4. সম্পূর্ণ ঝুঁকি ব্যবস্থাপনা ব্যবস্থাবিল্ট-ইন এটিআর-ভিত্তিক স্টপ লস, স্টপ-অফ এবং ট্র্যাকিং স্টপ-অফ ব্যবস্থাগুলি একক লেনদেনের ক্ষতিকে সীমাবদ্ধ করে, এবং লাভের সুরক্ষা এবং প্রত্যাহারের ঝুঁকি হ্রাস করে।

  5. একাধিক চক্রের পূর্বনির্ধারিত সরলীকৃত অপারেশন: বিভিন্ন টাইম ফ্রেমের জন্য পূর্বনির্ধারিত প্যারামিটার, যা বিভিন্ন ব্যবসায়ীদের সময় পছন্দ অনুসারে বিভিন্ন ট্রেডিং চক্রের উপর কৌশলগুলি সহজেই বাস্তবায়ন করতে দেয়।

  6. ভিজ্যুয়াল অ্যাসিস্ট্যান্ট ইনস্টিটিউট ক্লিয়ার: রঙিন রঙের মাধ্যমে ঊর্ধ্বমুখী ও নিম্নমুখী ট্রেন্ডের পার্থক্য করা, এবং পরিষ্কার ক্রয়-বিক্রয় সংকেত চিহ্নিত করা, যাতে বাজারের অবস্থা স্পষ্ট হয় এবং ট্রেডিং সিদ্ধান্ত নেওয়া সহজ হয়।

  7. বাস্তব পরীক্ষার মাধ্যমে প্রমাণিত: প্রায় ৬০% বিজয়ী হার এবং ৪ এর বেশি মুনাফার ফ্যাক্টর দেখাচ্ছে, বিশেষত প্রবণতাযুক্ত বাজার পরিবেশে উপযুক্ত।

কৌশলগত ঝুঁকি

যদিও এই কৌশলটি ব্যাপকভাবে তৈরি করা হয়েছে, তবুও এর মধ্যে কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ

  1. বাজারের অস্থিরতা: কোন সুস্পষ্ট প্রবণতা নেই এমন সমাপ্তি বাজারে, ক্রমাগত ক্ষুদ্র ক্ষয়ক্ষতির পরিমাণের ফলে ক্রমাগত ক্ষয়ক্ষতি ঘটাতে পারে। বাজার কাঠামো অস্পষ্ট হলে ট্রেডিং স্থগিত করা বা সংকেত সংবেদনশীলতা হ্রাস করার জন্য এটিআর গুণক বৃদ্ধি করা।

  2. ফিল্টারিং শর্তে কিছু সুযোগ মিস করা হতে পারে: একাধিক ফিল্টারিং শর্তগুলি সংকেতের গুণমান বাড়িয়ে তোলে, তবে এটি কিছু প্রাথমিক ট্রেন্ডিং সুযোগগুলি মিস করতে পারে। ব্যবসায়ীরা ব্যক্তিগত ঝুঁকির পছন্দ অনুসারে ফিল্টারিং শর্তগুলির কঠোরতা সামঞ্জস্য করার বিষয়ে বিবেচনা করতে পারেন।

  3. পরামিতি সংবেদনশীলতাATR চক্র এবং গুণক সেটিং কৌশলগত পারফরম্যান্সের উপর উল্লেখযোগ্য প্রভাব ফেলে। বিভিন্ন বাজার পরিবেশের জন্য বিভিন্ন পরামিতি প্রয়োজন হতে পারে। প্রতিক্রিয়া দ্বারা নির্দিষ্ট বাজারের জন্য প্যারামিটার সেটিং অপ্টিমাইজ করার পরামর্শ দেওয়া হয়।

  4. প্রত্যাহারের ঝুঁকি: সমীক্ষায় দেখা গেছে যে পুরো পজিশন ব্যবহারের সময় বড় আকারের প্রত্যাহার হতে পারে ((১০০% পর্যন্ত +) । কঠোর তহবিল ব্যবস্থাপনা বাস্তবায়ন করতে হবে, প্রতিটি লেনদেনের ঝুঁকি ১-২% এর মধ্যে নিয়ন্ত্রণ করতে হবে।

  5. ঐতিহাসিক তথ্যের সীমাবদ্ধতা: কৌশলগুলি মূলত নির্দিষ্ট বাজার এবং সময়কালের মধ্যে ব্যাক-টেস্টিং করা হয়, যেখানে অতিরিক্ত অভিযোজন ঝুঁকি থাকতে পারে। বাস্তবায়নের আগে আরও বিস্তৃত বাজার এবং সময়কালের পরীক্ষা করা উচিত।

  6. চরম বাজার অবস্থার পরীক্ষার অভাব: এই কৌশলটি বাজারের তীব্র ওঠানামা বা তরলতা সংকটের মতো চরম পরিস্থিতিতে পরীক্ষিত নাও হতে পারে। এই পরিস্থিতিতে এটির কার্যকারিতা জানা যায়নি।

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

কোড গভীরতা বিশ্লেষণের মাধ্যমে, এই কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ

  1. স্বনির্ধারিত প্যারামিটার: বাজারের অস্থিরতার উপর ভিত্তি করে এটিআর গুণক এবং চক্রগুলি সামঞ্জস্য করার জন্য একটি প্রক্রিয়া বিকাশ করুন, যাতে কৌশলগুলি বাজারের অবস্থার পরিবর্তনের সাথে স্বয়ংক্রিয়ভাবে খাপ খাইয়ে নিতে পারে। উদাহরণস্বরূপ, যখন অস্থিরতা বৃদ্ধি পায় তখন এটিআর গুণক বাড়ান এবং যখন অস্থিরতা হ্রাস পায় তখন এটিআর গুণক হ্রাস করুন।

  2. একীভূত বাজার অবস্থা শ্রেণিবিন্যাস: বাজারের অবস্থা সনাক্তকরণ মডিউল (যেমন বুলিন ব্যান্ডউইথ, এডিএক্স ইত্যাদি ব্যবহার করে) প্রবর্তন করুন, বাজারটি প্রবণতা বা অস্থিরতার উপর নির্ভর করে কৌশলগত প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করুন বা লেনদেন স্থগিত করুন।

  3. মাল্টি-পিরিয়ডাল বিশ্লেষণ ফ্রেমওয়ার্ক: মাল্টি-সাইক্লিক বিশ্লেষণের বৈশিষ্ট্য যুক্ত করা হয়েছে, যাতে ট্রেডিংয়ের জন্য একটি উচ্চতর টাইম ফ্রেমের প্রবণতা বর্তমান টাইম ফ্রেমের সাথে সামঞ্জস্যপূর্ণ হতে পারে এবং ট্রেডিংয়ের সঠিকতা উন্নত করতে পারে।

  4. পুনরায় প্রবেশের লজিক অপ্টিমাইজ করুন: পুনরায় প্রবেশের শর্তাবলী পরিমার্জন করা, ফিবোনাচি রিডাউন লেভেল বা মূল সমর্থন পয়েন্ট নিশ্চিতকরণ এবং পুনরায় প্রবেশের পয়েন্টের যথার্থতা বাড়ানোর জন্য বিবেচনা করা যেতে পারে।

  5. তহবিল ব্যবস্থাপনা অপ্টিমাইজেশন: গতিশীল পজিশন ম্যানেজমেন্ট বাস্তবায়ন করুন, বাজার অস্থিরতা, অ্যাকাউন্টের নেট মূল্য এবং ধারাবাহিক ক্ষতির উপর ভিত্তি করে পজিশন আকার স্বয়ংক্রিয়ভাবে সামঞ্জস্য করুন, তহবিলের কার্ভের পারফরম্যান্সকে অনুকূলিত করুন।

  6. বাজারের সেন্টিমেন্ট সূচক যোগ করা হয়েছে: বাজারের আবেগ সূচক যেমন ভিআইএক্স সূচক (উত্তোলন সূচক) বা লেনদেনের পরিমাণের পরিবর্তনের হারকে সংহত করুন, বাজার আতঙ্ক বা অত্যধিক আশাবাদী হওয়ার সময় কৌশলগত আচরণকে সামঞ্জস্য করুন।

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

সারসংক্ষেপ

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

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

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

কৌশল সোর্স কোড
/*backtest
start: 2024-08-15 00:00:00
end: 2025-08-13 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Supertrend EMA Strategy _V29", overlay=true, format=format.price, precision=2, initial_capital=1000)
// Inputs
tf_preset = input.string("Manual", title="Timeframe Preset", options=["Manual", "Auto-1H/4H", "Auto-1D", "Auto-1W"])
atr_period = input.int(10, title="ATR Period")
src = hl2
atr_multiplier = input.float(3.0, title="ATR Multiplier", step=0.1)
change_atr = input.bool(true, title="Change ATR Calculation Method?")
show_signals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
ema_length = input.int(21, title="EMA Length")
dema_length = input.int(200, title="DEMA Length")
tp_multiplier = input.float(3.0, title="Take Profit Multiplier (ATR, 0=off)", step=0.5)

allow_long = input.bool(true, title="Allow Long Trades")
allow_short = input.bool(false, title="Allow Short Trades")
sl_multiplier = input.float(1.0, title="Stop Loss Multiplier (ATR, 0=off)", step=0.5)
use_vol_filter = input.bool(true, title="Use Volume Filter?")
vol_ema_length = input.int(20, title="Volume EMA Length", minval=1)
use_rsi_filter = input.bool(true, title="Use RSI Filter?")
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(50, title="RSI Buy Threshold")
// Auto-adjust
int atr_period_final = atr_period
float atr_mult_final = atr_multiplier
string preset_label = tf_preset
if tf_preset == "Auto-1H/4H"
    atr_period_final := 10
    atr_mult_final := 3.0
    preset_label := "1H/4H"
else if tf_preset == "Auto-1D"
    atr_period_final := 14
    atr_mult_final := 3.0
    preset_label := "Daily"
else if tf_preset == "Auto-1W"
    atr_period_final := 20
    atr_mult_final := 4.0
    preset_label := "Weekly"
// Show settings
if barstate.islast
    label.new(x=bar_index[barstate.isrealtime ? 0 : 50], y=high, text="Preset: " + preset_label + "\nATR: " + str.tostring(atr_period_final) + "\nMult: " + str.tostring(atr_mult_final), color=color.white, style=label.style_label_left, textcolor=color.black, size=size.small, yloc=yloc.abovebar)
// Calculations
atr2 = ta.sma(ta.tr, atr_period_final)
atr = change_atr ? ta.atr(atr_period_final) : atr2
up = src - (atr_mult_final * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (atr_mult_final * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.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
buy_signal = trend == 1 and trend[1] == -1
sell_signal = trend == -1 and trend[1] == 1
ema = ta.ema(close, ema_length)
ema1 = ta.ema(close, dema_length)
dema = 2 * ema1 - ta.ema(ema1, dema_length)
vol_ema = ta.ema(volume, vol_ema_length)
rsi = ta.rsi(close, rsi_length)
// Plots (global)
up_plot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
dn_plot = plot(trend == -1 ? dn : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
plot(dema, title="DEMA 200", color=color.blue, style=plot.style_linebr, linewidth=2)
plotshape(buy_signal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green)
plotshape(buy_signal and show_signals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
plotshape(sell_signal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red)
plotshape(sell_signal and show_signals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
m_plot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
long_fill_color = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.white) : color.white
short_fill_color = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.white) : color.white
fill(m_plot, up_plot, title="UpTrend Highlighter", color=long_fill_color)
fill(m_plot, dn_plot, title="DownTrend Highlighter", color=short_fill_color)
plot(ema, title="EMA", color=color.blue, linewidth=2)
// Strategy Logic with Re-Entry (in if for skip)

var float entry_price = na
vol_condition = not use_vol_filter or volume > vol_ema
rsi_condition = not use_rsi_filter or rsi > rsi_threshold
buy_cond_met = buy_signal and close > ema and close > dema and allow_long and vol_condition and rsi_condition
re_entry_cond = trend == 1 and strategy.position_size == 0 and close[1] < ema and close > ema and close > dema and vol_condition and rsi_condition
sell_cond_met = sell_signal and strategy.position_size > 0 and (close < dema or true)
if buy_cond_met or re_entry_cond
    strategy.entry("Long", strategy.long)
    entry_price := close
if sell_cond_met
    strategy.close("Long")
    entry_price := na
if sell_signal and close < ema and close < dema and allow_short and vol_condition
    strategy.entry("Short", strategy.short)
    entry_price := close
if buy_signal and strategy.position_size < 0
    strategy.close("Short")
    entry_price := na
// SL & TP with Trailing
if strategy.position_size != 0 and not na(entry_price)
    if sl_multiplier > 0
        sl_price = strategy.position_size > 0 ? entry_price - (sl_multiplier * atr) : entry_price + (sl_multiplier * atr)
        trail_condition = strategy.position_size > 0 ? (close - entry_price > atr) : (entry_price - close > atr)
        trail_sl = strategy.position_size > 0 ? up : dn
        final_sl = trail_condition ? trail_sl : sl_price
        strategy.exit("SL Exit", stop=final_sl)
    if tp_multiplier > 0
        tp_price = strategy.position_size > 0 ? entry_price + (tp_multiplier * atr) : entry_price - (tp_multiplier * atr)
        strategy.exit("TP Exit", limit=tp_price)
// Alerts
alertcondition(buy_signal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sell_signal, title="SuperTrend Sell", message="SuperTrend Sell!")
change_cond = trend != trend[1]
alertcondition(change_cond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")