মাল্টি-পিরিয়ড রিভার্সাল পয়েন্ট সনাক্তকরণ এবং স্বয়ংক্রিয় ট্রেডিং কৌশল

MAGIC-9/13 DRP CROSSOVER CONSECUTIVE PATTERNS STOP-LOSS TAKE-PROFIT
সৃষ্টির তারিখ: 2025-06-13 13:58:08 অবশেষে সংশোধন করুন: 2025-06-13 13:58:08
অনুলিপি: 0 ক্লিকের সংখ্যা: 258
2
ফোকাস
319
অনুসারী

মাল্টি-পিরিয়ড রিভার্সাল পয়েন্ট সনাক্তকরণ এবং স্বয়ংক্রিয় ট্রেডিং কৌশল মাল্টি-পিরিয়ড রিভার্সাল পয়েন্ট সনাক্তকরণ এবং স্বয়ংক্রিয় ট্রেডিং কৌশল

ওভারভিউ

মাল্টি-সাইক্লিক রিভার্স পয়েন্ট আইডেন্টিফিকেশন অ্যান্ড অটোমেটেড ট্রেডিং স্ট্র্যাটেজি হল একটি পরিমাণগত ট্রেডিং সিস্টেম যা ম্যাজিক -৯/১৩ প্যাটার্ন এবং দিকের রিভার্স পয়েন্ট (ডিআরপি) সনাক্তকরণের উপর ভিত্তি করে তৈরি। এই কৌশলটি বাজার বিপর্যয়ের সংকেতগুলিকে ক্যাপচার করে এবং স্বয়ংক্রিয়ভাবে লেনদেন সম্পাদন করে। কৌশলটির মূলটি হ’ল traditionalতিহ্যবাহী প্রযুক্তিগত বিশ্লেষণের ধারণাগুলিকে আধুনিক পরিমাণগত পদ্ধতির সাথে একত্রিত করা, যাতে ধারাবাহিক মূল্যের আচরণের বিশ্লেষণের মাধ্যমে সম্ভাব্য বাজার বিপর্যয় চিহ্নিত করা যায়, যাতে দামের বিপর্যয়ের শুরুতে বাজারে প্রবেশ করা যায়। সিস্টেমটি স্বয়ংক্রিয় স্টপ লস এবং স্টপ ফাংশনকে সংহত করে যা ঝুঁকি নিয়ন্ত্রণ করে এবং মুনাফা লক করে, একই সাথে ভিজ্যুয়াল সূচকগুলির মাধ্যমে (যেমন লেবেল এবং পিকের রঙের পরিবর্তন) একটি স্বজ্ঞাত ট্রেডিং

কৌশল নীতি

