
মাল্টি-মডিউল অস্থির বাজার ট্রেডিং সিস্টেম একটি পরিমাণগত ট্রেডিং কৌশল যা অস্থিরতার জন্য বিশেষভাবে ডিজাইন করা হয়েছে, এটি একটি অত্যন্ত অভিযোজিত ট্রেডিং সিস্টেম তৈরির জন্য বোলিংগার ব্যান্ডস, তুলনামূলকভাবে দুর্বল সূচক, ম্যাকড এবং গড় দিকনির্দেশের সূচক সহ বিভিন্ন প্রযুক্তিগত সূচককে একত্রিত করে। এই কৌশলটি একটি মডিউলাইজড ডিজাইনের ধারণাকে গ্রহণ করে, যার মধ্যে দুটি এবং একে অপরের থেকে স্বতন্ত্র ট্রেডিং লজিক রয়েছেঃ গতিশীল নিশ্চিতকরণ গড় মানের রিটার্ন মডিউল এবং বোলিং পেরিমিটাল ব্যান্ড রিভার্স মডিউল, যা অস্থির বাজার পরিবেশে দামের প্রতিক্রিয়া সুযোগগুলিকে ধরতে সক্ষম, এবং বহু-অভ্যন্তর দ্বি-মুখী সিস্টেমের অপারেশনকে সমর্থন করে। সর্বাধিক বৈশিষ্ট্য হোল্ডিং ম্যানেজমেন্টের স্মার্ট অপারেশন, যা একই লজিকের অধীনে পজিশনের অনুমতি দেয় এবং একই সাথে বিভিন্ন লজিকের মধ্যে পজিশনের
কোড বিশ্লেষণ থেকে, কৌশলটির মূল নীতিটি ঝড়ের বাজারের বৈশিষ্ট্যগুলির সঠিক সনাক্তকরণ এবং বোঝার উপর ভিত্তি করে। প্রথমত, কৌশলটি অ্যাডএক্স সূচক ব্যবহার করে বাজারটি ঝড়ের অবস্থায় রয়েছে কিনা তা নির্ধারণ করে, কেবলমাত্র যখন অ্যাডএক্স মানটি সেট থ্রেশহোল্ডের নীচে থাকে তখনই ট্রেডিং সিগন্যাল বিবেচনা করে। এই নকশাটি ট্রেন্ডিং বাজারে ক্ষতির কারণ হতে পারে এমন মিথ্যা সংকেতগুলিকে কার্যকরভাবে ফিল্টার করে।
ঝড়ের অবস্থা নিশ্চিত হওয়ার পরে, কৌশলটি দুটি স্বতন্ত্র লজিক মডিউলগুলির মাধ্যমে লেনদেনের সংকেত তৈরি করেঃ
গতিশীলতা নিশ্চিতকরণ গড় মান রিটার্ন মডিউল ((লজিক 1)এই মডিউলটি দামের গতিশীলতার পরিবর্তনকে কেন্দ্র করে, যখন গতিশীল শক্তির সূচকটি ইঙ্গিত দেয় যে এটি সম্ভবত গড়ের দিকে ফিরে যেতে পারে।
বুলিন বন্ড সীমা বিপরীত মডিউল ((লজিক ২): যখন দাম বুলিং ব্যান্ডের নিচে চলে যায় এবং একটি রিবাউন্ডের লক্ষণ দেখা দেয়, তখন RSI ওভার-বই ওভার-সেলের স্তরের সাথে মিলিত হয়ে একটি বিপরীতমুখী ট্রেডিং সিগন্যাল গঠন করে। এই মডিউলটি চরম অঞ্চলে দামের বিপরীত হওয়ার সুযোগকে ধরে রাখে।
লেনদেন পরিচালনার দিক থেকে, কৌশলটি গতিশীল এটিআর স্টপ ব্যবহার করে, যা ঝুঁকি নিয়ন্ত্রণ সরবরাহ করে; এবং বিভিন্ন স্টপ-অফ সিস্টেম ডিজাইন করা হয়েছে, যার মধ্যে রয়েছে বুলিন-ব্যান্ড সেন্ট্রাল / বাইরেল স্টপ এবং আরএসআই সমান্তরাল রোলআউট। সর্বাধিক গুরুত্বপূর্ণ নকশাটি হ’ল পজিশনের স্থান এবং একই লজিকের পজিশনিং সিস্টেম, যা প্রতিটি লেনদেনের উত্সের লজিককে সঠিকভাবে ট্র্যাক করে, বিভিন্ন লজিকের মধ্যে পজিশনের স্থানকে নিশ্চিত করে, এবং একই লজিক ফ্রেমওয়ার্কের অধীনে বুদ্ধিমান পজিশনিংয়ের অনুমতি দেয়, যা ঝুঁকি এবং উপার্জনের কার্যকর ভারসাম্য বজায় রাখে।
মডিউল ডিজাইন: কৌশলটি মডিউল কাঠামো গ্রহণ করে, বিভিন্ন ট্রেডিং লজিককে পৃথক করে, সিস্টেমটিকে আরও নমনীয় করে তোলে, বাজারের অবস্থার উপর নির্ভর করে নির্দিষ্ট মডিউলগুলিকে পৃথকভাবে সক্ষম বা অক্ষম করা যায়, কৌশলটির অভিযোজনযোগ্যতা বাড়ায়।
সঠিক বাজার অবস্থা সনাক্তকরণ: এডিএক্স সূচকের মাধ্যমে অস্থির বাজারগুলিকে কার্যকরভাবে সনাক্ত করুন, ট্রেন্ডিং বাজারগুলিতে অপ্রয়োজনীয় লেনদেন এড়িয়ে চলুন এবং মিথ্যা সংকেত হ্রাস করুন।
একাধিক সংকেত নিশ্চিতকরণ ব্যবস্থা: প্রতিটি ট্রেডিং সিগন্যালের জন্য একাধিক সূচক প্রয়োজন, যেমন মূল্য অবস্থান, গতিশীলতা সূচক এবং কম্পন সূচকগুলির সমন্বিত বিচার, যা ভুল বিচার সম্ভাবনাকে ব্যাপকভাবে হ্রাস করে।
বুদ্ধিমান অবস্থান ব্যবস্থাপনাকৌশলটির মূল সুবিধা হল তার উদ্ভাবনী পজিশন ম্যানেজমেন্ট সিস্টেম, যা একই লজিকের অধীনে বুদ্ধিমান পজিশনিং এবং বিভিন্ন লজিকের মধ্যে পজিশনের পারস্পরিক প্রতিরোধকে বাস্তবায়ন করে, যা সুবিধাজনক পরিস্থিতির পূর্ণ ব্যবহার করে এবং সংকেত সংঘর্ষ এড়াতে পারে।
বহুস্তরীয় ঝুঁকি নিয়ন্ত্রণডায়নামিক এটিআর স্টপ, বিভিন্ন স্টপ কৌশল (বুলিন স্টপ, আরএসআই রিভার্স স্টপ) এবং আরএসআই রিভার্স আউট-অফ-মেকানিজম, যা কেবলমাত্র লাভের ক্ষেত্রে ঘটে, একটি ত্রিভুজীয় ঝুঁকি ব্যবস্থাপনা ব্যবস্থা গঠন করে।
সমাপ্তি মূল্য নিশ্চিতকরণ ব্যবস্থাপাস হয়েছেঃbarstate.isconfirmedকন্ট্রোল, K লাইন বন্ধ না হলে মিথ্যা সংকেত এড়ানো, লেনদেনের গুণমান উন্নত করা।
ভিজ্যুয়াল সমর্থন: কৌশলগুলি ব্রিন-ব্যান্ড চ্যানেল, এটিআর ডায়নামিক স্টপ লিনের মতো ভিজ্যুয়াল উপাদান সরবরাহ করে যা ব্যবসায়ীদের বাজারের অবস্থা এবং কৌশলগুলি কীভাবে কাজ করে তা সহজেই বুঝতে সহায়তা করে।
ভূমিকম্পে ভুল বোঝাবুঝির ঝুঁকি: এডিএক্স সূচক ব্যবহার করে অস্থির বাজার সনাক্ত করার পরেও, বাজারের অবস্থা বিচার করার ক্ষেত্রে ত্রুটি থাকতে পারে, বিশেষত অস্থিরতার পরিবর্তনের পরিবর্তনের সময়কালে, যার ফলে অনুপযুক্ত ট্রেডিং সংকেত হতে পারে। সমাধানটি হ’ল এডিএক্স থ্রেশহোল্ডটি সামঞ্জস্য করা বা অন্যান্য প্রবণতা নিশ্চিতকরণ সূচক যেমন প্রবণতা শক্তি সূচক যুক্ত করা।
প্যারামিটার অপ্টিমাইজেশান নির্ভরতাকৌশলগত কার্যকারিতা অত্যন্ত নির্ভরশীল প্যারামিটার সেটিং, যার মধ্যে রয়েছে বুলিং ব্যান্ডের সময়কাল, আরএসআই থ্রেশহোল্ড, এমএসিডি প্যারামিটার ইত্যাদি। বিভিন্ন বাজার পরিস্থিতিতে প্যারামিটারগুলির বিভিন্ন সংমিশ্রণ প্রয়োজন হতে পারে। ঐতিহাসিক তথ্যের মাধ্যমে সর্বোত্তম প্যারামিটার প্যারামিটার খুঁজে বের করার পরামর্শ দেওয়া হয় এবং প্যারামিটারগুলির কার্যকারিতা নিয়মিত পরীক্ষা করা হয়।
আমানত ঝুঁকি জমা: যদিও কৌশলটি যুক্তিসঙ্গতভাবে পজিশনিং করার অনুমতি দেয়, তবে চরম বাজার পরিস্থিতিতে পজিশনগুলি অত্যধিক কেন্দ্রীভূত হতে পারে, যা ক্ষতির মাত্রা বাড়িয়ে তোলে। এই ঝুঁকিটি সর্বোচ্চ পজিশনিং এবং একক পজিশনিং মূলধনের অনুপাতের সীমা নির্ধারণ করে নিয়ন্ত্রণ করা যেতে পারে।
ভূমিকম্পের ঝুঁকি: যখন বাজার একটি ঝড়ের ব্রেকডাউন থেকে ট্রেন্ডিং হয়, তখন কৌশলটি বড় ক্ষতির মুখোমুখি হতে পারে। এটি একটি প্রবণতা ব্রেকডাউন ফিল্টার শর্ত যুক্ত করার পরামর্শ দেওয়া হয় বা প্রবণতা নিশ্চিত হওয়ার পরে স্বয়ংক্রিয়ভাবে সমস্ত ঝড়ের লজিকাল অবস্থান বন্ধ করে দেওয়া হয়।
ইন্ডিকেটর পিছিয়ে পড়ার ঝুঁকি: প্রযুক্তিগত সূচকগুলি নিজেই কিছুটা পিছিয়ে রয়েছে, যার ফলে প্রবেশের সময় বা প্রস্থানের সময়টি অনুকূল নয়। আরও সংবেদনশীল সূচক প্রবর্তন বা বিদ্যমান সূচক প্যারামিটারগুলির অপ্টিমাইজেশনের চেষ্টা করা যেতে পারে, সংবেদনশীলতা এবং নির্ভরযোগ্যতার মধ্যে ভারসাম্য বজায় রাখা যায়।
গতিশীল প্যারামিটার স্বনির্ধারিতবর্তমান কৌশলগুলি স্থির পরামিতি ব্যবহার করে, বাজারের অস্থিরতার গতিশীলতার সাথে বুলেন ব্যান্ডের স্ট্যান্ডার্ড ডিভার্জেন্স, এটিআর গুণিতক ইত্যাদির মতো প্যারামিটারগুলিকে সামঞ্জস্য করার জন্য ওঠানামার স্ব-অনুকূলিতকরণ ব্যবস্থা প্রবর্তন করার কথা বিবেচনা করা যেতে পারে।
বাজার পরিবেশের শ্রেণিবিন্যাস বাড়ানোসহজ ঝড় / প্রবণতা বিভাজন ছাড়াও, বাজারের অবস্থা যেমন দুর্বল ঝড়, শক্তিশালী ঝড়, প্রাথমিক প্রবণতা ইত্যাদি আরও বিভাজন করতে পারে, প্রতিটি বাজারের অবস্থার জন্য সর্বোত্তম ট্রেডিং প্যারামিটার এবং যুক্তি কনফিগার করতে পারে।
তহবিল ব্যবস্থাপনা অপ্টিমাইজেশন: বর্তমান কৌশলটি ফিক্সড শতাংশ তহবিল ব্যবস্থাপনা ব্যবহার করে, এবং ঝুঁকি-সংশোধিত রিটার্নের অনুকূলীকরণের জন্য স্বল্প-অস্থিরতার পরিবেশে পজিশন বাড়ানো এবং উচ্চ-অস্থিরতার পরিবেশে পজিশন হ্রাস করার জন্য একটি অস্থিরতা-ভিত্তিক পজিশন সাইজিং পদ্ধতি প্রবর্তন করা বিবেচনা করা যেতে পারে।
সংকেত মানের শ্রেণীবিন্যাস: ট্রেডিং সিগন্যালের জন্য একটি গুণমানের রেটিং সিস্টেম স্থাপন করা যেতে পারে, বিভিন্ন কারণের উপর ভিত্তি করে সিগন্যালের রেটিং দেওয়া যায় (যেমন সূচক সামঞ্জস্য, মূল্যের অবস্থান ইত্যাদি) কেবলমাত্র উচ্চ মানের সংকেত উপস্থিত হলেই পজিশন বাড়ানো হয়, নিম্ন মানের সংকেতগুলি তহবিলের বিনিয়োগ হ্রাস করে।
স্টপস্টপ কৌশল অপ্টিমাইজেশনবর্তমান স্টপিং কৌশলগুলি তুলনামূলকভাবে সহজ এবং এটি আরও নমনীয় করার জন্য গতিশীল স্টপিং যেমন এটিআর-ভিত্তিক মোবাইল স্টপিং বা ব্রিনের ব্যান্ডউইথের সাথে সামঞ্জস্যপূর্ণ স্টপিং লক্ষ্যগুলি বিবেচনা করা যেতে পারে।
মেশিন লার্নিং: মেশিন লার্নিং অ্যালগরিদম যেমন র্যান্ডম ফরেস্ট বা সাপোর্ট ভেক্টর মেশিন প্রবর্তন করা যেতে পারে, যা ঐতিহাসিক ডেটা প্রশিক্ষণ মডেলের মাধ্যমে বাজার অবস্থা সনাক্তকরণ এবং সংকেত উত্পাদনের নির্ভুলতা উন্নত করতে পারে।
ট্রেডিং সময় ফিল্টার যোগ করুন: বিভিন্ন বাজারের সক্রিয় সময়ের বৈশিষ্ট্য অনুসারে, ট্রেডিং টাইম ফিল্টার যুক্ত করা যেতে পারে, কম তরলতা বা উচ্চ ওঠানামা সময়ে ট্রেডিং এড়ানো, স্লিপ পয়েন্ট এবং কার্যকর ঝুঁকি হ্রাস করা যায়।
মাল্টি-মডিউল ঝড়ের বাজার ব্যবসায়ের সিস্টেমটি একটি সূক্ষ্মভাবে পরিকল্পিত পরিমাণগত ব্যবসায়ের কৌশল যা বিভিন্ন ক্লাসিক প্রযুক্তিগত সূচকগুলিকে একত্রিত করে এবং মডিউল ডিজাইনের চিন্তাভাবনা ব্যবহার করে ঝড়ের বাজারে ব্যবসায়ের সুযোগকে কার্যকরভাবে ক্যাপচার করে। এর সবচেয়ে বড় উদ্ভাবনটি হ’ল একই লজিকের অধীনে বুদ্ধিমান ওভারহোল্ডিং এবং বিভিন্ন লজিকের মধ্যে পজিশনের পারস্পরিক বর্জনীয় ব্যবস্থা বাস্তবায়ন করা, লাভের সম্ভাবনা এবং ঝুঁকি নিয়ন্ত্রণের মধ্যে ভারসাম্য বজায় রাখা। কৌশলটি বিভিন্ন সময়কালের ঝড়ের বাজার পরিবেশের জন্য নিখুঁত প্যারামিটার কাস্টমাইজেশন বিকল্প এবং একাধিক স্তরের ঝুঁকি পরিচালনার ব্যবস্থা সরবরাহ করে।
যদিও প্যারামিটার নির্ভরতা এবং বাজারের অবস্থার ভুল বোঝাবুঝির মতো সম্ভাব্য ঝুঁকি রয়েছে, তবে যুক্তিসঙ্গত প্যারামিটার অপ্টিমাইজেশন, গতিশীল অভিযোজন প্রক্রিয়া এবং আরও সূক্ষ্ম বাজার পরিবেশের শ্রেণিবিন্যাসের মাধ্যমে এই ঝুঁকিগুলি কার্যকরভাবে নিয়ন্ত্রণ করা যায়। ভবিষ্যতের অপ্টিমাইজেশনের দিকটি মূলত গতিশীল প্যারামিটার সামঞ্জস্য, আরও সূক্ষ্ম তহবিল পরিচালনা এবং মেশিন লার্নিংয়ের মতো উন্নত প্রযুক্তির উপর দৃষ্টি নিবদ্ধ করে, যা কৌশলগুলির স্থিতিশীলতা এবং অভিযোজনকে আরও বাড়িয়ে তুলবে বলে আশা করা হচ্ছে।
সামগ্রিকভাবে, এটি একটি কার্যকর, কার্যকরী ঝড়ের বাজার কৌশল যা মাঝারি বা দীর্ঘমেয়াদী পরিমাণে ট্রেডিং সিস্টেমের একটি অংশ হিসাবে উপযুক্ত, বা স্বতন্ত্রভাবে ঝড়ের স্পষ্ট বাজার পর্যায়ে প্রয়োগ করা যেতে পারে। পরিমাণগত ব্যবসায়ীদের জন্য, কৌশলটি একটি ভাল প্রাথমিক কাঠামো সরবরাহ করে যা ব্যক্তিগত ট্রেডিং শৈলী এবং বাজারের বৈশিষ্ট্য অনুসারে আরও কাস্টমাইজ এবং অনুকূলিতকরণ করা যেতে পারে।
/*backtest
start: 2025-04-01 00:00:00
end: 2025-07-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
args: [["v_input_bool_1",false],["RunMode",1,358374]]
*/
strategy("Modular Oscillation Strategy", overlay=true, default_qty_value=10)
// =================================================================================
// Universal Indicator Parameters
// =================================================================================
bb_len = input.int(20, title="BB Period", group="Universal Indicators")//BB period
bb_stddev = input.float(2.0, title="BB Std Dev", group="Universal Indicators")//BB std dev multiplier
rsi_len = input.int(14, title="RSI Period", group="Universal Indicators")//RSI period
rsi_ma_len = input.int(14, title="RSI MA Period", group="Universal Indicators")//RSI MA period
macd_fast = input.int(12, title="MACD Fast", group="Universal Indicators")//MACD fast period
macd_slow = input.int(26, title="MACD Slow", group="Universal Indicators")//MACD slow period
macd_signal = input.int(9, title="MACD Signal", group="Universal Indicators")//MACD signal period
atr_len = input.int(14, title="ATR Period", group="Universal Indicators")//ATR period
adx_len = input.int(14, title="ADX Period", group="Universal Indicators")//ADX period
// =================================================================================
// Logic 1: Momentum Confirmed Mean Reversion
// =================================================================================
use_logic1 = input.bool(true, title="Enable Logic 1", group="Logic 1")//Enable Logic 1
adx_threshold_logic1 = input.float(40.0, "ADX Oscillation Threshold", group="Logic 1")//ADX threshold
atr_multiplier_logic1 = input.float(1.8, "ATR Stop Multiplier", group="Logic 1", step=0.1)//ATR stop multiplier
use_bb_exit_logic1 = input.bool(true, "BB Upper/Lower Exit", group="Logic 1")//Use BB exit
use_rsi_exit_logic1 = input.bool(true, "RSI MA Reversal Exit", group="Logic 1")//Use RSI exit
// =================================================================================
// Logic 2: Bollinger Band Extreme Reversal
// =================================================================================
use_logic2 = input.bool(true, title="Enable Logic 2", group="Logic 2")//Enable Logic 2
rsi_ob_logic2 = input.int(70, "RSI Overbought", group="Logic 2")//RSI overbought
rsi_os_logic2 = input.int(30, "RSI Oversold", group="Logic 2")//RSI oversold
adx_threshold_logic2 = input.float(30, "ADX Oscillation Threshold", group="Logic 2")//ADX threshold
atr_multiplier_logic2 = input.float(1.8, "ATR Stop Multiplier", group="Logic 2", step=0.1)//ATR stop multiplier
use_bb_exit_logic2 = input.bool(true, "BB Middle Exit", group="Logic 2")//Use BB middle exit
use_rsi_exit_logic2 = input.bool(true, "RSI MA Reversal Exit", group="Logic 2")//Use RSI exit
// =================================================================================
// Indicator Calculations
// =================================================================================
[bb_middle, bb_upper, bb_lower] = ta.bb(close, bb_len, bb_stddev)//Calculate BB lines
rsi = ta.rsi(close, rsi_len)//Calculate RSI
rsi_ma = ta.sma(rsi, rsi_ma_len)//Calculate RSI MA
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)//Calculate MACD
atr = ta.atr(atr_len)//Calculate ATR
[_, _, adx_value] = ta.dmi(adx_len, adx_len)//Calculate ADX
// Market State Judgment
is_ranging_market_logic1 = adx_value < adx_threshold_logic1//Check L1 oscillation
is_ranging_market_logic2 = adx_value < adx_threshold_logic2//Check L2 oscillation
// Price and Indicator Events
price_below_bb_middle = close < bb_middle//Price below BB middle
price_above_bb_middle = close > bb_middle//Price above BB middle
price_crosses_back_above_lower = ta.crossover(close, bb_lower)//Price cross up BB lower
price_crosses_back_below_upper = ta.crossunder(close, bb_upper)//Price cross down BB upper
macd_golden_cross = ta.crossover(macd_line, signal_line)//MACD golden cross
macd_death_cross = ta.crossunder(macd_line, signal_line)//MACD death cross
rsi_above_ma = rsi > rsi_ma//RSI above MA
rsi_below_ma = rsi < rsi_ma//RSI below MA
// Exit Events
exit_long_bb_upper_target = ta.crossover(close, bb_upper)//Price cross up BB upper
exit_short_bb_lower_target = ta.crossunder(close, bb_lower)//Price cross down BB lower
exit_long_bb_middle_target = ta.crossover(close, bb_middle)//Price cross up BB middle
exit_short_bb_middle_target = ta.crossunder(close, bb_middle)//Price cross down BB middle
exit_long_rsi_reversal = ta.crossunder(rsi, rsi_ma)//RSI cross down MA
exit_short_rsi_reversal = ta.crossover(rsi, rsi_ma)//RSI cross up MA
// =================================================================================
// Position State Management
// =================================================================================
var bool is_logic1_active = false//Init L1 state
var bool is_logic2_active = false//Init L2 state
is_logic1_active := false//Reset L1 state
is_logic2_active := false//Reset L2 state
//Check open trades for active logic
if strategy.opentrades > 0
for i = 0 to strategy.opentrades - 1
trade_id = strategy.opentrades.entry_id(i)
if str.contains(trade_id, "Logic1")
is_logic1_active := true//Mark L1 active
if str.contains(trade_id, "Logic2")
is_logic2_active := true//Mark L2 active
// =================================================================================
// Entry Conditions
// =================================================================================
// Logic 1 Entry Conditions
logic1_long_condition = use_logic1 and not use_logic2 and is_ranging_market_logic1 and macd_golden_cross and rsi_above_ma and price_below_bb_middle
//L1 long: Enable L1, disable L2, oscillating, MACD gold cross, RSI>MA, price<BB middle
logic1_short_condition = use_logic1 and not use_logic2 and is_ranging_market_logic1 and macd_death_cross and rsi_below_ma and price_above_bb_middle
//L1 short: Enable L1, disable L2, oscillating, MACD death cross, RSI<MA, price>BB middle
// Logic 2 Entry Conditions
logic2_long_condition = use_logic2 and not use_logic1 and is_ranging_market_logic2 and price_crosses_back_above_lower and rsi <= rsi_os_logic2
//L2 long: Enable L2, disable L1, oscillating, price cross up BB lower, RSI oversold
logic2_short_condition = use_logic2 and not use_logic1 and is_ranging_market_logic2 and price_crosses_back_below_upper and rsi >= rsi_ob_logic2
//L2 short: Enable L2, disable L1, oscillating, price cross down BB upper, RSI overbought
// =================================================================================
// Strategy Execution - Long Trades
// =================================================================================
// Logic 1 Long Execution
if use_logic1
if logic1_long_condition
strategy.entry("Logic1Long", strategy.long, comment="Logic1-Long")//Enter L1 long
strategy.exit("StopLoss1Long", from_entry="Logic1Long", stop=close - atr * atr_multiplier_logic1)
//Set L1 long stop loss
// Logic 1 Long BB Profit Taking
if use_bb_exit_logic1
if exit_long_bb_upper_target
strategy.close("Logic1Long", comment="Logic1-Upper Exit")//L1 upper exit
// Logic 1 Long RSI Reversal Profit Taking
if use_rsi_exit_logic1
if strategy.position_size > 0 and exit_long_rsi_reversal and price_above_bb_middle
float total_profit_L1_long = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic1Long")
total_profit_L1_long += strategy.opentrades.profit(i)
//Calculate L1 long profit
if total_profit_L1_long > 0
strategy.close("Logic1Long", comment="Logic1-Profit&RSI Reversal")
//Close L1 long on profit & RSI reversal
// Logic 2 Long Execution
if use_logic2
if logic2_long_condition
strategy.entry("Logic2Long", strategy.long, comment="Logic2-Long")//Enter L2 long
strategy.exit("StopLoss2Long", from_entry="Logic2Long", stop=close - atr * atr_multiplier_logic2)
//Set L2 long stop loss
// Logic 2 Long BB Profit Taking
if use_bb_exit_logic2
if exit_long_bb_middle_target
strategy.close("Logic2Long", comment="Logic2-Middle Exit")//L2 middle exit
// Logic 2 Long RSI Reversal Profit Taking
if use_rsi_exit_logic2
if is_logic2_active and strategy.position_size > 0 and exit_long_rsi_reversal and price_above_bb_middle
float total_profit_L2_long = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic2Long")
total_profit_L2_long += strategy.opentrades.profit(i)
//Calculate L2 long profit
if total_profit_L2_long > 0
strategy.close("Logic2Long", comment="Logic2-Profit&RSI Reversal")
//Close L2 long on profit & RSI reversal
// =================================================================================
// Strategy Execution - Short Trades
// =================================================================================
// Logic 1 Short Execution
if use_logic1
if logic1_short_condition
strategy.entry("Logic1Short", strategy.short, comment="Logic1-Short")//Enter L1 short
strategy.exit("StopLoss1Short", from_entry="Logic1Short", stop=close + atr * atr_multiplier_logic1)
//Set L1 short stop loss
// Logic 1 Short BB Profit Taking
if use_bb_exit_logic1
if exit_short_bb_lower_target
strategy.close("Logic1Short", comment="Logic1-Lower Exit")//L1 lower exit
// Logic 1 Short RSI Reversal Profit Taking
if use_rsi_exit_logic1
if strategy.position_size < 0 and exit_short_rsi_reversal and price_below_bb_middle
float total_profit_L1_short = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic1Short")
total_profit_L1_short += strategy.opentrades.profit(i)
//Calculate L1 short profit
if total_profit_L1_short > 0
strategy.close("Logic1Short", comment="Logic1-Profit&RSI Reversal")
//Close L1 short on profit & RSI reversal
// Logic 2 Short Execution
if use_logic2
if logic2_short_condition
strategy.entry("Logic2Short", strategy.short, comment="Logic2-Short")//Enter L2 short
strategy.exit("StopLoss2Short", from_entry="Logic2Short", stop=close + atr * atr_multiplier_logic2)
//Set L2 short stop loss
// Logic 2 Short BB Profit Taking
if use_bb_exit_logic2
if exit_short_bb_middle_target
strategy.close("Logic2Short", comment="Logic2-Middle Exit")//L2 middle exit
// Logic 2 Short RSI Reversal Profit Taking
if use_rsi_exit_logic2
if is_logic2_active and strategy.position_size < 0 and exit_short_rsi_reversal and price_below_bb_middle
float total_profit_L2_short = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic2Short")
total_profit_L2_short += strategy.opentrades.profit(i)
//Calculate L2 short profit
if total_profit_L2_short > 0
strategy.close("Logic2Short", comment="Logic2-Profit&RSI Reversal")
//Close L2 short on profit & RSI reversal
// =================================================================================
// Visualization
// =================================================================================
// Plotting
plot(bb_upper, title="Upper Track", color=color.new(color.teal, 50))//Plot BB upper
plot(bb_middle, title="Middle Track", color=color.new(color.gray, 70))//Plot BB middle
plot(bb_lower, title="Lower Track", color=color.new(color.teal, 50))//Plot BB lower