বহুমাত্রিক বাজার বিশ্লেষণ এবং পরিমাণগত ট্রেডিং কৌশল

EMA RSI MACD ATR SMA RVOL ROC
সৃষ্টির তারিখ: 2025-07-22 09:16:35 অবশেষে সংশোধন করুন: 2025-08-13 11:37:45
অনুলিপি: 4 ক্লিকের সংখ্যা: 379
2
ফোকাস
319
অনুসারী

বহুমাত্রিক বাজার বিশ্লেষণ এবং পরিমাণগত ট্রেডিং কৌশল বহুমাত্রিক বাজার বিশ্লেষণ এবং পরিমাণগত ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি একটি বহুমুখী বাজার বিশ্লেষণের কাঠামোর উপর ভিত্তি করেঃ

  1. মৌলিক সূচক গণনাপ্রথমত, কৌশলটি সিদ্ধান্তের ভিত্তিতে বিভিন্ন প্রযুক্তিগত সূচক গণনা করে, যার মধ্যে রয়েছে EMA (55), SMA (20/40/10), MACD (12,26,9), RSI (14), এবং ATR (14), ইত্যাদি।

  2. বাজার অবস্থা সনাক্তকরণ: কৌশল একটি বিস্তৃত বাজার প্রকার সনাক্তকরণ অ্যালগরিদম তৈরি করেছে যা নিম্নলিখিত দশটি অবস্থার মধ্যে একটিতে বর্তমান বাজারকে সঠিকভাবে বিচার করতে পারেঃ

    • ষাঁড়ের বাজার (Bull): দাম EMA55 এর উপরে, MACD লাইন সংকেত লাইনের উপরে, RSI> 50, আপেক্ষিক লেনদেনের পরিমাণ> 1
    • বিয়ারঃ দাম EMA55 এর নিচে, MACD লাইন সিগন্যাল লাইনের নিচে, RSI <50, লেনদেনের পরিমাণ গড়ের চেয়ে বেশি
    • সাইডওয়েজ (Sideways): দামের সাথে EMA55 এর পার্থক্য ATR এর 0.5 গুণেরও কম এবং এটিআর তার 20 চক্রের গড়ের চেয়ে কম
    • অস্থিরতাঃ এটিআর তার 20 চক্রের গড়ের 1.2 গুণ বেশি
    • গতিশীলতা (Momentum): মূল্য পরিবর্তন ATR এর ১.৫ গুণ বেশি এবং লেনদেনের পরিমাণ তার ২০ চক্রের গড়ের ১.৫ গুণ বেশি
    • গড় রিটার্ন (MeanRev): RSI>70 বা RSI<30
    • বক্স (বাক্স): ০.৮ গুণ তার ২০ চক্রের গড়ের চেয়ে কম দামের ওঠানামা
    • ম্যাক্রো (ম্যাক্রো): মূল্য পরিবর্তনের পরম মান ATR এর দ্বিগুণ
    • ওল্ফঃ দামের পরিবর্তন -ATR এর চেয়ে কম এবং দাম EMA55 এর চেয়ে কম
    • ঈগলঃ একটি ষাঁড়ের বাজার এবং এটিআর তার 20 চক্রের গড়ের চেয়ে 0.8 গুণ কম
  3. ডায়নামিক ওজন ম্যাট্রিক্সকৌশলঃ চিহ্নিত বাজার প্রকারের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে প্রতিটি সূচকের ওজনকে সামঞ্জস্য করে। উদাহরণস্বরূপ, একটি ষাঁড়ের বাজারের পরিবেশে, প্রবণতা এবং MACD সূচকের ওজন ২.০ এ বৃদ্ধি পায়, অন্য বাজার প্রকারের মধ্যে সূচকগুলির ওজন ভিন্ন হতে পারে।

  4. সমন্বিত স্কোরিং সিস্টেমকৌশলঃ প্রতিটি সূচকের স্কোরকে ভারসাম্যপূর্ণভাবে গণনা করে, একটি সমন্বিত স্কোর 0-100 তৈরি করে। 65 এর চেয়ে বড় একটি শক্তিশালী ক্রয় সংকেত, 35 এর চেয়ে কম একটি শক্তিশালী বিক্রয় সংকেত, এবং মাঝারি অঞ্চলটি বাজারের অবস্থা সম্পর্কে অস্পষ্ট এবং এটি দেখার পরামর্শ দেওয়া হয়।

  5. লেনদেনের নিয়মকৌশলঃ একটি ষাঁড় বা ছাগল বা গতিশীল বাজার চিহ্নিত করে এবং 65 এর চেয়ে বেশি রেটিং দিয়ে পজিশন খোলার জন্য অতিরিক্ত করুন; একটি ভালুক বা নেকড়ে বাজার চিহ্নিত করে এবং 35 এর চেয়ে কম রেটিং দিয়ে পজিশন খালি করুন। শর্তগুলি আর পূরণ না হলে স্বয়ংক্রিয়ভাবে পজিশন বন্ধ করুন।

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

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

  2. স্মার্ট মার্কেট আইডেন্টিফিকেশন: 10 টি বিভিন্ন বাজার পরিস্থিতি স্বয়ংক্রিয়ভাবে সনাক্ত করতে সক্ষম, এই বিশদ বাজার শ্রেণিবিন্যাসটি কৌশলটির অভিযোজনযোগ্যতাকে ব্যাপকভাবে বাড়িয়ে তোলে, যা বিভিন্ন বাজার পরিবেশে কার্যকর থাকতে দেয়।

  3. গতিশীল ওজন সমন্বয়কৌশলটির মূল সুবিধা হল এর গতিশীল ওজনের ব্যবস্থা, যা স্বয়ংক্রিয়ভাবে বিভিন্ন ধরণের বাজারের গুরুত্ব অনুসারে প্রতিটি সূচককে সামঞ্জস্য করে, যা অনুপযুক্ত বাজারের পরিস্থিতিতে কিছু সূচককে অন্ধভাবে অনুসরণ করা এড়ায়।

  4. ভিজ্যুয়ালাইজেশন প্যানেলকৌশল একটি বিস্তারিত ভিজ্যুয়াল প্যানেল সরবরাহ করে যা সূচকগুলির অবস্থা, বাজার প্রকার এবং সমন্বিত স্কোরগুলি স্পষ্টভাবে প্রদর্শন করে যা ব্যবসায়ীদের বর্তমান সিদ্ধান্তের যুক্তি বুঝতে সহায়তা করে।

  5. বিভিন্ন প্রযুক্তিগত বিশ্লেষণের সমন্বয়কৌশলটি প্রবণতা ট্র্যাকিং, গতিশীলতা, গড় রিটার্ন, ট্র্যাফিক বিশ্লেষণ এবং গ্রাফিকাল প্যাটার্ন সনাক্তকরণের মতো বিভিন্ন প্রযুক্তিগত বিশ্লেষণ পদ্ধতিকে একত্রিত করে একটি বিস্তৃত বিশ্লেষণ ব্যবস্থা গঠন করে।

  6. স্পষ্ট প্রবেশ ও প্রস্থান সংকেতএই কৌশলটি ট্রেডিং সিগন্যালকে সুনির্দিষ্ট করে তোলে এবং ট্রেডিং সিদ্ধান্তের ক্ষেত্রে স্বতন্ত্রতা ও দ্বিধা-দ্বন্দ্ব কমিয়ে দেয়।