এই কৌশলটির মূল নীতি দুটি প্রধান প্রযুক্তিগত সূচকের উপর ভিত্তি করেঃ ম্যাজিক-৯/১৩ মোড এবং দিকনির্দেশনা বিপরীত পয়েন্ট (ডিআরপি) ।

  1. ম্যাজিক-৯/১৩ প্যাটার্ন সনাক্তকরণ:

    • সিস্টেমটি 9 টি ধারাবাহিক চক্রের দামের আচরণ পর্যবেক্ষণ করে এবং সামঞ্জস্যপূর্ণ মূল্যের নিদর্শনগুলি সন্ধান করে
    • উচ্চ পয়েন্ট প্যাটার্ন ((high_9)): যখন দামটি তার পূর্ববর্তী 4 টি চক্রের সমাপ্তির দামের তুলনায় 9 টি ক্রমাগত উচ্চতর হয়, তবে 10 তমটি পূরণ করে না
    • নিম্ন পয়েন্ট প্যাটার্ন ((low_9)): যখন দামটি তার পূর্ববর্তী 4 টি চক্রের সমাপ্তির দামের চেয়ে 9 টি ক্রমাগত কম হয়, তবে 10 তমটি পূরণ করে না
  2. দিশা পাল্টা বিন্দু (DRP) গণনা:

    • প্রদত্ত দৈর্ঘ্যের মধ্যে দাম এবং lookback দৈর্ঘ্যের আগে দামের সম্পর্ক বিশ্লেষণ করে
    • আপ-কাউন্ট গণনা করুন (up_count): বর্তমান দামের চেয়ে পুনরাবৃত্তির সময়কালের দাম বেশি
    • ডাউন কাউন্ট গণনা করুনঃ বর্তমান দামের চেয়ে কম দামের সংখ্যা
    • যখন down_count = সেট করা দৈর্ঘ্য, তখন up_turn_point হিসাবে চিহ্নিত করুন (মূল্য 1)
    • যখন up_count সেট দৈর্ঘ্যের সমান হয়, তখন পতনের বিপরীত বিন্দু হিসাবে চিহ্নিত করা হয়
  3. ট্রেডিং সংকেত উৎপন্ন:

    • ক্রয় সংকেতঃ যখন low_9 প্যাটার্ন সনাক্ত করা হয় এবং দিকের বিপরীত পয়েন্টটি নেতিবাচক বা শূন্য মান থেকে ঊর্ধ্বমুখী হয় তখন এটি ট্রিগার হয়
    • বিক্রয় সংকেতঃ high_9 প্যাটার্ন সনাক্ত করা হলে এবং দিকনির্দেশের বিপরীত পয়েন্টটি ধনাত্মক বা শূন্য থেকে নীচে অতিক্রম করলে ট্রিগার করা হয়
  4. ঝুঁকি ব্যবস্থাপনা:

    • স্বয়ংক্রিয় স্টপ লসঃ 10 পয়েন্টের স্টপ লস সেট করা হয়েছে, যা খোলা দামের বিপরীত দিকে
    • স্বয়ংক্রিয় স্টপঃ 10 পয়েন্টের স্টপ সেট করুন, যা খোলা দামের বিপরীত দিকে
  5. সহায়ক ফাংশন:

    • get_first_non_na_value: একটি ফাংশন যা একটি NA মান নয়
    • count_consecutive_occurrences: ক্রমাগত শর্তের সংখ্যা গণনা করুন
    • check_condition_occurrence: প্রদত্ত সময়ের মধ্যে শর্তটি ঘটেছে কিনা তা পরীক্ষা করুন
    • filter_occurrences: পুনরাবৃত্তির ভিত্তিতে ফিল্টার করা হয়েছে

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

  1. বাজার পাল্টাবে: Magic-913 মোড এবং দিকনির্দেশের বিপরীতমুখী পয়েন্টের সংমিশ্রণের মাধ্যমে, বাজারের বিপরীতমুখী হওয়ার প্রাথমিক পর্যায়ে সংকেতগুলি ধরতে সক্ষম, যা ভাল প্রবেশের সময় সরবরাহ করে।

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

  3. স্বয়ংক্রিয় ঝুঁকি নিয়ন্ত্রণ ইন্টিগ্রেটেড স্টপ লস এবং স্টপ-অফ ফাংশন, যা ম্যানুয়াল হস্তক্ষেপ ছাড়াই একক লেনদেনের ঝুঁকি নিয়ন্ত্রণ করে এবং আবেগগত লেনদেনের সিদ্ধান্তকে বাধা দেয়

  4. ভিজ্যুয়াল ট্রেডিং সিগন্যালট্যাগ এবং ফ্রেমওয়ার্কের রঙ পরিবর্তনের মাধ্যমে, ট্রেডিং সিগন্যালগুলিকে স্বজ্ঞাতভাবে প্রদর্শন করে, যা ব্যবসায়ীদের সম্ভাব্য ট্রেডিং সুযোগগুলি দ্রুত সনাক্ত করতে সহায়তা করে।

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

  6. ডেটা প্রসেসিং স্থিতিশীলতা: NA-র মানের সাথে মোকাবিলা করার জন্য একটি প্রক্রিয়া অন্তর্ভুক্ত করা হয়েছে, যা বিভিন্ন ডেটা অবস্থার অধীনে কৌশলটির স্থায়িত্বকে উন্নত করে।

  7. চক্রের অভিযোজনযোগ্যতা: কৌশলটি বিভিন্ন সময়কালের চার্টগুলিতে প্রয়োগ করা যেতে পারে, যা মিনিটের চার্ট থেকে দিনের চার্ট পর্যন্ত ব্যবহার করা যেতে পারে, ট্রেডিংয়ের সময় ফ্রেমের নমনীয় পছন্দ সরবরাহ করে।

