
মাল্টি-সাইক্লিক গড় রিটার্ন ট্রেডিং সিস্টেম হল একটি সমন্বিত পরিমাণগত ট্রেডিং কৌশল যা উইকফোর মার্কেট সাইক্লিক তত্ত্ব, মূল্য গ্রাফিকাল বিশ্লেষণ, গড় রিটার্ন এবং ট্রেন্ড ট্র্যাকিংয়ের চারটি শক্তিশালী ট্রেডিং পদ্ধতির একটি সূক্ষ্ম সংমিশ্রণ করে। এই কৌশলটি বিশেষত মাঝারি এবং দীর্ঘমেয়াদী দোলন ব্যবসায়ীদের জন্য ডিজাইন করা হয়েছে, যা ব্যবসায়ীদের তাদের ঝুঁকি পছন্দ এবং বাজারের অবস্থার উপর নির্ভর করে নমনীয়ভাবে সামঞ্জস্য করার জন্য কাস্টমাইজড বিকল্পগুলির একটি বিস্তৃত পরিসর সরবরাহ করে।
কৌশলটির মূল উপাদানগুলির মধ্যে রয়েছে বাজারের চক্রের পর্যায়গুলি সনাক্ত করার জন্য উইকফ বিশ্লেষণ, গুরুত্বপূর্ণ সমর্থন এবং প্রতিরোধের স্থানগুলি সনাক্ত করার জন্য মূল্যের গ্রাফিকাল বিশ্লেষণ, অতিরিক্ত ক্রয় বা বিক্রয় সনাক্ত করার জন্য গড় রিটার্ন উপাদান এবং মাঝারি থেকে দীর্ঘমেয়াদী মূল্যের গতিবিধি ক্যাপচার করার জন্য একটি ট্রেন্ড ট্র্যাকিং সিস্টেম। এই উপাদানগুলি একসাথে কাজ করে একটি বিস্তৃত ট্রেডিং সিস্টেম তৈরি করে, যা উচ্চ সম্ভাব্যতার ট্রেডিং সংকেত সরবরাহ করার উদ্দেশ্যে।
এই কৌশলটির মূল নীতি চারটি প্রধান লেনদেনের পদ্ধতির সমন্বয় ভিত্তিকঃ
ওয়াইকফ বিশ্লেষণ: এই উপাদানটি চারটি প্রধান পর্যায়কে চিহ্নিত করে - রিচার্ড ডি. উইকভের বাজার চক্র তত্ত্বের উপর ভিত্তি করে - সঞ্চয়, উত্থান, বরাদ্দ এবং পতনের পর্যায়। কৌশলটি বিশেষ রূপগুলিও সনাক্ত করে যেমন “স্প্রিং” প্যাটার্ন ((মিথ্যা বিরতির পরে দ্রুত বিপরীত) এবং “উত্তোলন” প্যাটার্ন ((মিথ্যা বিরতি) । এই পর্যায়গুলি মূল্য এবং লেনদেনের সম্পর্কের মাধ্যমে সংজ্ঞায়িত করা হয়, ব্যবসায়ীদের প্রতিষ্ঠানের তহবিলের প্রবাহ অনুসরণ করতে সহায়তা করে।
মূল্য গ্রাফিক্স বিশ্লেষণ: এই কম্পোনেন্টটি মার্কেট প্রোফাইল/ট্রাডাকশন প্রোফাইলের একটি সরলীকৃত সংস্করণ বাস্তবায়ন করে, যেখানে মূল মূল্যের কার্যকলাপ ঘটে। এই মূল স্তরের একটি দৃশ্যমান উপস্থাপনা সম্ভাব্য সমর্থন এবং প্রতিরোধের অঞ্চলগুলি সনাক্ত করতে সহায়তা করে।
গড় রিটার্ন: যখন দাম চরম অঞ্চলে চলে যায় তখন এই উপাদানটি সম্ভাব্য বিপরীত দিকের চিহ্নিত করে। এটি ব্রিনের বন্ড ব্যবহার করে ওভারবয় এবং ওভারসোল্ড দামের অঞ্চলগুলি সংজ্ঞায়িত করে এবং সম্ভাব্য বিপরীত দিকটি নিশ্চিত করার জন্য আরএসআই বিপর্যয়ের সাথে মিলিত হয়। শক্তিশালী প্রবণতার মধ্যে মিথ্যা সংকেত এড়াতে কৌশলটি একাধিক নিশ্চিতকরণ সংকেত প্রয়োজন।
ট্রেন্ড ট্র্যাকিং: এই উপাদানটি মাঝারি এবং দীর্ঘমেয়াদী দিকনির্দেশমূলক মূল্যের গতিবিধি ক্যাপচার করে, একাধিক মুভিং এভারেজ (৯, ২১, ৫০, ২০০ ইএমএ) ব্যবহার করে প্রবণতা দিকনির্দেশ এবং শক্তি নিশ্চিত করে, এমএসিডি বিশ্লেষণটি গতিশীলতা নিশ্চিতকরণ এবং প্রবণতা শক্তির জন্য ব্যবহৃত হয়, এবং সাম্প্রতিক মূল্য কাঠামোর বিশ্লেষণের মাধ্যমে উচ্চ সময়সীমার প্রবণতা ধারাবাহিকতা অর্জন করে।
এই চারটি উপাদান একে অপরের পরিপূরক এবং ট্রেডিং সিগন্যাল তৈরিতে একসাথে কাজ করে। সিস্টেমটি জটিল সংকেত সমন্বয় পদ্ধতি ব্যবহার করে, চূড়ান্ত ট্রেডিং সিগন্যাল তৈরির জন্য একাধিক সিস্টেমের নিশ্চিতকরণ প্রয়োজন, যা কার্যকরভাবে মিথ্যা সংকেতের সম্ভাবনা হ্রাস করে।
বহু-চক্রীয় গড় মূল্যের রিটার্ন ট্রেন্ড ব্রেকিং ট্রেডিং সিস্টেমের নিম্নলিখিত উল্লেখযোগ্য সুবিধাগুলি রয়েছেঃ
সমন্বিত বিশ্লেষণ ফ্রেমওয়ার্ক: চারটি ভিন্ন কিন্তু পরস্পরের পরিপূরক ট্রেডিং পদ্ধতির সমন্বয় দ্বারা, এই কৌশলটি একাধিক দৃষ্টিকোণ থেকে বাজার বিশ্লেষণ করতে সক্ষম, ট্রেডিং সংকেতের গুণমান এবং নির্ভরযোগ্যতা উন্নত করে। এই বহুমাত্রিক বিশ্লেষণটি একক সূচকের দ্বারা উত্পন্ন হতে পারে এমন বিভ্রান্তি এবং ভুল সংকেত হ্রাস করে।
বিভিন্ন বাজারের সাথে খাপ খাইয়ে নেওয়া: কৌশলটির নমনীয়তা এটিকে বিভিন্ন বাজার পরিবেশে ভালভাবে কাজ করতে সক্ষম করে। ট্রেন্ডিং মার্কেটে ট্রেন্ড ট্র্যাকিং উপাদানটি প্রভাবশালী; মধ্যম রিটার্ন এবং মূল্যের গ্রাফিকাল বিশ্লেষণ আরও কার্যকরভাবে জোনের ঝড়ের বাজারে।
প্রতিষ্ঠানগুলোর তহবিল সমান্তরালউইকফ বিশ্লেষণের মাধ্যমে, কৌশলটি প্রতিষ্ঠানের তহবিলের প্রবাহের সাথে সামঞ্জস্যপূর্ণ হওয়ার লক্ষ্যে তৈরি করা হয়েছে, যা দীর্ঘমেয়াদী সফল ব্যবসায়ের জন্য গুরুত্বপূর্ণ। এই উপাদানটি ব্যবসায়ীদের বড় তহবিলের সঞ্চয় এবং বন্টন পর্যায়ে সনাক্ত করতে এবং ব্যবসায়ের সাফল্যের হার বাড়াতে সহায়তা করে।
শক্তিশালী ঝুঁকি ব্যবস্থাপনা: এই কৌশলটি বিভিন্ন ধরণের ঝুঁকি ব্যবস্থাপনার বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে, যার মধ্যে রয়েছে এটিআর-ভিত্তিক স্বয়ংক্রিয় স্টপ লস, কুলিং লস, পোজিশনের সময়-ভিত্তিক প্রস্থান কৌশল, এবং ইক্যুইটি শতাংশের ভিত্তিতে পজিশন স্কেল গণনা। এই বৈশিষ্ট্যগুলি একসাথে তহবিল পরিচালনার স্থায়িত্ব নিশ্চিত করে।
উচ্চতা কাস্টমাইজযোগ্য: কৌশলটি একটি বিস্তৃত প্যারামিটার সেটিং সরবরাহ করে যা ব্যবসায়ীদের তাদের নিজস্ব ট্রেডিং স্টাইল, বাজার পছন্দ এবং ঝুঁকি সহনশীলতার সাথে সামঞ্জস্য করতে দেয়। প্রধান উপাদানগুলি স্বতন্ত্রভাবে চালু বা বন্ধ করা যায়, কৌশলটি বিভিন্ন ব্যবসায়ের পদ্ধতিতে অভিযোজিত হতে দেয়।
যদিও এই কৌশলটির অনেক সুবিধা রয়েছে, তবে এর সাথে নিম্নলিখিত সম্ভাব্য ঝুঁকি এবং চ্যালেঞ্জ রয়েছেঃ
প্যারামিটার ওভার অপ্টিমাইজেশনের ঝুঁকি: কৌশলটিতে প্রচুর পরিমাণে সামঞ্জস্যযোগ্য প্যারামিটার রয়েছে, যা ঐতিহাসিক তথ্যের সাথে অতিরিক্ত মিলিত হওয়ার ঝুঁকি সৃষ্টি করতে পারে। ব্যবসায়ীরা অত্যধিক অপ্টিমাইজেশন এড়াতে এবং প্রকৃত লেনদেনের আগে দৃ strong় ফরোয়ার্ড টেস্টিং এড়াতে সতর্কতা অবলম্বন করা উচিত।
জটিলতা ব্যবস্থাপনা
বাজারের পরিবর্তিত অবস্থা: কিছু বাজারের অবস্থার অধীনে, নির্দিষ্ট উপাদানগুলি খারাপ পারফরম্যান্স করতে পারে। উদাহরণস্বরূপ, দ্রুত প্রবণতা পরিবর্তনের সময়, গড় রিটার্নের সংকেতগুলি ক্ষতি করতে পারে। ব্যবসায়ীদের বাজার পরিস্থিতি পর্যবেক্ষণ করতে হবে এবং কৌশলগত উপাদানগুলির ওজনের সাথে সামঞ্জস্য করতে হবে।
বিলম্বের প্রভাব: কৌশলটির একাধিক নিশ্চিতকরণ অনুরোধগুলি প্রবেশের পয়েন্ট বিলম্ব হতে পারে, বিশেষত দ্রুত ওঠানামা বাজারে। এটি কিছু প্রবণতা মিস করতে বা নিম্ন-অগ্রাধিকার মূল্যে বাজারে প্রবেশ করতে পারে।
প্রযুক্তিগত নির্ভরতাকৌশলটি প্রযুক্তিগত সূচক যেমন চলমান গড়, আরএসআই এবং এমএসিডি-র উপর নির্ভর করে। কিছু বাজার পরিস্থিতিতে, এই সূচকগুলি ব্যর্থ হতে পারে বা বিভ্রান্তিকর সংকেত তৈরি করতে পারে। মৌলিক বিশ্লেষণ বা অন্যান্য অ-প্রযুক্তিগত কারণগুলির সাথে সম্পূরক করার পরামর্শ দেওয়া হয়।
এই ঝুঁকিগুলি হ্রাস করার উপায়গুলির মধ্যে রয়েছেঃ ছোট অবস্থান থেকে শুরু করে ধাপে ধাপে কৌশল বাস্তবায়ন; পর্যায়ক্রমে পর্যালোচনা এবং অপ্টিমাইজেশন; কৌশলটির কার্যকারিতা যাচাই করার জন্য নমুনা পরীক্ষার ব্যবহার; এবং প্রতি লেনদেন এবং প্রতিদিনের সর্বোচ্চ ক্ষতির সীমা হিসাবে কঠোর ঝুঁকি ব্যবস্থাপনার নিয়ম সেট করা।
কোডের গভীর বিশ্লেষণের উপর ভিত্তি করে, এই কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
স্বনির্ধারিত প্যারামিটার সেটিং: বর্তমান কৌশলটি স্থির প্যারামিটার মান ব্যবহার করে যেমন RSI চক্র এবং বুলিন ব্যান্ডের স্ট্যান্ডার্ড বৈষম্য। বিভিন্ন বাজার পরিবেশে কৌশলটির পারফরম্যান্সকে উন্নত করতে পারে উদ্বায়ীতা বা বাজার অবস্থার উপর ভিত্তি করে অভিযোজিত প্যারামিটারগুলি বাস্তবায়ন করে। উদাহরণস্বরূপ, উচ্চ উদ্বায়ী বাজারে একটি প্রশস্ত বুলিন ব্যান্ড ব্যবহার করা হয় এবং কম উদ্বায়ী বাজারে একটি সরু বুলিন ব্যান্ড ব্যবহার করা হয়।
মেশিন লার্নিং ইন্টিগ্রেশন: মেশিন লার্নিং অ্যালগরিদম প্রবর্তন করে সিগন্যাল জেনারেশন এবং ফিল্টারিং প্রক্রিয়াটি অপ্টিমাইজ করুন। উদাহরণস্বরূপ, শ্রেণিবদ্ধকরণ অ্যালগরিদম ব্যবহার করে সিগন্যালের সাফল্যের সম্ভাবনা পূর্বাভাস দেওয়া যেতে পারে, বা সর্বোত্তম প্যারামিটার সংমিশ্রণটি খুঁজে পেতে জোরদার শেখার ব্যবহার করা যেতে পারে। এটি কৌশলগুলিকে ক্রমাগত নতুন বাজার প্যাটার্নের সাথে খাপ খাইয়ে নিতে এবং শিখতে সক্ষম করবে।
বর্ধিত সময়সীমার বিশ্লেষণ: বর্তমান কৌশলটি মূলত একক সময় ফ্রেমে কাজ করে। সত্যিকারের মাল্টি-টাইম ফ্রেম বিশ্লেষণের বৈশিষ্ট্য যুক্ত করে সংকেতের গুণমান উন্নত করা যেতে পারে। উদাহরণস্বরূপ, কেবলমাত্র দিনের দিনরেখা, ঘূর্ণিরেখা এবং চাঁদরেখার প্রবণতার দিকনির্দেশনা একত্রিত হলেই বাণিজ্য করা হয়, যার ফলে বিপরীতমুখী ব্যবসায়ের ঝুঁকি হ্রাস পায়।
উন্নত উইকফ সনাক্তকরণ অ্যালগরিদম: বর্তমান উইকফ ফেজ সনাক্তকরণ তুলনামূলকভাবে সহজ। আরও জটিল অ্যালগরিদমগুলি বিকাশ করা যেতে পারে যা উইকফ ক্রমবর্ধমান এবং বন্টন প্যাটার্নকে সঠিকভাবে সনাক্ত করতে পারে, যেমন ক্রয়-বিক্রয় বিতরণ, ক্রয়-বিক্রয় ওজনের গড় মূল্য এবং আপেক্ষিক শক্তির সূচকগুলির সমন্বয় ব্যবহার করে।
মাল্টি-প্রজাতি সংশ্লিষ্টতা বিশ্লেষণ: মাল্টি ভেরিয়েন্ট কানেকশনাল অ্যানালিসিস যুক্ত করে, কৌশলটি সংশ্লিষ্ট বাজারের গতিশীলতা বিবেচনা করতে পারে। উদাহরণস্বরূপ, পণ্যের লেনদেনের ক্ষেত্রে ডলারের সূচকের গতিবিধি বিবেচনা করা বা শেয়ারের লেনদেনের ক্ষেত্রে শিল্প সূচকের পারফরম্যান্স বিবেচনা করা। এটি আরও বিস্তৃত বাজার দৃষ্টিভঙ্গি সরবরাহ করবে।
অপ্টিমাইজড প্রস্থান কৌশল: বর্তমান প্রস্থান প্রক্রিয়াগুলি মূলত সময় এবং আরএসআই-এর উপর ভিত্তি করে। আরও জটিল প্রস্থান কৌশলগুলি বাস্তবায়নের মাধ্যমে লাভজনকতা বাড়ানো যেতে পারে, যেমন গতিশীল সমর্থন/প্রতিরোধের স্তরের উপর ভিত্তি করে আংশিক মুনাফা অর্জন, বা প্রস্থান ট্রিগার হিসাবে অস্থির সংকোচনের মোড ব্যবহার করা।
ঝুঁকি ব্যবস্থাপনা: আরো জটিল ঝুঁকি ব্যবস্থাপনা বৈশিষ্ট্য যোগ করা হয়েছে, যেমন প্রত্যাহারের উপর ভিত্তি করে অবস্থানের সমন্বয়, প্রাসঙ্গিকতা ওজনের পোর্টফোলিও ব্যবস্থাপনা, এবং বাজারের তরলতা এবং স্লাইড পয়েন্ট বিবেচনা করে অর্ডার কার্যকর করার লজিক।
মাল্টি-সাইক্লিক মিড-রিটার্ন ট্রেডিং সিস্টেম হল একটি ব্যাপক, নমনীয়, পরিমাণগত ট্রেডিং কৌশল যা মধ্যম ও দীর্ঘমেয়াদী দোলন ব্যবসায়ীদের ব্যবহারের জন্য উপযুক্ত। এর মূল সুবিধা হল এটির মধ্যে একাধিক সমন্বিত ট্রেডিং পদ্ধতির সমন্বয়, একটি শক্তিশালী সংকেত উত্পাদন প্রক্রিয়া এবং বিস্তৃত ঝুঁকি ব্যবস্থাপনা বৈশিষ্ট্য রয়েছে।
এই কৌশলটি উইকভের বাজার চক্র তত্ত্ব, মূল্যের গ্রাফিকাল বিশ্লেষণ, গড় মূল্যের প্রত্যাবর্তন এবং প্রবণতা ট্র্যাকিংয়ের সমন্বয় করে একটি ট্রেডিং সিস্টেম তৈরি করে যা বিভিন্ন বাজার অবস্থার সাথে খাপ খাইয়ে নিতে পারে। এর নকশাটি প্রতিষ্ঠানের তহবিলের প্রবাহের সাথে সামঞ্জস্যপূর্ণ, একাধিক নিশ্চিতকরণের প্রয়োজনের মাধ্যমে মিথ্যা সংকেত হ্রাস করতে এবং ট্রেডিং ফলাফলের অনুকূলিতকরণের জন্য নমনীয় প্রস্থান-প্রবেশ ব্যবস্থা সরবরাহ করে।
প্যারামিটার অপ্টিমাইজেশান, জটিলতা পরিচালনা এবং বাজারের পরিবর্তিত অবস্থার মতো চ্যালেঞ্জ সত্ত্বেও, সতর্কতার সাথে বাস্তবায়ন এবং ক্রমাগত অপ্টিমাইজেশনের মাধ্যমে এই কৌশলটি ব্যবসায়ীদের সরঞ্জাম বাক্সে একটি শক্তিশালী অস্ত্র হয়ে উঠতে পারে। স্বনির্ধারিত প্যারামিটার, মেশিন লার্নিং প্রযুক্তি, বর্ধিত মাল্টিটাইম ফ্রেমওয়ার্ক বিশ্লেষণ এবং উন্নত প্রস্থান কৌশল প্রবর্তনের মাধ্যমে এই সিস্টেমটি ভবিষ্যতে তার কর্মক্ষমতা এবং অভিযোজনশীলতা আরও উন্নত করার সম্ভাবনা রয়েছে।
মাল্টি-সাইক্লিক গড় রিটার্ন ট্রেডিং সিস্টেমগুলি স্থিতিশীল, পদ্ধতিগত ট্রেডিং পদ্ধতির সন্ধানকারী ব্যবসায়ীদের জন্য একটি শক্তিশালী ভিত্তি সরবরাহ করে, যা ব্যক্তিগত পছন্দ এবং বাজারের অভিজ্ঞতার ভিত্তিতে কাস্টমাইজ এবং প্রসারিত করা যায়।
/*backtest
start: 2024-04-28 00:00:00
end: 2025-04-26 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Wyckoff Advanced Swing Strategy by TIAMATCRYPTO", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Main strategy settings
enableWyckoff = input.bool(true, "Enable Wyckoff")
enablePriceMap = input.bool(true, "Enable Price Map Profile")
enableMeanReversion = input.bool(true, "Enable Mean Reversion")
enableTrendFollowing = input.bool(true, "Enable Trend Following")
// TP/SL settings
useAutoTPSL = input.bool(true, "Use Auto TP/SL")
profitFactor = input.float(2.5, "Profit Factor (ATR multiple)")
stopLossFactor = input.float(1.5, "Stop Loss Factor (ATR multiple)")
// Swing Trading Parameters
minHoldingDays = input.int(3, "Minimum Holding Period (days)")
maxHoldingDays = input.int(20, "Maximum Holding Period (days)")
useWeekdayFilter = input.bool(true, "Filter Trading Days")
useTrailingStop = input.bool(true, "Use Trailing Stop")
trailingStopAtrMult = input.float(2.0, "Trailing Stop (ATR multiple)")
// Alternative Exit Rules
useExitByRSI = input.bool(true, "Exit by RSI")
exitLongRSI = input.int(70, "Exit Long when RSI")
exitShortRSI = input.int(30, "Exit Short when RSI")
// General Parameters
atrPeriod = input.int(14, "ATR Period")
rsiPeriod = input.int(14, "RSI Period")
volPeriod = input.int(20, "Volume MA Period")
emaFastPeriod = input.int(9, "EMA Fast Period")
emaSlowPeriod = input.int(21, "EMA Slow Period")
emaMediumPeriod = input.int(50, "EMA Medium Period")
emaLongPeriod = input.int(200, "EMA Long Period")
// Indicators
atr = ta.atr(atrPeriod)
rsi = ta.rsi(close, rsiPeriod)
volMA = ta.sma(volume, volPeriod)
emaFast = ta.ema(close, emaFastPeriod)
emaSlow = ta.ema(close, emaSlowPeriod)
emaMedium = ta.ema(close, emaMediumPeriod)
emaLong = ta.ema(close, emaLongPeriod)
macd = ta.ema(close, 12) - ta.ema(close, 26)
macdSignal = ta.ema(macd, 9)
// Weekday Filters (1 = Monday, 5 = Friday)
isGoodEntryDay = useWeekdayFilter ? (dayofweek != 5 and dayofweek != 1) : true // Not on Monday and Friday
isGoodExitDay = useWeekdayFilter ? (dayofweek != 1 and dayofweek != 5) : true // Not on Monday and Friday
// ===================== Wyckoff Method =====================
accumulationPhase = false
markupPhase = false
distributionPhase = false
markdownPhase = false
spring = false
if enableWyckoff
// Define support and resistance
support = ta.lowest(low, 10)
resistance = ta.highest(high, 10)
// Detect Spring (fake downward breakout)
spring := low[1] < support[2] and close > support[1]
// Detect Upthrust (fake upward breakout)
upthrust = high[1] > resistance[2] and close < resistance[1]
// Wyckoff Market Phases
accumulationPhase := volume > volMA and rsi < 40 and ta.falling(high, 5) and close > open
markupPhase := emaFast > emaSlow and emaSlow > emaMedium and volume > volMA and rsi > 50
distributionPhase := volume > volMA and rsi > 60 and ta.rising(low, 5) and close < open
markdownPhase := emaFast < emaSlow and emaSlow < emaMedium and volume > volMA and rsi < 50
// ===================== Price Map Profile =====================
lookbackPeriod = 30
highestPrice = ta.highest(high, lookbackPeriod)
lowestPrice = ta.lowest(low, lookbackPeriod)
valueAreaHigh = highestPrice - (highestPrice - lowestPrice) * 0.15
valueAreaLow = lowestPrice + (highestPrice - lowestPrice) * 0.15
pointOfControl = (valueAreaHigh + valueAreaLow) / 2
// Plot Price Map Profile
plot(enablePriceMap ? pointOfControl : na, "POC", color.purple, 1)
plot(enablePriceMap ? valueAreaHigh : na, "VAH", color.blue, 1)
plot(enablePriceMap ? valueAreaLow : na, "VAL", color.blue, 1)
// ===================== Mean Reversion =====================
meanReversionBuy = false
meanReversionSell = false
if enableMeanReversion
// Optimized Bollinger Bands for swing trading
basisBB = ta.sma(close, 20)
devBB = ta.stdev(close, 20) * 2
upperBB = basisBB + devBB
lowerBB = basisBB - devBB
// Enhanced Mean Reversion Conditions
lowerBBHit = ta.crossunder(close, lowerBB) or (close < lowerBB and close[1] < lowerBB)
upperBBHit = ta.crossover(close, upperBB) or (close > upperBB and close[1] > upperBB)
// RSI divergence for better timing
rsiLow = ta.lowest(rsi, 5)
priceLow = ta.lowest(low, 5)
rsiHigh = ta.highest(rsi, 5)
priceHigh = ta.highest(high, 5)
bullishDivergence = low < priceLow and rsi > rsiLow
bearishDivergence = high > priceHigh and rsi < rsiHigh
// Mean Reversion Swing Trading Signals
meanReversionBuy := lowerBBHit and rsi < 30 and bullishDivergence
meanReversionSell := upperBBHit and rsi > 70 and bearishDivergence
// ===================== Trend Following =====================
trendFollowingBuy = false
trendFollowingSell = false
if enableTrendFollowing
// Strong Trend Conditions
strongUptrend = emaFast > emaSlow and emaSlow > emaMedium and emaMedium > emaLong
strongDowntrend = emaFast < emaSlow and emaSlow < emaMedium and emaMedium < emaLong
// Simulated multi-day trend confirmation
recentHigherHigh = high > ta.highest(high[1], 5)
recentLowerLow = low < ta.lowest(low[1], 5)
// MACD Filters
macdRising = macd > macd[1] and macd[1] > macd[2]
macdFalling = macd < macd[1] and macd[1] < macd[2]
// Stronger Filters for Swing Trading
trendFollowingBuy := strongUptrend and macd > macdSignal and macdRising and recentHigherHigh
trendFollowingSell := strongDowntrend and macd < macdSignal and macdFalling and recentLowerLow
// ===================== Combine Signals =====================
wyckoffBuy = enableWyckoff and spring and accumulationPhase
wyckoffSell = enableWyckoff and distributionPhase
mrBuy = enableMeanReversion and meanReversionBuy
mrSell = enableMeanReversion and meanReversionSell
tfBuy = enableTrendFollowing and trendFollowingBuy
tfSell = enableTrendFollowing and trendFollowingSell
// Combine all strategies
buySignal = (wyckoffBuy or mrBuy or tfBuy) and isGoodEntryDay
sellSignal = (wyckoffSell or mrSell or tfSell) and isGoodEntryDay
// Add Candle Confirmation for better entries - full candle above/below EMA
buyConfirmation = close > open and close > emaMedium
sellConfirmation = close < open and close < emaMedium
// Track holding days
var int daysInTrade = 0
daysInTrade := strategy.position_size != 0 ? daysInTrade + 1 : 0
// Time-Based Exit
exitLongByTime = strategy.position_size > 0 and (daysInTrade >= maxHoldingDays or (daysInTrade >= minHoldingDays and isGoodExitDay))
exitShortByTime = strategy.position_size < 0 and (daysInTrade >= maxHoldingDays or (daysInTrade >= minHoldingDays and isGoodExitDay))
// Exit by RSI
exitLongByRSI = useExitByRSI and strategy.position_size > 0 and rsi >= exitLongRSI and daysInTrade >= minHoldingDays
exitShortByRSI = useExitByRSI and strategy.position_size < 0 and rsi <= exitShortRSI and daysInTrade >= minHoldingDays
// Trading logic - Swing Trading adjusted with TP/SL optional
if buySignal and buyConfirmation and strategy.position_size <= 0
strategy.cancel_all()
strategy.entry("Long", strategy.long)
if useAutoTPSL
strategy.exit("TP/SL Long", "Long", profit = atr * profitFactor, loss = atr * stopLossFactor)
if sellSignal and sellConfirmation and strategy.position_size >= 0
strategy.cancel_all()
strategy.entry("Short", strategy.short)
if useAutoTPSL
strategy.exit("TP/SL Short", "Short", profit = atr * profitFactor, loss = atr * stopLossFactor)
// Trailing Stop if enabled and no fixed TP/SL
if useTrailingStop and not useAutoTPSL and strategy.position_size != 0
longTrailPrice = high - atr * trailingStopAtrMult
shortTrailPrice = low + atr * trailingStopAtrMult
if strategy.position_size > 0
strategy.exit("Trailing Stop Long", "Long", trail_price=longTrailPrice)
else if strategy.position_size < 0
strategy.exit("Trailing Stop Short", "Short", trail_price=shortTrailPrice)