
এলোমেলো সূচক এবং পতন মোডের উপর ভিত্তি করে স্বয়ংক্রিয় বাজার বিপরীত ট্রেডিং কৌশল একটি পরিমাণগত ট্রেডিং সিস্টেম যা প্রযুক্তিগত বিশ্লেষণের ক্লাসিক পতন মোড সনাক্তকরণ এবং এলোমেলো সূচক ট্রেন্ড নিশ্চিতকরণের সাথে মিলিত। এই কৌশলটির মূল নকশা ধারণাটি হ’ল মূল বাজার বিপরীত পয়েন্ট সনাক্তকরণ, ওভারবয় বা ওভারসেল অঞ্চলে সম্ভাব্য প্রবণতা পাল্টানোর সুযোগ ক্যাপচার করা। এই কৌশলটি পাইন স্ক্রিপ্ট ব্যবহার করে লেখা হয়েছে এবং ট্রেডিংভিউ প্ল্যাটফর্মে সিগন্যাল জেনারেশন, ঝুঁকি পরিচালনা এবং চার্ট লেকারিং ফাংশন সহ সম্পূর্ণ স্বয়ংক্রিয় ট্রেডিং প্রক্রিয়া বাস্তবায়ন করা হয়েছে। এই কৌশলটি বিভিন্ন ক্লাসিক পতন মোড যেমন ক্যাপসিলার ফ্লাইট স্ট্রিং লাইন, নিমজ্জিত মোড এবং তারকা চালু করার মতো এবং এলোমেলো সূচক দ্বারা ট্রেডিংয়ের জন্য আরও নির্ভরযোগ্যতা এবং নির্ভুলতা নিশ্চিত করার জন্য ট্রেডিং নিশ্চিত করতে সক্ষম
এই কৌশলটি দুটি মূল প্রযুক্তিগত নীতির উপর ভিত্তি করে তৈরি করা হয়েছেঃ বিপর্যয় সনাক্তকরণ এবং প্রবণতা সনাক্তকরণ ফিল্টার।
প্রথমত, ক্যাডেট ফর্ম্যাট শনাক্তকরণের ক্ষেত্রে, কৌশলটি প্রতিটি কে লাইনের কাঠামোর বিশ্লেষণ করে, যার মধ্যে একটি সত্তা, উপ-ছায়া এবং নিম্ন-ছায়ার অনুপাতের সম্পর্ক রয়েছে। সিস্টেমটি বিভিন্ন ফর্ম্যাটগুলির বৈশিষ্ট্যগুলি পরিমাপ করার জন্য প্যারামিটারগুলির একটি সিরিজ সংজ্ঞায়িত করে, যেমন ক্যাপসুল লাইনের জন্য নিম্ন-ছায়ার দৈর্ঘ্যটি সত্তার দৈর্ঘ্যের দ্বিগুণের চেয়ে বেশি প্রয়োজন, এবং সত্তাগুলি মোট দৈর্ঘ্যের 50% এর বেশি নয়। উপরের ছায়া খুব কমই বিদ্যমান। কৌশল শনাক্তকরণের ফর্ম্যাটগুলির মধ্যে রয়েছেঃ
দ্বিতীয়ত, কৌশলটি একটি র্যান্ডম সূচক ((Stochastic) প্রবণতা নিশ্চিতকরণ সরঞ্জাম হিসাবে প্রবর্তন করে যাতে কেবলমাত্র ওভারবয় বা ওভারসোল্ড অঞ্চলে বিপরীত সংকেত ধরা যায়। একটি থ্রেশহোল্ড সেট করে (ডিফল্ট 80), যখন র্যান্ডম সূচকটি হ্রাস অঞ্চলের উপরে থাকে তখন এটি একটি ওভারবয় অঞ্চল হিসাবে বিবেচিত হয় (উত্তর অঞ্চল) এবং যখন এটি 100-থ্রেশহোল্ডের নীচে থাকে তখন এটি একটি ওভারসোল্ড অঞ্চল হিসাবে বিবেচিত হয় (উত্তর অঞ্চল) । কৌশলটি র্যান্ডম সূচকগুলিকে সমতল অ্যালগরিদম দিয়ে প্রক্রিয়া করে, শব্দ বাধা হ্রাস করে এবং সংকেত নির্ভরযোগ্যতা বাড়ায়িত করে।
লেনদেনের বাস্তবায়ন লজিক নিম্নরূপঃ
ঝুঁকি ব্যবস্থাপনার ক্ষেত্রে, এটিআর-ভিত্তিক গতিশীল স্টপ-অফ-লস মেশিন ব্যবহার করা হয়ঃ
এই নকশাটি স্বয়ংক্রিয়ভাবে বাজারের অস্থিরতার সাথে সামঞ্জস্য করে এবং স্বয়ংক্রিয়ভাবে বড় বাজারে সুরক্ষা প্রসারিত করে এবং ছোট বাজারে সুরক্ষা সংকীর্ণ করে, যা নিশ্চিত করে যে ঝুঁকি-লাভের অনুপাত 1: 1.5 তে রয়েছে।
কোডের গভীর বিশ্লেষণের মাধ্যমে, এই কৌশলটি নিম্নলিখিত উল্লেখযোগ্য সুবিধাগুলি প্রকাশ করেছেঃ
মাল্টি-ডাইমেনশনাল সিগন্যাল যাচাইকরণ ব্যবস্থা: কৌশলটি কেবল পতন মোডের উপর নির্ভর করে না, বরং ট্রেন্ড নিশ্চিতকরণের জন্য এলোমেলো সূচকগুলির সাথে মিলিত হয়, ডাবল ফিল্টারিংটি মিথ্যা সংকেতকে ব্যাপকভাবে হ্রাস করে, লেনদেনের হার বাড়ায়। বিশ্লেষণে দেখা গেছে যে একা পতন মোড ব্যবহার করলে বিপুল পরিমাণে ভুল সংকেত তৈরি হতে পারে, এবং ট্রেন্ড নিশ্চিতকরণের সাথে যুক্ত হওয়ার পরে, কার্যকর সংকেতের গুণমান উল্লেখযোগ্যভাবে উন্নত হয়।
স্বনির্ধারিত ঝুঁকি ব্যবস্থাপনাএটিআর এর মাধ্যমে, কৌশলটি বিভিন্ন বাজার পরিবেশ এবং ওঠানামা পরিস্থিতিতে বুদ্ধিমানভাবে মানিয়ে নিতে পারে এবং সুরক্ষার পরিধিটি কোনও মানুষের হস্তক্ষেপ ছাড়াই সামঞ্জস্য করতে পারে। এই প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে সুরক্ষার পরিধি প্রসারিত করে উচ্চ ওঠানামার সময় এবং নিম্ন ওঠানামার সময় প্যারামিটারগুলিকে কঠোর করে তোলে যাতে ক্ষুদ্র ওঠানামার দ্বারা স্টপ লস ট্রিগার করা যায় না।
উচ্চতর কাস্টমাইজেশনকৌশলটি ব্যবহারকারীদের জন্য ATR চক্র, স্টপ-অফ-লস অনুপাত, প্রবণতা প্রত্যাহারের সময়কাল, বিপরীত-ট্র্যাশ মান এবং সমতলীকরণ ফ্যাক্টর সহ বিভিন্ন প্যারামিটার সরবরাহ করে। প্রতিটি প্যাড মোড পৃথকভাবে চালু বা বন্ধ করা যেতে পারে, যা ব্যবসায়ীদের বিভিন্ন বাজার বৈশিষ্ট্য বা ব্যক্তিগত পছন্দ অনুসারে সিস্টেমটি কাস্টমাইজ করতে দেয়।
ভিজ্যুয়াল ট্রেডিং সিগন্যালকৌশল স্বয়ংক্রিয়ভাবে চার্টে ট্রেডিং সংকেত চিহ্নিত করে, যেমন “HAM” (কুসুম লাইন), “STAR” (মেটার লাইন) ইত্যাদি, যাতে ব্যবসায়ীরা বাজারের অবস্থাকে স্বতঃস্ফূর্তভাবে সনাক্ত করতে পারে, যা বিশ্লেষণ এবং রিয়েল-টাইম পর্যবেক্ষণে সহায়তা করে।
ফান্ড ম্যানেজমেন্ট ইন্টিগ্রেশনকৌশলঃ প্রতি লেনদেনের জন্য তহবিল বরাদ্দ হিসাবে অ্যাকাউন্টের ১০% হারের ডিফল্ট ব্যবহার, প্রয়োজন অনুসারে সামঞ্জস্য করা যায়, সম্পূর্ণ তহবিল পরিচালনার কার্যকারিতা উপলব্ধ করা হয়, অত্যধিক লেনদেন এবং তহবিল ঝুঁকি এড়ানো যায়।
কমিশন খরচ বিবেচনা: কৌশল অন্তর্নির্মিত কমিশন হিসাব (ডিফল্ট 0.1%), যা প্রকৃত ট্রেডিং পরিবেশের কাছাকাছি ফিডব্যাকের ফলাফল দেয়, যা ব্যবসায়ীদের কৌশলগত পারফরম্যান্সের মূল্যায়ন করার সময় ট্রেডিং খরচকে পুরোপুরি বিবেচনা করতে সহায়তা করে।
যদিও এই কৌশলটি ব্যাপকভাবে পরিকল্পিত, গভীর বিশ্লেষণের পরে নিম্নলিখিত সম্ভাব্য ঝুঁকিগুলি পাওয়া গেছেঃ
বিপরীত ব্যর্থতার ঝুঁকি: বাজার বিপরীত সিগন্যাল 100% নির্ভরযোগ্য নয়, এমনকি যদি একই সাথে বিপর্যয়ের রূপ এবং এলোমেলো সূচক শর্ত পূরণ করা হয় তবে বিপরীত ব্যর্থতার সম্ভাবনা রয়েছে। শক্তিশালী প্রবণতা বাজারে, বিপরীত সংকেতগুলি ক্রমাগত ক্ষতির কারণ হতে পারে। সমাধানঃ এটি উচ্চতর সময়কালের সময়কালে সামগ্রিক প্রবণতা দিকনির্দেশ নিশ্চিত করার পরামর্শ দেওয়া হয়, কেবলমাত্র বড় প্রবণতা দিকনির্দেশের দিকে বিপরীত সংকেতগুলি সন্ধান করুন।
প্যারামিটার অপ্টিমাইজেশান ফাঁদওভার-অপ্টিমাইজড প্যারামিটারগুলি কৌশলটিকে ঐতিহাসিক ডেটাতে দুর্দান্ত পারফরম্যান্সের দিকে নিয়ে যেতে পারে, তবে রিয়েল-টাইম ট্রেডিংয়ের ক্ষেত্রে এটি কার্যকর নয়। সমাধানঃ প্যারামিটারগুলির স্থায়িত্ব যাচাই করার জন্য একটি আউট-অফ-স্যাম্পল পদ্ধতি ব্যবহার করুন, যাতে অতিরিক্ত ফিট না হয়।
সিগন্যাল জ্যাম: উচ্চ অস্থিরতার বাজারে, স্বল্প সময়ের মধ্যে একাধিক লেনদেনের সংকেত উত্পন্ন হতে পারে, যার ফলে বাজারে ঘন ঘন প্রবেশ এবং বেরিয়ে যাওয়ার ফলে লেনদেনের ব্যয় বৃদ্ধি পায়। সমাধানঃ সংকেত নিশ্চিতকরণ ব্যবস্থা যুক্ত করুন, যেমন ক্রমাগত দুটি কে লাইন নিশ্চিতকরণ বা লেনদেনের ব্যবধান সীমাবদ্ধতা যুক্ত করুন।
স্থির ঝুঁকি অনুপাত: যদিও কৌশলটি গতিশীল এটিআর সেট করা স্টপ লস স্টপ ব্যবহার করে, তবে নির্দিষ্ট অনুপাত ((1.5: 1) সমস্ত বাজার পরিস্থিতিতে উপযুক্ত নাও হতে পারে। সমাধানঃ বিভিন্ন বাজার চক্র এবং ওঠানামা বৈশিষ্ট্যগুলির গতিশীলতার উপর নির্ভর করে ঝুঁকি-লাভের অনুপাতটি সামঞ্জস্য করুন।
র্যান্ডম সূচক পিছিয়ে পড়া: এলোমেলো সূচক নিজেই কিছুটা পিছিয়ে রয়েছে, যার ফলে সংকেত তৈরির সময়টি অনুপযুক্ত হতে পারে। সমাধানঃ আরও সংবেদনশীল সূচক যেমন আরএসআই বা চলমান গড়ের সাথে মিলিত ট্রেন্ড নিশ্চিতকরণের বিষয়টি বিবেচনা করুন।
একক সময় সপ্তাহের সময়সীমা: কৌশলটি কেবলমাত্র বর্তমান সময়কালের বিশ্লেষণের উপর ভিত্তি করে, মাল্টি-টাইম-সাইকেল নিশ্চিতকরণের অভাব রয়েছে। সমাধানঃ মাল্টি-টাইম-সাইকেল বিশ্লেষণের প্রবর্তন, যা উচ্চতর স্তরের এবং নিম্ন স্তরের সময় ফ্রেমগুলির সাথে সংকেত নিশ্চিতকরণের প্রয়োজন।
কোড বিশ্লেষণের উপর ভিত্তি করে, এই কৌশলটি আরও উন্নত করার মূল দিকগুলি হলঃ
মাল্টিটাইম সাইকেল বিশ্লেষণ: উচ্চতর সময়সীমার প্রবণতা নিশ্চিতকরণের সাথে সংযুক্ত, সংকেতের গুণমানকে ব্যাপকভাবে উন্নত করা যায়। উচ্চ সময়সীমার প্রবণতা বিচারক বৈশিষ্ট্য যুক্ত করার পরামর্শ দেওয়া হয়েছে, কেবলমাত্র উচ্চ স্তরের প্রবণতার দিকনির্দেশের সাথে সঙ্গতিপূর্ণ হলেই লেনদেন সম্পাদন করা হয়, বড় প্রবণতা এবং ছোট প্রবণতা সংঘর্ষের সময় ভুল সংকেত এড়ানো যায়।
র্যান্ডম সূচক প্যারামিটার অপ্টিমাইজ করুনবর্তমানে, স্থির থ্রেশহোল্ড (৮০) ব্যবহার করা সমস্ত বাজারের জন্য উপযুক্ত নাও হতে পারে। এটি একটি স্বনির্ধারিত থ্রেশহোল্ড ব্যবস্থা বাস্তবায়নের পরামর্শ দেওয়া হয়, বাজার ওভারলে বৈশিষ্ট্য অনুসারে স্বয়ংক্রিয়ভাবে ওভার-বয় ওভার-বিক্রয় থ্রেশহোল্ডের সমন্বয় করা হয়, বা তুলনামূলকভাবে দুর্বল সূচক (আরএসআই) এর সাথে ক্রস কনফার্মেশন করা হয়।
ঝুঁকি ব্যবস্থাপনার উন্নতি: ডায়নামিক রিস্ক অ্যাডজাস্টমেন্ট সিস্টেম বাস্তবায়ন করা যায়, ক্রমাগত লাভের সময় পজিশন প্রসারিত করা যায়, ক্রমাগত ক্ষতির সময় পজিশন সংক্ষিপ্ত করা যায়, বা বাজার ওঠানামা অনুযায়ী স্বয়ংক্রিয়ভাবে ঝুঁকি-লাভের অনুপাতকে সামঞ্জস্য করা যায়। মোবাইল স্টপ লস ফাংশন যুক্ত করার পরামর্শ দেওয়া হয়েছে, প্রবণতা প্রতিষ্ঠিত হওয়ার পরে ইতিমধ্যে লাভ করা হয়েছে।
মূর্তি সনাক্তকরণের দক্ষতা বাড়ানোবর্তমান প্যাটার্ন সনাক্তকরণ অ্যালগরিদমগুলি বেশ সহজ এবং আরও জটিল প্যাটার্ন সনাক্তকরণ প্রযুক্তিগুলি যেমন মেশিন লার্নিং অ্যালগরিদমগুলি আরও বেশি প্যাটার্ন প্যাকেজিং প্যাটার্নগুলি সনাক্ত করতে পারে বা লেনদেনের পরিমাণের সাথে সংযুক্ত করে সংকেত কার্যকারিতা নিশ্চিত করতে পারে।
বাজার পরিবেশের সাথে খাপ খাইয়ে নেওয়া: বাজার অবস্থা শ্রেণিবদ্ধকরণ ((হোল্ডিং / প্রবণতা / ব্রেকডাউন) যুক্ত করুন, বিভিন্ন বাজার পরিস্থিতির জন্য বিভিন্ন ট্রেডিং কৌশল প্যারামিটার ব্যবহার করুন। উচ্চ অস্থিরতার সময়কালে বিপরীতমুখী থ্রেশহোল্ডিংয়ের প্রয়োজনীয়তা বাড়ানো যেতে পারে এবং নিম্ন অস্থিরতার সময় বাজারের প্রয়োজনীয়তা হ্রাস করা যেতে পারে, কৌশল এবং বাজার অবস্থার একটি বুদ্ধিমান মিলের জন্য।
পরিস্রাবণ যুক্ত করুন
পুনরুদ্ধার অপ্টিমাইজেশন: রিটার্ন ফ্রেমওয়ার্ক উন্নত করুন, স্লাইড পয়েন্ট সিমুলেশন, বিভিন্ন বাজার শর্ত পরীক্ষা, স্ট্রেস টেস্টিং ইত্যাদির মতো বৈশিষ্ট্য যুক্ত করুন, কৌশলটির কার্যকারিতাটি পুরোপুরি মূল্যায়ন করুন। বিভিন্ন বাজার চক্রের মধ্যে কৌশলটির কার্যকারিতার পার্থক্যের তুলনা করে পর্যায়ক্রমিক রিটার্ন বাস্তবায়নের পরামর্শ দিন।
এলোমেলো সূচক এবং বিপর্যয় মডেলের উপর ভিত্তি করে একটি স্বয়ংক্রিয় বাজার বিপর্যয় ট্রেডিং কৌশল একটি সম্পূর্ণ ট্রেডিং সিস্টেম যা ক্লাসিক প্রযুক্তিগত বিশ্লেষণের ধারণাগুলি এবং আধুনিক পরিমাণগত ট্রেডিং প্রযুক্তির সাথে একত্রিত করে। ক্লাসিক বিপর্যয় বিপর্যয় মডেলগুলি সনাক্ত করে এবং এলোমেলো সূচক ব্যবহার করে প্রবণতা নিশ্চিত করার জন্য, কৌশলটি ওভার-বয় ওভার-বিক্রয় অঞ্চলে সম্ভাব্য বাজার বিপর্যয়কে ধরতে এবং এটিআর-ভিত্তিক গতিশীল ঝুঁকি ব্যবস্থাপনা ব্যবস্থার মাধ্যমে ট্রেডিং তহবিলকে সুরক্ষিত করতে সক্ষম।
কৌশলটির প্রধান বৈশিষ্ট্য হ’ল প্রচলিত পতন বিশ্লেষণকে গাণিতিক এবং পদ্ধতিগত করা, সঠিক মডেল সনাক্তকরণ এবং স্বয়ংক্রিয় লেনদেনের সম্পাদন করা, উচ্চতর কাস্টমাইজেশন বজায় রেখে। সিস্টেমের অন্তর্নির্মিত চার্ট-ট্যাগিং বৈশিষ্ট্যটি লেনদেনের প্রক্রিয়াটিকে আরও দৃশ্যমান করে তোলে, যা বিশ্লেষণ এবং পর্যবেক্ষণের জন্য সহজ করে তোলে। প্রচলিত একক প্রযুক্তিগত সূচক সিস্টেমের তুলনায় কৌশলটি একাধিক নিশ্চিতকরণ ব্যবস্থার মাধ্যমে লেনদেনের সংকেতের গুণমানকে উল্লেখযোগ্যভাবে উন্নত করে।
যাইহোক, যে কোনও ট্রেডিং কৌশলটির সীমাবদ্ধতা রয়েছে, যে কৌশলটির প্রধান চ্যালেঞ্জগুলির মধ্যে রয়েছে বিপরীত ব্যর্থতার ঝুঁকি, প্যারামিটার অপ্টিমাইজেশনের অসুবিধা, সিগন্যাল জ্যাম সমস্যা ইত্যাদি। বহু সময়কালীন বিশ্লেষণ, সূচক প্যারামিটারগুলির অপ্টিমাইজেশন এবং ঝুঁকি পরিচালনার প্রক্রিয়া উন্নত করার মতো পদক্ষেপগুলি প্রবর্তন করে কৌশলটির স্থিতিশীলতা এবং লাভজনকতা আরও বাড়িয়ে তুলতে পারে।
সামগ্রিকভাবে, এই কৌশলটি স্বয়ংক্রিয়তা এবং নমনীয়তার একটি ভারসাম্যপূর্ণ কাঠামো সরবরাহ করে যা প্রযুক্তিগত বিশ্লেষণের সাথে পরিচিত এবং ব্যবসায়ের কার্যকরকরণকে পদ্ধতিগত করতে চায় এমন বিনিয়োগকারীদের জন্য উপযুক্ত। যুক্তিসঙ্গত প্যারামিটার সমন্বয় এবং প্রয়োজনীয় অপ্টিমাইজেশনের মাধ্যমে, এই কৌশলটি কার্যকরভাবে বাজারের বিপরীতমুখী সুযোগগুলি ক্যাপচার করার একটি কার্যকর হাতিয়ার হতে পারে।
/*backtest
start: 2025-02-23 00:00:00
end: 2025-02-25 07:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradingbauhaus
//@version=6
strategy("Bauhaus Reversal Master", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)
// Yo! Let's set some user controls
atrLen = input.int(14, title="ATR Period for Risk")
profitTarget = input.float(1.5, title="Profit Target (ATR x)")
stopLoss = input.float(1.0, title="Stop Loss (ATR x)")
trendLen = input.int(14, "Trend Lookback", minval=2)
thresh = input.float(80, "Reversal Threshold", minval=0, maxval=100)
smoothPeriod = input.float(20, "Smoothing Warmup", minval=1)
// Candlestick toggles because we love options
bullStuff = "Bullish Vibes"
bearStuff = "Bearish Blues"
hammerOn = input.bool(true, "Hammer Time", group=bullStuff, inline="b1")
invHammerOn = input.bool(true, "Upside-Down Hammer", group=bullStuff, inline="b2")
bullEngulfOn = input.bool(true, "Bullish Munch", group=bullStuff, inline="b3")
tweezerBotOn = input.bool(true, "Bottom Tweezers", group=bullStuff, inline="b4")
hangManOn = input.bool(true, "Hanging Dude", group=bearStuff, inline="r1")
shootStarOn = input.bool(true, "Falling Star", group=bearStuff, inline="r2")
bearEngulfOn = input.bool(true, "Bearish Gobble", group=bearStuff, inline="r3")
tweezerTopOn = input.bool(true, "Top Tweezers", group=bearStuff, inline="r4")
// Trend magic
var float smoothK = 0.0
alphaSmooth = 2 / (smoothPeriod + 1)
kTrend = ta.stoch(close, close, close, trendLen)
smoothK := kTrend > 50 ? smoothK + (100 - smoothK) * alphaSmooth : kTrend < 50 ? smoothK + (0 - smoothK) * alphaSmooth : kTrend
bullZone = kTrend >= thresh and smoothK >= thresh
bearZone = kTrend <= (100 - thresh) and smoothK <= (100 - thresh)
// Candle math because we’re nerds
redCandle = close < open
greenCandle = close > open
candleTop = math.max(open, close)
candleBot = math.min(open, close)
fullRange = high - low
bodySize = candleTop - candleBot
upperWickP = ((high - candleTop) / fullRange) * 100
lowerWickP = ((candleBot - low) / fullRange) * 100
bodyP = (bodySize / fullRange) * 100
isDoji = math.round_to_mintick(close) == math.round_to_mintick(open)
// Bullish signals, let’s catch that bounce
hammerSig = hammerOn and (lowerWickP > (bodyP * 2) and bodyP < 50 and upperWickP < 2 and not isDoji) and bearZone
invHammerSig = invHammerOn and (upperWickP > (bodyP * 2) and bodyP < 50 and lowerWickP < 2 and not isDoji) and bearZone
bullEngulfSig = bullEngulfOn and redCandle[1] and greenCandle and (bodySize > (bodySize[1] / 2)) and (open < close[1]) and candleTop > candleTop[1] and bearZone[1]
tweezerBotSig = tweezerBotOn and (math.round_to_mintick(low) - math.round_to_mintick(low[1]) == 0) and greenCandle and redCandle[1] and bearZone[1]
// Bearish signals, time to drop
shootStarSig = shootStarOn and (upperWickP > (bodyP * 2) and bodyP < 50 and lowerWickP < 2 and not isDoji) and bullZone
hangManSig = hangManOn and (lowerWickP > (bodyP * 2) and bodyP < 50 and upperWickP < 2 and not isDoji) and bullZone
bearEngulfSig = bearEngulfOn and greenCandle[1] and redCandle and (bodySize > (bodySize[1] / 2)) and (open > close[1]) and candleBot < candleBot[1] and bullZone[1]
tweezerTopSig = tweezerTopOn and (math.round_to_mintick(high) - math.round_to_mintick(high[1]) == 0) and redCandle and greenCandle[1] and bullZone[1]
// Risk management, keep the cash safe
atrVal = ta.atr(atrLen)
longProfit = close + atrVal * profitTarget
longStop = close - atrVal * stopLoss
shortProfit = close - atrVal * profitTarget
shortStop = close + atrVal * stopLoss
// Let’s trade, baby!
if hammerSig or invHammerSig or bullEngulfSig or tweezerBotSig
strategy.entry("GoLong", strategy.long)
strategy.exit("LongExit", "GoLong", limit=longProfit, stop=longStop)
if shootStarSig or hangManSig or bearEngulfSig or tweezerTopSig
strategy.entry("GoShort", strategy.short)
strategy.exit("ShortExit", "GoShort", limit=shortProfit, stop=shortStop)
// Slap some labels on this chart
if hammerSig
label.new(bar_index, low, "HAM", color=color(na), textcolor=color.green, style=label.style_label_up, size=size.tiny)
if invHammerSig
label.new(bar_index, low, "INV", color=color(na), textcolor=color.green, style=label.style_label_up, size=size.tiny)
if bullEngulfSig
label.new(bar_index, low, "BULL", color=color(na), textcolor=color.green, style=label.style_label_up, size=size.tiny)
if tweezerBotSig
label.new(bar_index, low, "TWZB", color=color(na), textcolor=color.green, style=label.style_label_up, size=size.tiny)
if shootStarSig
label.new(bar_index, high, "STAR", color=color(na), textcolor=color.red, style=label.style_label_down, size=size.tiny)
if hangManSig
label.new(bar_index, high, "HANG", color=color(na), textcolor=color.red, style=label.style_label_down, size=size.tiny)
if bearEngulfSig
label.new(bar_index, high, "BEAR", color=color(na), textcolor=color.red, style=label.style_label_down, size=size.tiny)
if tweezerTopSig
label.new(bar_index, high, "TWZT", color=color(na), textcolor=color.red, style=label.style_label_down, size=size.tiny)