কৌশলগত ঝুঁকি

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

  2. বাজারের ঝুঁকি: উচ্চ অস্থিরতার বাজারে, স্টপ লস 10 পয়েন্ট হিসাবে স্থির করা খুব ছোট হতে পারে, যার ফলে এটি ঘন ঘন ট্রিগার হয়; এবং নিম্ন অস্থিরতার বাজারে, এই সেটিংটি খুব বড় হতে পারে। সমাধানঃ স্টপ লস স্থির পয়েন্টের পরিবর্তে বাজারের অস্থিরতার উপর ভিত্তি করে গতিশীল মান (যেমন এটিআর) সেট করুন।

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

  4. স্লাইড পয়েন্ট এবং তরলতা ঝুঁকি: কম তরল বাজারে, এক্সিকিউশন মূল্য সংকেত মূল্য থেকে উল্লেখযোগ্য পার্থক্য থাকতে পারে। সমাধানঃ তরলতা ফিল্টার শর্ত বাড়ানো, বা অর্ডার কার্যকর করার সময় স্লাইডিং ফ্যাক্টর বিবেচনা করা।

  5. অতিরিক্ত ফিট হওয়ার ঝুঁকিকৌশলটি একাধিক শর্ত এবং প্যারামিটার ব্যবহার করে, যা ঐতিহাসিক তথ্যের সাথে অতিরিক্ত মিলিত হওয়ার ঝুঁকিতে থাকতে পারে। সমাধানঃ কৌশলটির স্থায়িত্ব যাচাই করতে আউট-অফ-স্যাম্পল টেস্টিং এবং ফরোয়ার্ড টেস্টিং ব্যবহার করুন।

  6. ধারাবাহিক সংকেত জমা: কিছু বাজারের অবস্থার অধীনে, একই দিকের একাধিক সংকেত ক্রমাগত উত্পাদিত হতে পারে, যার ফলে অতিরিক্ত পজিশনিং হয়। সমাধানঃ সংকেত ফিল্টারিং ব্যবস্থা বাস্তবায়ন করুন, স্বল্প সময়ের মধ্যে একই দিকের সংকেত কার্যকর করার সংখ্যা সীমাবদ্ধ করুন।

  7. স্থির স্টপ লস সীমাবদ্ধতাস্থির পয়েন্টের স্টপ লস সব বাজার পরিবেশে উপযুক্ত নাও হতে পারে, যার ফলে লাভজনক ট্রেডিং খুব তাড়াতাড়ি শেষ হতে পারে বা খুব দেরিতে স্টপ লস হতে পারে। সমাধানঃ বাজার ওঠানামা ভিত্তিক গতিশীল স্টপ লস প্রক্রিয়া বাস্তবায়ন, বা স্টপ লস ট্র্যাকিং কৌশল গ্রহণ করুন।

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

  1. গতিশীল প্যারামিটার সমন্বয়:

    • length_input এবং lookback_length প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে বাজারের অস্থিরতার উপর ভিত্তি করে সামঞ্জস্য করার প্রক্রিয়া
    • নীতিঃ বিভিন্ন অস্থিরতার পরিবেশে বিভিন্ন সংবেদনশীলতার প্যারামিটার প্রয়োজন, গতিশীল সামঞ্জস্যের ফলে কৌশলটি আরও অভিযোজিত হতে পারে
    • বাস্তবায়ন পদ্ধতিঃ ATR মানের পরামিতিগুলিকে সংশোধন করার জন্য একটি সূত্র যা সর্বশেষ N চক্রের উপর ভিত্তি করে ডিজাইন করা যেতে পারে
  2. ট্রেন্ড ফিল্টার যোগ করুন:

    • ইন্টিগ্রেটেড ট্রেন্ড আইডেন্টিফিকেশন ইন্ডিকেটর (যেমন মুভিং এভারেজ, এডিএক্স ইত্যাদি), ট্রেডিং শুধুমাত্র ট্রেন্ডের দিকনির্দেশের সাথে সামঞ্জস্যপূর্ণ হলেই করা হয়
    • নীতিঃ প্রবণতা ফিল্টারিং ত্রুটিপূর্ণ সংকেত কমাতে পারে
    • বাস্তবায়ন পদ্ধতিঃ প্রবণতার দিকনির্দেশ হিসাবে দীর্ঘমেয়াদী চলমান গড় যুক্ত করুন, কেবলমাত্র দাম গড়ের উপরে থাকলে লভ্যাংশ করুন, গড়ের নীচে থাকলে লোভনীয় করুন
  3. স্টপ-লস এবং স্টপ-প্রফিট মেকানিজম অপ্টিমাইজ করুন:

    • স্থির পয়েন্ট সেটিং পরিবর্তনশীলতা ভিত্তিক গতিশীল স্টপস্টপ দ্বারা প্রতিস্থাপিত
    • নীতিঃ বাজারের অস্থিরতা বিভিন্ন সময়ে ব্যাপকভাবে পরিবর্তিত হয় এবং নির্দিষ্ট পয়েন্টগুলি সমস্ত বাজারের পরিস্থিতিতে মানিয়ে নেওয়া যায় না
    • বাস্তবায়ন পদ্ধতিঃ এটিআর এর গুণিতক ব্যবহার করে স্টপ লস স্টপ পয়েন্ট সেট করুন, যেমন 1.5x এটিআর স্টপ হিসাবে, 3x এটিআর স্টপ হিসাবে
  4. লেনদেনের পরিসরের পরিসরে বৃদ্ধি:

    • লেনদেনের ভলিউম ফ্যাক্টর বিবেচনা করে, কেবলমাত্র লেনদেনের ভলিউম নিশ্চিত হলে সংকেত কার্যকর করা হয়
    • নীতিঃ লেনদেনের পরিমাণ মূল্য পরিবর্তনের কার্যকারিতার একটি গুরুত্বপূর্ণ নিশ্চিতকরণ কারণ, যা মিথ্যা ব্রেকআউট হ্রাস করতে পারে
    • বাস্তবায়ন পদ্ধতিঃ সিগন্যালের গড় গড় গড়ের চেয়ে বেশি ট্রেডিং হয়েছে কিনা তা পরীক্ষা করুন
  5. সময় ফিল্টার:

    • নির্দিষ্ট সময়ে লেনদেন এড়িয়ে চলুন (যেমন, বাজার খোলার সময়, বাজার বন্ধ হওয়ার সময় বা গুরুত্বপূর্ণ অর্থনৈতিক তথ্য প্রকাশের আগে বা পরে)
    • নীতিঃ কিছু সময়ের মধ্যে অস্বাভাবিক ও অস্থিরতা বা অনিশ্চিত দিকনির্দেশনা, ট্রেডিং ঝুঁকি বেশি
    • বাস্তবায়ন পদ্ধতিঃ সময়সীমা বৃদ্ধি করা, উচ্চ ঝুঁকিপূর্ণ সময়ে নতুন সংকেত তৈরি করা নিষিদ্ধ করা
  6. পজিশন ম্যানেজমেন্ট যোগ করা হয়েছে:

    • পজিশনের আকার বাজারের অস্থিরতা এবং অ্যাকাউন্টের ঝুঁকি স্তরের উপর ভিত্তি করে গতিশীলভাবে সংশোধন করা হয়
    • নীতিঃ ফিক্সড পজিশনগুলি বিভিন্ন ঝুঁকিপূর্ণ পরিবেশের সাথে খাপ খাইয়ে নিতে পারে না, ডায়নামিক পজিশনগুলি প্রত্যাশিত লাভ বজায় রেখে ঝুঁকি নিয়ন্ত্রণ করতে পারে
    • বাস্তবায়ন পদ্ধতিঃ সর্বাধিক প্রত্যাহারের শতাংশের উপর ভিত্তি করে অবস্থানের গণনা সূত্র ডিজাইন করা
  7. সিগন্যাল শক্তির স্কোরিং:

    • প্রতিটি ট্রেডিং সিগন্যালের জন্য একটি স্ট্রেনথ স্কোর বরাদ্দ করা হয়, কেবলমাত্র থ্রেশহোল্ডের উপরে সিগন্যালগুলি কার্যকর করা হয়
    • নীতিঃ সমস্ত যোগ্যতাসম্পন্ন সংকেত একই মানের নয়, একটি রেটিং সিস্টেম উচ্চ মানের সংকেতগুলিকে বাছাই করতে পারে
    • বাস্তবায়ন পদ্ধতিঃ মূল্য এবং গড় রেখার দূরত্ব, ম্যাজিক মোডের স্বচ্ছতা, বিপরীতমুখী শক্তির মতো বিষয়গুলির উপর ভিত্তি করে একটি সমন্বিত স্কোর গণনা করা হয়
  8. প্রাসঙ্গিক বাজার স্বীকৃতি যোগ করুন:

    • প্রাসঙ্গিক বাজার বা সূচক ডেটা যুক্ত করুন অতিরিক্ত নিশ্চিতকরণ হিসাবে
    • নীতিঃ সংশ্লিষ্ট বাজারের সামঞ্জস্য নিশ্চিতকরণ সংকেতের নির্ভরযোগ্যতা বাড়ায়
    • বাস্তবায়ন পদ্ধতিঃ প্রধান সূচক বা সংশ্লিষ্ট বাজারগুলিও অনুরূপ বিপরীতমুখী লক্ষণ দেখায় কিনা তা পরীক্ষা করা

