
মাল্টি টাইম ফ্রেম স্বনির্ধারিত বাজার ব্যবস্থার কোয়ান্টাম ট্রেডিং কৌশল হল একটি উচ্চমানের কোয়ান্টাম ট্রেডিং সিস্টেম যা মাল্টি-মেট্রিকাল সমন্বিত বিশ্লেষণের উপর ভিত্তি করে বিভিন্ন বাজার অবস্থার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে তার ট্রেডিং কৌশলগুলিকে সামঞ্জস্য করতে সক্ষম। এই কৌশলটি চারটি বাজার ব্যবস্থার সনাক্তকরণের জন্য কৃত্রিম বুদ্ধিমত্তার ব্যবহার করে (ট্রেন্ডিং, ব্যাস, ওভারলিং এবং স্ট্যাটিক) এবং বর্তমান বাজার অবস্থার গতিশীলতার উপর ভিত্তি করে ট্রেডিং প্যারামিটারগুলিকে সামঞ্জস্য করে। মূল প্রযুক্তিতে মাল্টি টাইম ফ্রেম বিশ্লেষণ, গ্রাফিং, গতিশীল ঝুঁকি সনাক্তকরণ এবং স্বয়ংক্রিয় অপ্টিমাইজেশন অ্যালগরিদম অন্তর্ভুক্ত রয়েছে, যা ব্যবসায়ীদের জন্য একটি বিস্তৃত এবং নমনীয় ট্রেডিং সরঞ্জাম সরবরাহ করে।
এই কৌশলটির কেন্দ্রবিন্দু হল এর বহুমুখী বাজার বিশ্লেষণের কাঠামো, যা একাধিক প্রযুক্তিগত সূচককে একত্রিত করে সঠিক বাজার অবস্থা সনাক্তকরণ এবং সংকেত তৈরি করতে সক্ষম করেঃ
চলমান গড় পদ্ধতি: দ্রুত ((9 চক্র) এবং ধীর ((34 চক্র) সূচক চলমান গড় ((EMA) ব্যবহার করে প্রবণতার দিকনির্দেশনা নির্ধারণ করা হয়, এটিআর থ্রেশহোল্ডের সাথে মিলিত হয়ে বিচারক নির্ভুলতা বাড়ায়।
মাল্টি টাইম ফ্রেম নিশ্চিতকরণ ব্যবস্থা: RSI এবং MACD সূচকগুলি উচ্চতর সময়সীমার মাধ্যমে একটি বৃহত্তর বাজার দৃষ্টিভঙ্গি সরবরাহ করে, নিম্ন সময়সীমার গোলমাল সংকেতগুলি ফিল্টার করে। এই কৌশলটি উচ্চ সময়ের ফ্রেমের ট্রেন্ড নিশ্চিতকরণকে বিশেষ গুরুত্ব দেয়, এইচটিএফ_আরএসআই এবং এইচটিএফ_এমএসিডি এর ক্রস পয়েন্টগুলিকে একটি শক্তিশালী ফিল্টার হিসাবে ব্যবহার করে।
মার্কেট মেকানিজম সনাক্তকরণ অ্যালগরিদম:
ফটোগ্রাফিক মোড সনাক্তকরণ এবং ট্রানজিট নিশ্চিতকরণকৌশলঃ একাধিক উচ্চ-সম্ভাব্যতাযুক্ত স্ক্রিনশট ফর্ম্যাটগুলি সনাক্ত করুন, যার মধ্যে রয়েছে পয়েন্ট-গ্রাস ফর্ম্যাট, ক্যাপসুল লাইন, মর্নিং স্টার ফর্ম্যাট, ছিদ্রযুক্ত লাইন, ডাবল-ডাউন, এবং এর বিপরীতমুখী প্রতিক্রিয়া ফর্ম্যাট। প্রতিটি ফর্ম্যাটকে লেনদেনের পরিমাণ বাড়ানোর জন্য নিশ্চিতকরণ প্রয়োজন, সংকেতের নির্ভরযোগ্যতা বাড়ানো উচিত।
মাল্টি-ফ্যাক্টর স্কোরিং সিস্টেম: প্রযুক্তিগত সূচক, আকৃতি সনাক্তকরণ এবং লেনদেনের পরিমাণের পরিস্থিতির সমন্বিত মূল্যায়ন, একটি সমন্বিত স্কোর তৈরি করুন। ক্রয় সংকেতের জন্য একটি ষাঁড়ের বাজার প্রয়োজন ≥1.0, বিক্রয় সংকেতের জন্য একটি ভাল বাজার প্রয়োজন ≥1.0।
ডায়নামিক স্টপ লস এবং ট্র্যাক স্টপ লস: এটিআর ব্যবহার করে গতিশীল স্টপ লেভেল গণনা করা হয়, যা নিশ্চিত করে যে ঝুঁকি ব্যবস্থাপনা বাজারের অস্থিরতার সাথে খাপ খায়। এটিআর মান অনুযায়ী স্টপ দূরত্ব স্বয়ংক্রিয়ভাবে সামঞ্জস্য হয়, যখন অস্থিরতা বৃদ্ধি পায় তখন প্রসারিত হয় এবং যখন অস্থিরতা হ্রাস পায় তখন সঙ্কুচিত হয়।
স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করা পারফরম্যান্স ট্র্যাকিং: সিস্টেমটি বিভিন্ন বাজার ব্যবস্থার অধীনে লেনদেনের পারফরম্যান্স রেকর্ড করে, লেনদেনের প্যারামিটার এবং রেটিং হ্রাসকে সামঞ্জস্য করার জন্য, কৌশলটির স্ব-অনুকূলিতকরণ অনুকূলিতকরণ।
বিশ্বব্যাপী অভিযোজনযোগ্যতাএই কৌশলটির সবচেয়ে উল্লেখযোগ্য সুবিধা হল এটি স্বয়ংক্রিয়ভাবে চারটি ভিন্ন বাজার অবস্থার সনাক্ত এবং মানিয়ে নিতে সক্ষম, পরিবর্তিত বাজার পরিবেশে একটি একক কৌশল সীমাবদ্ধতা এড়ানো। বাজারটি শক্তিশালী প্রবণতা, ক্রস-সমাধান, উচ্চ ওঠানামা বা নিম্ন ওঠানামা অবস্থায় থাকুক না কেন, সিস্টেমটি প্যারামিটার এবং সংকেত থ্রেশহোল্ডগুলিকে যথাযথভাবে সামঞ্জস্য করতে পারে।
মাল্টি টাইম ফ্রেম নিশ্চিতকরণএই “শীর্ষ থেকে নীচে” বিশ্লেষণ পদ্ধতি কার্যকরভাবে নিম্নমানের সংকেতগুলি ফিল্টার করে, মিথ্যা বিরতি এবং গোলমালের লেনদেনকে হ্রাস করে।
উচ্চ স্তরের মোড সনাক্তকরণ: ট্র্যাফিক নিশ্চিতকরণের সাথে মিলিত গ্রাফিকাল মোড সনাক্তকরণ একটি উচ্চ সম্ভাব্যতা প্রবেশের সংকেত সরবরাহ করে। এই মোডগুলি সমর্থন এবং প্রতিরোধের অবস্থার কাছাকাছি উপস্থিত হয় এবং ট্র্যাফিকের পরিমাণ বাড়ানোর সাথে সাথে কার্যকর হয়।
গতিশীল ঝুঁকি ব্যবস্থাপনাএটিআর-ভিত্তিক স্টপ অ্যান্ড ট্র্যাকিং স্টপ মেকানিজম নিশ্চিত করে যে ঝুঁকি ব্যবস্থাপনা বাজার অস্থিরতার সাথে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে পারে। এই পদ্ধতিটি মূলধন সুরক্ষার পাশাপাশি লাভজনক অবস্থানের চলমান থাকার অনুমতি দেয় এবং ঝুঁকি-ফেরতের অনুপাতকে অনুকূল করে তোলে।
স্ব-অপ্টিমাইজেশান ব্যবস্থা: কৌশলগুলি বিভিন্ন বাজার ব্যবস্থার অধীনে পারফরম্যান্স রেকর্ড করতে পারে, ভবিষ্যতের লেনদেনের জন্য প্রতিক্রিয়া এবং সমন্বয় ভিত্তি সরবরাহ করতে পারে এবং ক্রমাগত স্ব-সংশোধন করতে পারে।
ভিজ্যুয়াল মনিটররঙিন কোডেড ব্যাকগ্রাউন্ড এবং পারফরম্যান্স ডায়াগ্রামের মাধ্যমে, ব্যবসায়ীরা বর্তমান বাজারের অবস্থা, কৌশলগত পারফরম্যান্স এবং মূল সূচকগুলিকে স্বজ্ঞাতভাবে বুঝতে পারে, অপারেশনাল স্বচ্ছতা বাড়ায়।
পরামিতি সংবেদনশীলতা: এই কৌশলটি একাধিক প্যারামিটার এবং থ্রেশহোল্ড ব্যবহার করে বাজার প্রক্রিয়া সনাক্তকরণ এবং সংকেত উত্পাদন করে। এই প্যারামিটারগুলির সেটিংগুলিকে সাবধানতার সাথে সামঞ্জস্য করা দরকার, অন্যথায় এটি বাজার পরিস্থিতির ভুল বিচার বা ভুল সংকেত উত্পন্ন করতে পারে। বিশেষত ADX, ATR অনুপাত এবং ব্রিনের ব্যান্ডউইথের মতো গুরুত্বপূর্ণ থ্রেশহোল্ডগুলি বিভিন্ন ট্রেডিং জাতের বৈশিষ্ট্য অনুসারে অপ্টিমাইজ করা দরকার।
গণনাগত জটিলতা: একাধিক স্তরের সূচক গণনা এবং লজিক্যাল বিচার কৌশলটির জটিলতা বৃদ্ধি করে, যা প্রতিক্রিয়া এবং রিয়েল-টাইম সম্পাদনের গতি ধীর করে দিতে পারে, বিশেষত নিম্ন সময়ের চক্র বা উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং পরিবেশে।
বাজার পরিবর্তনের বিলম্ব: যদিও কৌশলগুলি বাজারের বিভিন্ন অবস্থা সনাক্ত করার জন্য ডিজাইন করা হয়েছে, বাজার পরিবর্তনের প্রক্রিয়া তাত্ক্ষণিক নয়, বরং ধীরে ধীরে হতে পারে। পরিবর্তনের সময় কৌশলগুলি ভুল বিচার এবং ভুল সংকেতের ঝুঁকির সম্মুখীন হতে পারে।
প্রযুক্তিগত সূচকগুলির উপর অত্যধিক নির্ভরশীলতা: কৌশলটি মূলত প্রযুক্তিগত সূচক এবং মূল্যের আকারের উপর ভিত্তি করে, মৌলিক বিষয় এবং বাজার সংবেদনগুলি বিবেচনা না করে। গুরুত্বপূর্ণ সংবাদ বা ব্ল্যাক সোয়ান ইভেন্টের সময় খাঁটি প্রযুক্তিগত বিশ্লেষণ কার্যকর হতে পারে না।
বিকৃতি সনাক্ত: কৌশলগত জটিলতা এবং স্বনির্ধারণের কারণে, ঐতিহাসিক তথ্যের সাথে অতিরিক্ত মিলিত হওয়ার ঝুঁকি রয়েছে, যা প্রকৃতপক্ষে ফলাফলের তুলনায় খারাপ হতে পারে।
মূলধনের প্রয়োজন: গতিশীল ঝুঁকি ব্যবস্থাপনার জন্য কিছু বাজার অবস্থার অধীনে একটি বড় স্টপ লস দূরত্ব প্রয়োজন হতে পারে, যা যুক্তিসঙ্গত ঝুঁকি অনুপাত বজায় রাখার জন্য পর্যাপ্ত ট্রেডিং তহবিলের প্রয়োজন।
মেশিন লার্নিং: বাজার প্রক্রিয়া সনাক্তকরণ এবং প্যারামিটার সমন্বয়কে অনুকূলিত করতে মেশিন লার্নিং অ্যালগরিদম প্রবর্তন করা। ঐতিহাসিক ডেটা প্রশিক্ষণ মডেল ব্যবহার করা যেতে পারে, যা বিভিন্ন বাজার অবস্থার সম্ভাব্য নিদর্শন সনাক্ত করে, শ্রেণিবদ্ধকরণের নির্ভুলতা উন্নত করে। বাস্তবায়ন পদ্ধতিতে বাজার অবস্থার শ্রেণিবদ্ধকরণের জন্য র্যান্ডম বন বা সমর্থন ভেক্টর মেশিন ব্যবহার করা যেতে পারে, নিউরাল নেটওয়ার্ক অপ্টিমাইজেশনের সূচক ওজন ব্যবহার করা যেতে পারে।
সংবেদনশীলতা সংহত: বাজার সংবেদন সূচক (যেমন ভিআইএক্স, বিয়ার / বিয়ার বিকল্প অনুপাত, সোশ্যাল মিডিয়া সংবেদন বিশ্লেষণ ইত্যাদি) একটি অতিরিক্ত নিশ্চিতকরণ স্তর হিসাবে। বাজার সংবেদন ডেটা একটি নেতৃস্থানীয় সূচক হিসাবে কাজ করতে পারে যা বাজার রূপান্তর পয়েন্টগুলিকে ভবিষ্যদ্বাণী করতে সহায়তা করে।
মৌলিক তথ্য সংহতকরণ: অর্থনৈতিক ক্যালেন্ডার ইভেন্ট, উপার্জন রিপোর্ট বা গুরুত্বপূর্ণ সংবাদ প্রকাশের মতো গুরুত্বপূর্ণ মৌলিক তথ্য একত্রিত করার জন্য একটি কাঠামো তৈরি করা। এটি গুরুত্বপূর্ণ ঘোষণার আগে ঝুঁকি ফাঁককে সমন্বয় করতে এবং অপ্রত্যাশিত ওঠানামা থেকে ক্ষতি এড়াতে সহায়তা করে।
সময় ফিল্টারট্রেডিং টাইম ফিল্টার প্রয়োগ করুন, কম তরলতা বা অস্বাভাবিক অস্থিরতার সময়গুলি এড়িয়ে চলুন। এটি বিশেষত ক্রস-মার্কেট ট্রেডিংয়ের জন্য গুরুত্বপূর্ণ, এশিয়ান, ইউরোপীয় এবং আমেরিকান বাজারে ট্রেডিংয়ের সময় ক্রস-টাইম অস্বাভাবিক আচরণ এড়াতে পারে।
প্রাসঙ্গিকতা বিশ্লেষণ মডিউল: ক্রস-অ্যাসেট প্রাসঙ্গিকতা বিশ্লেষণ যোগ করা হয়েছে, মাল্টি-মার্কেট প্যাটার্ন এবং স্প্রেড সিগন্যাল সনাক্ত করা হয়েছে। উদাহরণস্বরূপ, মুদ্রা জোড়ার মধ্যে প্রাসঙ্গিকতা, শেয়ার সূচক এবং VIX এর সম্পর্ক ইত্যাদি অতিরিক্ত লেনদেন নিশ্চিতকরণ সরবরাহ করতে পারে।
ডায়নামিক হোল্ডিং স্কেল অপ্টিমাইজেশন: বর্তমান বাজার ব্যবস্থা এবং ঐতিহাসিক পারফরম্যান্সের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে পজিশন স্কেলিং। ভাল পারফরম্যান্সের বাজার ব্যবস্থার অধীনে ঝুঁকি ফাঁক বাড়ানো এবং অনিশ্চয়তা বা ঐতিহাসিক দুর্বল পারফরম্যান্সের পরিবেশে ঝুঁকি হ্রাস করা যায়।
হার্ডওয়্যার অপ্টিমাইজেশান: কোডের দক্ষতা উন্নত করা, বিশেষত রিয়েল-টাইম লেনদেনের পরিবেশে কম্পিউটারের জটিলতা হ্রাস করা। আরও দক্ষ অ্যালগরিদম এবং ডেটা স্ট্রাকচার ব্যবহার করে কিছু যুক্তি পুনরায় লেখার বিষয়টি বিবেচনা করা যেতে পারে।
মাল্টিটাইম ফ্রেমওয়ার্ক স্বনির্ধারিত বাজার ব্যবস্থার পরিমাণগত ট্রেডিং কৌশলটি একটি গুরুত্বপূর্ণ উদ্ভাবনের প্রতিনিধিত্ব করে, যা বাজার ব্যবস্থার সনাক্তকরণ, মাল্টিটাইম ফ্রেমওয়ার্ক বিশ্লেষণ, মডেল সনাক্তকরণ এবং গতিশীল ঝুঁকি ব্যবস্থাপনার সমন্বয় করে। এর স্বনির্ধারিত ক্ষমতা এবং বিস্তৃত প্রযুক্তিগত সূচক সমন্বয় এটিকে বিভিন্ন বাজারের পরিবেশে প্রতিযোগিতামূলক রাখতে সক্ষম করে, কেবলমাত্র একক বাজারের অবস্থার মধ্যে সীমাবদ্ধ নয়।
এই কৌশলটির আসল মূল্য হল এর সামগ্রিক কাঠামো, পৃথক উপাদান নয়। বাজার প্রক্রিয়া সনাক্তকরণ, একাধিক সময়সীমার নিশ্চিতকরণ, মডেল সনাক্তকরণ এবং গতিশীল ঝুঁকি ব্যবস্থাপনার সমন্বয়মূলক কার্যকারিতা দ্বারা কৌশলটি উচ্চ মানের সংকেত তৈরি করতে এবং ঝুঁকি কার্যকরভাবে পরিচালনা করতে সক্ষম। এই বহুমুখী পদ্ধতিটি ভুল সংকেত হ্রাস করে এবং সামগ্রিক স্থিতিশীলতা বাড়ায়।
যাইহোক, এই কৌশলটি প্যারামিটার সংবেদনশীলতা, কম্পিউটারের জটিলতা এবং সম্ভাব্য ওভারফিটিংয়ের মতো চ্যালেঞ্জগুলির মুখোমুখি হয়। এই কৌশলটি প্রয়োগ করার সময় ব্যবসায়ীদের এই ঝুঁকিগুলি সম্পর্কে সচেতন হওয়া উচিত, পর্যাপ্ত প্যারামিটার অপ্টিমাইজেশন এবং ফরোয়ার্ড টেস্টিং করা উচিত।
ভবিষ্যতে অপ্টিমাইজেশনের দিকনির্দেশনাগুলির মধ্যে রয়েছে মেশিন লার্নিং বর্ধিতকরণ, আবেগ সূচক সংহতকরণ এবং গতিশীল অবস্থানের আকারের সমন্বয় ইত্যাদি। এই উন্নতিগুলি কৌশলটির অভিযোজনযোগ্যতা এবং স্থিতিশীলতা আরও বাড়িয়ে তুলবে, এটিকে আরও বিস্তৃত ট্রেডিং সিস্টেম হিসাবে পরিণত করবে। সামগ্রিকভাবে, কৌশলটি একটি শক্তিশালী কাঠামো সরবরাহ করে যা ব্যবসায়ীদের ঝুঁকি পছন্দ এবং বাজারের দৃষ্টিভঙ্গির ভিত্তিতে কাস্টমাইজ এবং প্রসারিত করা যেতে পারে।
/*backtest
start: 2025-04-13 00:00:00
end: 2025-04-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/
//@version=6
strategy("Dskyz (DAFE) AI Adaptive Regime - Pro", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, calc_on_order_fills=true, calc_on_every_tick=true)
// This script uses higher timeframe values for RSI/MACD, integrated into regime detection and scoring.
// Logic uses closed HTF bars to avoid repainting.
// D=====================================================Z
// 1. ATR SETTINGS==Z
// D=====================================================Z
group_atr = "⚡ ATR Settings"
atr_period = input.int(14, "ATR Period", minval=1, group=group_atr)
atr_multiplier = input.float(1.5, "ATR Multiplier", minval=0.1, step=0.1, group=group_atr)
atr_val = ta.atr(atr_period)
atr_avg = ta.sma(atr_val, 50)
// D=====================================================Z
// 2. MOVING AVERAGE (MA) SETTINGS==Z
// D=====================================================Z
group_ma = "📊 Moving Averages"
fast_ma_length = input.int(9, "Fast MA Length", minval=1, group=group_ma)
slow_ma_length = input.int(34, "Slow MA Length", minval=1, group=group_ma)
ma_fast = ta.ema(close, fast_ma_length)
ma_slow = ta.ema(close, slow_ma_length)
ma_strength_threshold = input.float(0.5, "MA Strength Threshold", minval=0.0, step=0.1, group=group_ma)
trend_dir = ma_fast > ma_slow + (atr_val * ma_strength_threshold) ? 1 : ma_fast < ma_slow - (atr_val * ma_strength_threshold) ? -1 : 0
// D=====================================================Z
// 3. MULTI-TIMEFRAME (HTF) SETTINGS==Z
// D=====================================================Z
group_MTA = "⏱️ Multi-Timeframe Inputs"
htf = input.timeframe("D", "HTF for RSI & MACD", group=group_MTA)
htf_rsi_raw = request.security(syminfo.tickerid, htf, ta.rsi(close, 14))
htf_rsi = htf_rsi_raw[1]
[htf_macd_line_raw, htf_macd_signal_raw, htf_macd_hist_raw] = request.security(syminfo.tickerid, htf, ta.macd(close, 12, 26, 9))
htf_macd_line = htf_macd_line_raw[1]
htf_macd_signal = htf_macd_signal_raw[1]
htf_macd_hist = htf_macd_hist_raw[1]
// new: HTF trend direction for regime detection
htf_trend_bull = htf_macd_line > htf_macd_signal and htf_rsi > 50
htf_trend_bear = htf_macd_line < htf_macd_signal and htf_rsi < 50
// D=====================================================Z
// 4. TRADE SETTINGS==Z
// D=====================================================Z
group_trade = "⚙️ Trade Settings"
risk_per_trade = input.int(500, "Risk per Trade ($)", minval=50, group=group_trade)
max_contracts = input.int(5, "Max Contracts", minval=1, group=group_trade)
max_daily_drawdown = input.float(0.05, "Max Daily Drawdown (%)", minval=0.01, group=group_trade)
tick_value = input.float(12.5, "Tick Value ($)", minval=0.01, group=group_trade)
ticks_per_point = input.int(4, "Ticks per Point", minval=1, group=group_trade)
default_stop_points = input.float(8.0, "Default Stop (Points)", minval=0.25, group=group_trade)
// D=====================================================Z
// 5. ADVANCED INDICATOR CALCULATIONS==Z
// D=====================================================Z
// --- ADX Calculation ---Z
adx_len = 14
up = ta.change(high)
down = -ta.change(low)
plus_dm = na(up) ? na : (up > down and up > 0 ? up : 0)
minus_dm = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, adx_len)
plus_di = 100 * ta.rma(plus_dm, adx_len) / trur
minus_di = 100 * ta.rma(minus_dm, adx_len) / trur
adx_val = 100 * ta.rma(math.abs(plus_di - minus_di) / (plus_di + minus_di), adx_len)
// --- Bollinger Bands Calculation ---Z
bb_basis = ta.sma(close, 20)
bb_dev = 2 * ta.stdev(close, 20)
bb_upper = bb_basis + bb_dev
bb_lower = bb_basis - bb_dev
bb_width = (bb_upper - bb_lower) / bb_basis
bb_width_avg = ta.sma(bb_width, 50)
// --- Price Action Range ---Z
price_range = ta.highest(high, 20) - ta.lowest(low, 20)
range_ratio = price_range / close
// D=====================================================Z
// 6. REGIME ASSIGNMENT & PATTERN RECOGNITION==Z
// D=====================================================Z
// Regime assignment with HTF influence and looser thresholds
is_trending = adx_val > 20 and math.abs(ma_fast - ma_slow) > atr_val * 0.3 and htf_trend_bull or htf_trend_bear // loosened ADX and MA thresholds, added HTF
is_range = adx_val < 25 and range_ratio < 0.03 and not htf_trend_bull and not htf_trend_bear // loosened ADX and range, HTF neutral
is_volatile = bb_width > bb_width_avg * 1.5 and atr_val > atr_avg * 1.2 and (htf_rsi > 70 or htf_rsi < 30) // loosened BB/ATR, added HTF overbought/oversold
is_quiet = bb_width < bb_width_avg * 0.8 and atr_val < atr_avg * 0.9 // loosened BB/ATR
regime = is_trending ? 1 : is_range ? 2 : is_volatile ? 3 : is_quiet ? 4 : 5
regime_name = regime == 1 ? "Trending" : regime == 2 ? "Range" : regime == 3 ? "Volatile" : regime == 4 ? "Quiet" : "Other"
// Pattern Recognition & Volume Confirmation-Z
vol_avg = ta.sma(volume, 20)
vol_spike = volume > vol_avg * 1.5
recent_low = ta.lowest(low, 20)
recent_high = ta.highest(high, 20)
is_near_support = low <= recent_low * 1.01
is_near_resistance = high >= recent_high * 0.99
bullish_engulfing = close[1] < open[1] and close > open and close > open[1] and open < close[1] and is_near_support and vol_spike
hammer = high - low > 3 * math.abs(open - close) and (close - low) / (0.001 + high - low) > 0.6 and is_near_support and vol_spike
morning_star = close[2] < open[2] and math.abs(close[1] - open[1]) < 0.2 * (high[1] - low[1]) and close > open and close > (open[2] + close[2]) / 2 and is_near_support and vol_spike
piercing = close[1] < open[1] and close > open and close > (open[1] + close[1]) / 2 and open < close[1] and is_near_support and vol_spike
double_bottom = low < low[1] and low[1] > low[2] and low[2] < low[3] and close > open and is_near_support and vol_spike
bearish_engulfing = close[1] > open[1] and close < open and close < open[1] and open > close[1] and is_near_resistance and vol_spike
shooting_star = high - low > 3 * math.abs(open - close) and (high - close) / (0.001 + high - low) > 0.6 and is_near_resistance and vol_spike
evening_star = close[2] > open[2] and math.abs(close[1] - open[1]) < 0.2 * (high[1] - low[1]) and close < open and close < (open[2] + close[2]) / 2 and is_near_resistance and vol_spike
dark_cloud = close[1] > open[1] and close < open and close < (open[1] + close[1]) / 2 and open > close[1] and is_near_resistance and vol_spike
double_top = high > high[1] and high[1] < high[2] and high[2] > high[3] and close < open and is_near_resistance and vol_spike
bull_signal = (bullish_engulfing ? 0.5 : 0.0) +
(hammer ? (regime == 2 ? 0.4 : 0.2) : 0.0) +
(morning_star ? 0.2 : 0.0) +
(piercing ? 0.2 : 0.0) +
(double_bottom ? (regime == 3 ? 0.3 : 0.15) : 0.0)
bear_signal = (bearish_engulfing ? 0.5 : 0.0) +
(shooting_star ? (regime == 2 ? 0.4 : 0.2) : 0.0) +
(evening_star ? 0.2 : 0.0) +
(dark_cloud ? 0.2 : 0.0) +
(double_top ? (regime == 3 ? 0.3 : 0.15) : 0.0)
// Multi-Factor Confirmation with HTF-Z
rsi_val = ta.rsi(close, 14)
[macd_line, macd_signal, macd_hist] = ta.macd(close, 12, 26, 9)
trend_bull = ma_fast > ma_slow
trend_bear = ma_fast < ma_slow
rsi_bull = rsi_val < 30
rsi_bear = rsi_val > 70
macd_bull = macd_line > macd_signal
macd_bear = macd_line < macd_signal
vol_expansion = atr_val > atr_avg * 1.2
// new: HTF confirmation for scoring
htf_bull_confirm = htf_trend_bull and htf_rsi < 70
htf_bear_confirm = htf_trend_bear and htf_rsi > 30
bull_score = bull_signal + (trend_bull ? 0.2 : 0) + (rsi_bull ? 0.15 : 0) + (macd_bull ? 0.15 : 0) + (vol_expansion ? 0.1 : 0) + (htf_bull_confirm ? 0.2 : 0)
bear_score = bear_signal + (trend_bear ? 0.2 : 0) + (rsi_bear ? 0.15 : 0) + (macd_bear ? 0.15 : 0) + (vol_expansion ? 0.1 : 0) + (htf_bear_confirm ? 0.2 : 0)
// D=====================================================Z
// 7. PERFORMANCE TRACKING & ADAPTIVE THRESHOLDS==Z
// D=====================================================Z
var float[] regime_pnl_long = array.new_float(5, 0)
var float[] regime_pnl_short = array.new_float(5, 0)
var int[] regime_win_long = array.new_int(5, 0)
var int[] regime_loss_long = array.new_int(5, 0)
var int[] regime_win_short = array.new_int(5, 0)
var int[] regime_loss_short = array.new_int(5, 0)
var int entry_regime = na
if barstate.isconfirmed and strategy.closedtrades > 0 and not na(entry_regime)
last_trade_profit = strategy.closedtrades.profit(strategy.closedtrades - 1)
last_trade_entry_id = strategy.closedtrades.entry_id(strategy.closedtrades - 1)
idx = entry_regime - 1
if last_trade_entry_id == "Long"
array.set(regime_pnl_long, idx, array.get(regime_pnl_long, idx) + last_trade_profit)
if last_trade_profit > 0
array.set(regime_win_long, idx, array.get(regime_win_long, idx) + 1)
else
array.set(regime_loss_long, idx, array.get(regime_loss_long, idx) + 1)
else if last_trade_entry_id == "Short"
array.set(regime_pnl_short, idx, array.get(regime_pnl_short, idx) + last_trade_profit)
if last_trade_profit > 0
array.set(regime_win_short, idx, array.get(regime_win_short, idx) + 1)
else
array.set(regime_loss_short, idx, array.get(regime_loss_short, idx) + 1)
entry_regime := na
// D=====================================================Z
// 8. DRAWDOWN & CIRCUIT BREAKER==Z
// D=====================================================Z
var float max_equity = strategy.equity
if strategy.equity > max_equity
max_equity := strategy.equity
daily_drawdown = (max_equity - strategy.equity) / max_equity
pause_trading = daily_drawdown > max_daily_drawdown
// D=====================================================Z
// 9. ENTRY & EXIT LOGIC WITH DYNAMIC STOPS & TRAILING STOPS=Z
// D=====================================================Z
swing_low = ta.lowest(low, 5)
swing_high = ta.highest(high, 5)
long_condition = bull_score >= 1.0 and not pause_trading
short_condition = bear_score >= 1.0 and not pause_trading
var float trail_stop_long = na
var float trail_stop_short = na
var float long_stop_price = na
var float long_limit_price = na
var float short_stop_price = na
var float short_limit_price = na
if long_condition and strategy.position_size <= 0
intended_stop = swing_low - atr_multiplier * atr_val
stop_distance_points = close - intended_stop
risk_per_contract = stop_distance_points * syminfo.pointvalue
contracts = math.floor(risk_per_trade / risk_per_contract)
contracts := contracts > 0 ? contracts : 1
contracts := math.min(contracts, max_contracts)
long_limit = close + stop_distance_points * 2
strategy.entry("Long", strategy.long, qty = contracts)
strategy.exit("Exit", from_entry = "Long", stop = intended_stop, limit = long_limit)
long_stop_price := intended_stop
long_limit_price := long_limit
trail_stop_long := intended_stop
entry_regime := regime
if short_condition and strategy.position_size >= 0
intended_stop = swing_high + atr_multiplier * atr_val
stop_distance_points = intended_stop - close
risk_per_contract = stop_distance_points * syminfo.pointvalue
contracts = math.floor(risk_per_trade / risk_per_contract)
contracts := contracts > 0 ? contracts : 1
contracts := math.min(contracts, max_contracts)
short_limit = close - stop_distance_points * 2
strategy.entry("Short", strategy.short, qty = contracts)
strategy.exit("Exit", from_entry = "Short", stop = intended_stop, limit = short_limit)
short_stop_price := intended_stop
short_limit_price := short_limit
trail_stop_short := intended_stop
entry_regime := regime
if strategy.position_size > 0
if close > long_limit_price * 0.5
trail_stop_long := math.max(trail_stop_long, close - atr_val * atr_multiplier)
strategy.exit("Long Trailing Stop", from_entry = "Long", stop = trail_stop_long)
if strategy.position_size < 0
if close < short_limit_price * 0.5
trail_stop_short := math.min(trail_stop_short, close + atr_val * atr_multiplier)
strategy.exit("Short Trailing Stop", from_entry = "Short", stop = trail_stop_short)
if strategy.position_size == 0
long_stop_price := na
long_limit_price := na
short_stop_price := na
short_limit_price := na
// D=====================================================Z
// 10. VISUALIZATION==Z
// D=====================================================Z
bgcolor(regime == 1 ? color.new(color.green, 85) :
regime == 2 ? color.new(color.orange, 85) :
regime == 3 ? color.new(color.red, 85) :
regime == 4 ? color.new(color.gray, 85) :
color.new(color.navy, 85))
plotshape(long_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Short Signal")
plot(ma_fast, "Fast MA", color=color.new(color.blue, 0), linewidth=2)
plot(ma_slow, "Slow MA", color=color.new(color.red, 0), linewidth=2)
plot(strategy.position_size > 0 ? long_stop_price : na, "Long Stop", color=color.new(color.red, 0), style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_limit_price : na, "Long Target", color=color.new(color.green, 0), style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_stop_price : na, "Short Stop", color=color.new(color.red, 0), style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_limit_price : na, "Short Target", color=color.new(color.green, 0), style=plot.style_linebr)
// D=====================================================Z
// 11. DASHBOARD: METRICS TABLE (Bottom-Left)=Z
// D=====================================================Z
var table dashboard = table.new(position.bottom_left, 2, 13, bgcolor=color.new(#000000, 29), border_color=color.rgb(80,80,80), border_width=1)
if barstate.islast
table.cell(dashboard, 0, 0, "⚡(DAFE) AI Adaptive Regime™", text_color=color.rgb(96,8,118), text_size=size.small)
modeStr = pause_trading ? "Paused" : "Active"
table.cell(dashboard, 0, 1, "Mode:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 1, modeStr, text_color=color.white, text_size=size.small)
trendText = trend_dir == 1 ? "Bullish" : trend_dir == -1 ? "Bearish" : "Neutral"
table.cell(dashboard, 0, 2, "Trend:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 2, trendText, text_color=trend_dir == 1 ? color.green : trend_dir == -1 ? color.red : color.gray, text_size=size.small)
table.cell(dashboard, 0, 3, "ATR:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 3, str.tostring(atr_val, "#.##"), text_color=color.white, text_size=size.small)
table.cell(dashboard, 0, 4, "ATR Avg:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 4, str.tostring(atr_avg, "#.##"), text_color=color.white, text_size=size.small)
table.cell(dashboard, 0, 5, "Volume Spike:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 5, vol_spike ? "YES" : "NO", text_color=vol_spike ? color.green : color.red, text_size=size.small)
table.cell(dashboard, 0, 6, "RSI:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 6, str.tostring(rsi_val, "#.##"), text_color=color.white, text_size=size.small)
rsiCondText = rsi_val < 30 ? "Oversold" : rsi_val > 70 ? "Overbought" : "Neutral"
table.cell(dashboard, 0, 7, "RSI Cond:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 7, rsiCondText, text_color=color.white, text_size=size.small)
table.cell(dashboard, 0, 8, "HTF RSI:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 8, str.tostring(htf_rsi, "#.##"), text_color=color.white, text_size=size.small)
htfTrendText = htf_trend_bull ? "Bullish" : htf_trend_bear ? "Bearish" : "Neutral"
table.cell(dashboard, 0, 9, "HTF Trend:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 9, htfTrendText, text_color=htf_trend_bull ? color.green : htf_trend_bear ? color.red : color.gray, text_size=size.small)
lastSignal = long_condition ? "Buy" : short_condition ? "Sell" : "None"
table.cell(dashboard, 0, 10, "Last Signal:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 10, lastSignal, text_color=long_condition ? color.green : short_condition ? color.red : color.white, text_size=size.small)
table.cell(dashboard, 0, 11, "Regime:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 11, regime_name, text_color=color.white, text_size=size.small)
table.cell(dashboard, 0, 12, "Bull Score:", text_color=color.white, text_size=size.small)
table.cell(dashboard, 1, 12, str.tostring(bull_score, "#.##"), text_color=color.white, text_size=size.small)
// D=====================================================Z
// REGIME CONDITIONS
// D=====================================================Z
var table debug_table = table.new(position.top_right, 2, 5, bgcolor=color.new(#000000, 50), border_color=color.rgb(80,80,80), border_width=1)
if barstate.islast
table.cell(debug_table, 0, 0, "Regime Conditions", text_color=color.rgb(96,8,118), text_size=size.small)
table.cell(debug_table, 0, 1, "ADX:", text_color=color.white, text_size=size.small)
table.cell(debug_table, 1, 1, str.tostring(adx_val, "#.##"), text_color=color.white, text_size=size.small)
table.cell(debug_table, 0, 2, "BB Width Ratio:", text_color=color.white, text_size=size.small)
table.cell(debug_table, 1, 2, str.tostring(bb_width / bb_width_avg, "#.##"), text_color=color.white, text_size=size.small)
table.cell(debug_table, 0, 3, "ATR Ratio:", text_color=color.white, text_size=size.small)
table.cell(debug_table, 1, 3, str.tostring(atr_val / atr_avg, "#.##"), text_color=color.white, text_size=size.small)
table.cell(debug_table, 0, 4, "Range Ratio:", text_color=color.white, text_size=size.small)
table.cell(debug_table, 1, 4, str.tostring(range_ratio, "#.##"), text_color=color.white, text_size=size.small)
// --- Bollinger Bands Visuals ---Z
p_bb_basis = plot(bb_basis, title="BB Basis", color=color.new(#ffffff, 50), linewidth=1)
p_bb_upper = plot(bb_upper, title="BB Upper", color=color.new(#4caf4f, 45), linewidth=2)
p_bb_lower = plot(bb_lower, title="BB Lower", color=color.new(#ff5252, 45), linewidth=2)
fill(p_bb_upper, p_bb_lower, color=color.new(#423645, 65))
//D=================================================================Z
// DASHBOARD: WATERMARK LOGO (Bottom-Right)
//D=================================================================Z
var table watermarkTable = table.new(position.bottom_right, 1, 1, bgcolor=color.rgb(0,0,0,80), border_color=color.rgb(0,50,137), border_width=1)
if barstate.islast
table.cell(watermarkTable, 0, 0, "⚡ Dskyz (DAFE) AI Adaptive Regime - Pro", text_color=color.rgb(96,8,118), text_size=size.normal)
// --- ALERTS ---Z
alertcondition(long_condition, title="Long Signal Alert", message="Enhanced Strategy Long Signal")
alertcondition(short_condition, title="Short Signal Alert", message="Enhanced Strategy Short Signal")