কৌশলগত ঝুঁকি

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

  2. দ্রুত বাজার পরিবর্তনের ঝুঁকি: বাজারের অবস্থার দ্রুত পরিবর্তনের সময়, কৌশলগুলি সময়মত পরিবর্তনগুলি ধরতে ব্যর্থ হতে পারে, যার ফলে বিলম্বিত প্রতিক্রিয়া ঘটে। স্বল্পমেয়াদী সূচক যুক্ত করে বা আরও সংবেদনশীল বাজার অবস্থার রূপান্তর সনাক্তকরণ ব্যবস্থা স্থাপন করে এই সমস্যাটি প্রশমিত করা যেতে পারে।

  3. ভুয়া আক্রমণের ঝুঁকি: বাক্সের বাজারে, মিথ্যা ব্রেকআপ হতে পারে, যা ভুল সংকেত দেয়। এটি কৌশলটিতে নিশ্চিতকরণ ব্যবস্থা যুক্ত করার পরামর্শ দেওয়া হয়, যেমন দামের ব্রেকআপের দিক থেকে কিছু সময় ধরে অপেক্ষা করা বা অন্যান্য সূচকগুলির সাথে একত্রে নিশ্চিতকরণ।

  4. অতিরিক্ত লেনদেনের ঝুঁকি: উচ্চ অস্থিরতার বাজারে, রেটিংগুলি ঘন ঘন ওঠানামা করতে পারে, যার ফলে অত্যধিক লেনদেন হয়। ন্যূনতম হোল্ডিং সময় বা লেনদেনের ফিল্টারিং শর্তগুলি বাড়িয়ে অপ্রয়োজনীয় লেনদেন হ্রাস করা যেতে পারে।

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

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

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

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

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

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

  5. প্রত্যাহার নিয়ন্ত্রণে যোগদান: একটি অ্যাকাউন্ট প্রত্যাহারের উপর ভিত্তি করে একটি ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা ডিজাইন করুন, যখন কৌশলগত প্রত্যাহার একটি নির্দিষ্ট প্রান্তিকতা পৌঁছে যায় তখন স্বয়ংক্রিয়ভাবে ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করে বা ট্রেডিং স্থগিত করে, তহবিল সুরক্ষা।

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

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