সারসংক্ষেপ

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

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

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

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

//@version=5
strategy('L3 Magic-9/13 Strategy', overlay=true, max_bars_back=4000, max_labels_count=500)

// 输入参数
length_input = input.int(title='Length', defval=9, minval=1)
lookback_length = input.int(title='Lookback Length', defval=4, minval=1)

// 获取第一个非 NA 值的函数
get_first_non_na_value(values, length) =>
    result = float(na)
    if length >= 1
        for i = 0 to length - 1
            if na(result) or not na(values[i])
                result := values[i]
    result

// 计算连续条件出现次数的函数
count_consecutive_occurrences(condition, length) =>
    count = 0
    for i = 1 to length
        if condition[i - 1]
            count += 1
    count

// 检查条件是否在给定周期内出现的函数
check_condition_occurrence(condition, length) =>
    occurrence = count_consecutive_occurrences(condition, length) != 0 ? 1 : 0
    occurrence

// 基于回溯周期过滤出现次数的函数
filter_occurrences(condition, lookback_period) =>
    output = 0.0
    temp = 0
    for i = lookback_period to 0
        if temp > 0
            output := 0.0
            temp := temp[1] - 1
        else
            if not condition[i]
                output := 0.0
            else
                output := 1.0
                temp := lookback_period + 1
    output_bool = output == 1 ? true : false
    output_bool

// Magic-9/13 逻辑
high_9 = count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 10) == 9
low_9 = count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 10) == 9

// 计算方向反转点
up_count = 0
down_count = 0
for i = 0 to length_input - 1
    up_count += (nz(close[i]) > nz(close[i + lookback_length]) ? 1 : 0)
    down_count += (nz(close[i]) < nz(close[i + lookback_length]) ? 1 : 0)

directional_reversal_point = down_count == length_input ? 1 : up_count == length_input ? -1 : 0

// 定义交易信号
buy_signal = check_condition_occurrence(low_9, 2) and ta.crossover(directional_reversal_point, 0)
sell_signal = check_condition_occurrence(high_9, 2) and ta.crossunder(directional_reversal_point, 0)

// 执行交易
if (buy_signal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit", "Buy", limit=close + 10 * syminfo.pointvalue, stop=close - 10 * syminfo.pointvalue)

if (sell_signal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit", "Sell", limit=close - 10 * syminfo.pointvalue, stop=close + 10 * syminfo.pointvalue)

// 绘制标签
labels = buy_signal ? label.new(bar_index, low, 'B', color=color.new(color.red, 40), textcolor=color.white, style=label.style_label_up, yloc=yloc.price, size=size.small) : sell_signal ? label.new(bar_index, high, 'S', color=color.new(color.lime, 40), textcolor=color.white, style=label.style_label_down, yloc=yloc.price, size=size.small) : na

// 绘制蜡烛图颜色
signal = directional_reversal_point > 0 or up_count > down_count ? 1 : directional_reversal_point < 0 or down_count > up_count ? -1 : 0
drp_color = signal > 0 ? color.green : signal < 0 ? color.red : color.black
barcolor(drp_color)