সারসংক্ষেপ

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

এই কৌশলটি মধ্যম ও দীর্ঘমেয়াদী ব্যবসায়ীদের জন্য বিশেষভাবে উপযুক্ত কারণ এটি কার্যকরভাবে বাজারের প্রবণতা রূপান্তর পয়েন্টগুলি সনাক্ত করতে এবং অনুকূল বাজার পরিবেশে অবস্থান বজায় রাখতে সক্ষম। কৌশলটির ভিজ্যুয়াল প্যানেলটি ব্যবসায়ীদের বর্তমান বাজারের অবস্থা এবং সিদ্ধান্তের যুক্তি বোঝার জন্য একটি পরিষ্কার বাজার বিশ্লেষণের দৃষ্টিভঙ্গি সরবরাহ করে।

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

কৌশল সোর্স কোড
/*backtest
start: 2024-07-22 00:00:00
end: 2025-07-20 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/

//@version=6
strategy("Panel Pro+ Quantum SmartPrompt", overlay=true, default_qty_value = 10)

// --- BASE INDICATORS
ema_suprem   = ta.ema(close, 55)
sma_vol20    = ta.sma(volume, 20)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
rsi_val      = ta.rsi(close, 14)
atr14        = ta.atr(14)
range20      = ta.stdev(close, 20)
sniper_thresh = ta.percentile_nearest_rank(volume, 40, 80)
rvol         = volume / sma_vol20

// --- WARNING PRECALCULATIONS
smaATR20 = ta.sma(atr14, 20)
smaATR20x12 = smaATR20 * 1.2
smaATR20x08 = smaATR20 * 0.8
smaRange20 = ta.sma(range20, 20)
smaRange20x08 = smaRange20 * 0.8

// --- CORE LOGIC VARIABLES (removed display colors/prompts)
vol_abs_thresh = sma_vol20 * 1.2
trend = close > ema_suprem ? 1 : close < ema_suprem ? -1 : 0
delta = close - open

// --- SIMPLIFIED CANDLE PATTERNS
is_hammer = (high - low) > 3 * math.abs(open - close) and
             (close - low) / (0.001 + high - low) > 0.6 and
             (open - low) / (0.001 + high - low) > 0.6
is_engulfing = close > open[1] and open < close[1] and
               close > open and open < close

pattern = is_hammer ? 1 : is_engulfing ? 2 : 0

// --- MARKET TYPE DETECTION
isBull = close > ema_suprem and macdLine > signalLine and rsi_val > 50 and rvol > 1
isBear = close < ema_suprem and macdLine < signalLine and rsi_val < 50 and volume > sma_vol20
isSideways = math.abs(close - ema_suprem) < atr14 * 0.5 and atr14 < smaATR20
isVolatile = atr14 > smaATR20x12
isMomentum = ta.change(close, 1) > atr14 * 1.5 and volume > sma_vol20 * 1.5
isMeanRev = rsi_val > 70 or rsi_val < 30
isBox = isSideways and range20 < smaRange20x08
isMacro = math.abs(ta.change(close, 1)) > atr14 * 2
isWolf = ta.change(close, 1) < -atr14 and close < ema_suprem
isEagle = isBull and atr14 < smaATR20x08

var string marketType = ""

if isEagle
    marketType := "Eagle"
else if isBull
    marketType := "Bull"
else if isWolf
    marketType := "Wolf"
else if isBear
    marketType := "Bear"
else if isBox
    marketType := "Box"
else if isSideways
    marketType := "Sideways"
else if isVolatile
    marketType := "Volatile"
else if isMomentum
    marketType := "Momentum"
else if isMeanRev
    marketType := "MeanRev"
else if isMacro
    marketType := "Macro"
else
    marketType := "Unknown"

// --- DYNAMIC WEIGHT MATRIX
weights = array.new_float(10)
if marketType == "Bull"
    array.set(weights, 0, 2.0) // trend
    array.set(weights, 1, 1.5) // rsi
    array.set(weights, 2, 2.0) // macd
    array.set(weights, 3, 1.3) // volume
    array.set(weights, 4, 1.2) // rvol
    array.set(weights, 5, 1.0) // delta
    array.set(weights, 6, 1.2) // sniper
    array.set(weights, 7, 1.0) // blocks
    array.set(weights, 8, 1.0) // tick
    array.set(weights, 9, 1.0) // pattern
else if marketType == "Bear"
    array.set(weights, 0, 2.0)
    array.set(weights, 1, 1.5)
    array.set(weights, 2, 2.0)
    array.set(weights, 3, 1.5)
    array.set(weights, 4, 1.3)
    array.set(weights, 5, 1.1)
    array.set(weights, 6, 1.2)
    array.set(weights, 7, 1.1)
    array.set(weights, 8, 1.0)
    array.set(weights, 9, 1.0)
else
    // Default weights for other market types
    array.set(weights, 0, 1.0)
    array.set(weights, 1, 1.0)
    array.set(weights, 2, 1.0)
    array.set(weights, 3, 1.0)
    array.set(weights, 4, 1.0)
    array.set(weights, 5, 1.0)
    array.set(weights, 6, 1.0)
    array.set(weights, 7, 1.0)
    array.set(weights, 8, 1.0)
    array.set(weights, 9, 1.0)

// --- SCORING SYSTEM
base_score = 0.0
base_score := base_score + ((trend == 1 ? 20 : trend == -1 ? -20 : 0) * array.get(weights, 0))
base_score := base_score + ((rsi_val > 70 ? -10 : rsi_val < 30 ? 10 : 0) * array.get(weights, 1))
base_score := base_score + ((macdLine > signalLine ? 10 : -10) * array.get(weights, 2))
base_score := base_score + ((volume > vol_abs_thresh ? 8 : volume < sma_vol20 ? -8 : 0) * array.get(weights, 3))
base_score := base_score + ((rvol > 1.5 ? 7 : rvol < 0.8 ? -7 : 0) * array.get(weights, 4))
base_score := base_score + ((delta > 0 ? 6 : -6) * array.get(weights, 5))
base_score := base_score + ((volume > sniper_thresh ? 8 : volume < sma_vol20 ? -8 : 0) * array.get(weights, 6))
base_score := base_score + ((volume > ta.highest(volume, 10) * 0.8 ? 5 : volume < sma_vol20 ? -5 : 0) * array.get(weights, 7))
base_score := base_score + ((volume > sma_vol20 ? 5 : -5) * array.get(weights, 8))
base_score := base_score + ((pattern == 1 ? 7 : pattern == 2 ? 5 : 0) * array.get(weights, 9))

score_pct = math.max(0, math.min(100, 50 + base_score))

// === STRATEGY LOGIC ===
longCond = (marketType == "Bull" or marketType == "Eagle" or marketType == "Momentum") and score_pct > 65
shortCond = (marketType == "Bear" or marketType == "Wolf") and score_pct < 35

if longCond and strategy.position_size <= 0
    strategy.entry("LONG", strategy.long)
    alert("LONG entry: Market " + marketType, alert.freq_once_per_bar)
if shortCond and strategy.position_size >= 0
    strategy.entry("SHORT", strategy.short)
    alert("SHORT entry: Market " + marketType, alert.freq_once_per_bar)
if not longCond and strategy.position_size > 0
    strategy.close("LONG", comment="Exit LONG")
if not shortCond and strategy.position_size < 0
    strategy.close("SHORT", comment="Exit SHORT")