
হেইকেন অ্যাশিয়া ATR ট্র্যাকিং স্টপ লস ট্রেডিং কৌশল একটি সিস্টেমাইজড ট্রেডিং পদ্ধতি যা বিশেষভাবে আর্থিক বাজারের প্রবণতা সনাক্তকরণ এবং ঝুঁকি ব্যবস্থাপনার জন্য ডিজাইন করা হয়েছে। এই কৌশলটি হেইকেন অ্যাশিয়া (Heikin Ashi) গ্রাফিং প্রযুক্তির উপর ভিত্তি করে বাজার শব্দকে ফিল্টার করার জন্য, গড় বাস্তব তরঙ্গদৈর্ঘ্য (ATR) গতিশীল সমন্বয় ট্র্যাকিং স্টপ সিস্টেমের সাথে মিলিত হয়, ইন্ডেক্স মুভিং এভারেজ (EMA) ক্রস দ্বারা ট্রেডিং সংকেত উত্পন্ন করে। এই কৌশলটি কেবলমাত্র মাল্টিহেড ট্রেডিং সম্পাদন করে এবং অস্থিরতার সাথে সামঞ্জস্যপূর্ণ উপাদানগুলির মাধ্যমে সংকেত স্থিতিশীলতা এবং পরিচালনাকে উন্নত করে। এই কৌশলটি বিশেষত ক্রিপ্টোকারেন্সির মতো উচ্চ-অস্থির বাজারের জন্য উপযুক্ত এবং ব্যবসায়ীদের জন্যও উপযুক্ত যারা সিস্টেমাইজড ট্রেন্ডিং ট্র্যাকিং অনুসরণ করে।
এই কৌশলটির মূল নীতিটি কয়েকটি গুরুত্বপূর্ণ প্রযুক্তিগত উপাদানগুলির সমন্বয়মূলক কার্যকলাপের উপর ভিত্তি করে তৈরি করা হয়েছেঃ
হেইকেন আখিতার মানচিত্রকৌশল তিনটি ভিন্ন হেকান-আশ গণনা মোড প্রদান করেঃ ম্যানুয়াল গণনা, ট্রেডিংভিউ অন্তর্নির্মিত ফাংশন এবং নিয়মিত স্ক্র্যাপিং, যা বাজারের স্বল্পমেয়াদী গোলমাল হ্রাস করে এবং সম্ভাব্য প্রবণতার দিকনির্দেশকে তুলে ধরে। ম্যানুয়াল গণনা মোড সবচেয়ে স্বচ্ছ এবং নির্ভরযোগ্য ফলাফল সরবরাহ করে, এবং অন্তর্নির্মিত ফাংশনটি পুনরায় আঁকতে বাধা দেওয়ার জন্য নিশ্চিত ইতিহাসের স্তম্ভ ব্যবহার করে।
এটিআর ট্র্যাকিং স্টপ লস মেকানিজমগড় বাস্তব তরঙ্গদৈর্ঘ্য (এটিআর) বাজারের অস্থিরতার একটি গতিশীল পরিমাপ হিসাবে ব্যবহৃত হয়, ব্যবহারকারী-সংজ্ঞায়িত প্যারামিটারগুলির সাথে মিলিত হয় (ক্রিটিকেল ভ্যালু এবং এটিআর চক্র) স্টপ ট্র্যাকিংয়ের সংবেদনশীলতাকে ক্যালিব্রেট করে যাতে এটি বিভিন্ন বাজারের অস্থির পরিবেশে অভিযোজিত হতে পারে। এই প্রক্রিয়াটি গতিশীল প্রস্থান পয়েন্ট সরবরাহ করতে, প্রবণতা বিকাশের সময় তহবিল রক্ষা করতে এবং উপার্জন লক করতে।
EMA ক্রস সংকেত উৎপন্ন: প্রবেশ এবং প্রস্থান সংকেত হেকানআশির দাম এবং ইন্ডেক্স মুভিং এভারেজ (ইএমএ) এর মধ্যে পারস্পরিক বিক্রয়ের দ্বারা প্রাপ্ত। এই দুটি উপাদানগুলির মধ্যে ক্রস ইভেন্টগুলি ব্যবহার করা হয় উদ্দেশ্যমূলকভাবে গতিশীলতার পরিবর্তনগুলি সনাক্ত করতে এবং সম্ভাব্য বহুভুজ প্রবেশ বা প্রস্থান সংকেত প্রেরণ করতে।
কঠোর ক্ষতিপূরণ বাস্তবায়ন: কৌশলটিতে অপশনাল স্টপ ফাংশন রয়েছে যা প্রবেশের দামের শতাংশ বা নির্দিষ্ট পয়েন্টের বিচ্যুতি হিসাবে কনফিগার করা যেতে পারে। গুরুত্বপূর্ণভাবে, স্টপ-অফ কার্যকর করা হয় প্রকৃত বাজার মূল্যের উপর ভিত্তি করে, সংশ্লেষিত হেক্কেন এশিয়ালের পরিবর্তে, যা নিশ্চিত করে যে ঝুঁকি ব্যবস্থাপনা প্রকৃত বাজার তরলতা এবং মূল্যের স্তরের উপর ভিত্তি করে।
প্রতিক্রিয়া চুক্তি: নীতিটি বাস্তবসম্মত পুনরাবৃত্তির জন্য কনফিগার করা হয়েছে, স্ট্যান্ডার্ড ওএইচএলসি দামে অর্ডার কার্যকর করার জন্য fill_orders_on_standard_ohlc=true ব্যবহার করে এবং নির্দিষ্ট ইতিহাসের সময়কালের জন্য পারফরম্যান্স মূল্যায়নের জন্য কনফিগারযোগ্য তারিখ ফিল্টার অন্তর্ভুক্ত করে।
ডেটা ভিজ্যুয়ালাইজেশন: স্ক্রিপ্টটি ক্রয়/বিক্রয় সংকেত সরবরাহ করে, এটিআর স্টপ এবং স্টপ লেভেলের জন্য চার্ট ওভারল্যাপ করে এবং রিয়েল-টাইম কৌশলগত প্যারামিটার, বর্তমান পজিশনের অবস্থা, প্রবণতা দিকনির্দেশ এবং মূল মূল্য স্তরের জন্য একটি তথ্য টেবিল।
শব্দ পরিস্রাবণ ক্ষমতাহেইকেন-আশিক চার্ট প্রযুক্তি কার্যকরভাবে স্বল্পমেয়াদী বাজার শব্দকে ফিল্টার করে, ব্যবসায়ীদেরকে আরও গুরুত্বপূর্ণ বাজার প্রবণতাগুলিতে মনোনিবেশ করতে এবং মিথ্যা সংকেত ব্যাঘাত হ্রাস করতে সহায়তা করে।
গতিশীল ঝুঁকি ব্যবস্থাপনাএটিআর-ভিত্তিক ট্র্যাকিং স্টপ মেকানিজম বাজারের অস্থিরতার সাথে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে সক্ষম, যখন অস্থিরতা বৃদ্ধি পায় তখন আরও নমনীয় স্টপ প্রদান করে, যখন অস্থিরতা হ্রাস পায় তখন সুরক্ষা আরও কঠোর করে এবং রিস্ক-রিটার্ন অনুপাতকে অনুকূল করে তোলে।
বস্তুনিষ্ঠ প্রবেশ ও প্রস্থান সংকেত: ইএমএর মাধ্যমে ক্রস-উত্পাদিত সংকেতগুলি বিষয়গত বিচারকে সরিয়ে দেয়, ট্রেডিং সিদ্ধান্তগুলিকে আরও পদ্ধতিগত এবং পুনরাবৃত্তিযোগ্য করে তোলে, যা আবেগগত শৃঙ্খলা বজায় রাখতে সহায়তা করে।
বাস্তব বাজার মূল্য বাস্তবায়নকৌশলঃ ট্রেডিং এবং স্টপ-অফ করার জন্য প্রকৃত বাজার মূল্য ব্যবহার করুন (হাইকেন অ্যাশের সিন্থেটিক মূল্যের পরিবর্তে), যা প্রকৃত ট্রেডিং পরিবেশের কাছাকাছি আরও সঠিক ফলাফল প্রদান করে।
ভিজ্যুয়াল ফিডব্যাক এবং মনিটরিংইন্টিগ্রেটেড ইনফরমেশন টেবিল এবং ভিজ্যুয়াল সূচকগুলি রিয়েল-টাইম কৌশলগত অবস্থা এবং মূল তথ্য পয়েন্টগুলি সরবরাহ করে, দ্রুত মূল্যায়ন এবং পর্যবেক্ষণের জন্য এবং সিদ্ধান্ত গ্রহণের ক্ষমতা বাড়ায়।
নমনীয় প্যারামিটার কনফিগারেশনসমন্বয়যোগ্য মূল পরামিতি (সংবেদনশীলতা, এটিআর চক্র, হেকান-আশ পদ্ধতি এবং স্টপ লস সেটিং) কৌশলকে বিভিন্ন বাজার পরিস্থিতি এবং ব্যবসায়ীদের ঝুঁকি পছন্দ অনুসারে সামঞ্জস্য করতে দেয়।
শুধুমাত্র একাধিক কৌশলগত নকশা
ট্রেন্ড রিভার্সাল ঝুঁকিট্রেন্ড ট্র্যাকিং কৌশল হিসাবে, এটিআর স্টপ লস ট্রেসিংয়ের মাধ্যমে এই ধরনের ক্ষতি সম্পূর্ণরূপে প্রতিরোধ করা সম্ভব নয়।
প্যারামিটার অপ্টিমাইজেশান ফাঁদ: ওভার-অপ্টিমাইজেশন প্যারামিটারগুলি কার্ভ ফিট হতে পারে, যা কৌশলটিকে ঐতিহাসিক ডেটাতে দুর্দান্ত করে তোলে কিন্তু ভবিষ্যতের বাজারে দুর্বল করে তোলে। স্থিতিশীলতা নিশ্চিত করার জন্য একাধিক বাজার এবং সময় ফ্রেমে পরীক্ষা করার পরামর্শ দেওয়া হয়।
প্রবেশের সময় ঝুঁকিইএমএ ক্রস সিগন্যালগুলি প্রবণতাটি ইতিমধ্যে বিকশিত হওয়ার পরে দেখা দিতে পারে, যার ফলে প্রবেশের অবস্থানটি অনুকূল নয়। শক্তিশালী বাজারে, এটি উচ্চ স্তরে কেনার কারণ হতে পারে।
ঝুঁকি নিষ্ক্রিয়করণ: উচ্চ অস্থিরতার বাজারে, যদিও সামগ্রিক প্রবণতা ভাল, দামগুলি অল্প সময়ের জন্য স্টপ লস স্তর স্পর্শ করতে পারে, যার ফলে অপ্রয়োজনীয় প্রস্থান হতে পারে। বাজারের বৈশিষ্ট্য অনুসারে স্টপ লস প্যারামিটারগুলি সাবধানতার সাথে সেট করা দরকার।
একক প্রযুক্তিগত সূচক নির্ভরতা: কৌশলটি মূলত এটিআর এবং ইএমএ সূচকগুলির উপর নির্ভর করে, মৌলিক বিষয়গুলি বা অন্যান্য প্রযুক্তিগত সূচকগুলিকে বিবেচনা না করে, যা গুরুত্বপূর্ণ বাজার টার্নপয়েন্টগুলিকে মিস করতে পারে।
দীর্ঘমেয়াদী ওভারহেড বাজারের পারফরম্যান্স: দীর্ঘমেয়াদী হিজড়া বাজারে, এই কৌশলটি বারবার ভুল সংকেত তৈরি করতে পারে, যার ফলে ধারাবাহিকভাবে ছোট ক্ষতির পরিমাণ বাড়তে পারে। বাজারটি ট্রেন্ডিং অবস্থায় রয়েছে তা নিশ্চিত করার জন্য এটি ব্যবহার করার পরামর্শ দেওয়া হয়।
স্লাইড পয়েন্ট এবং বাস্তবায়ন ঝুঁকি: যদিও কৌশলটি রিটার্নিংয়ে স্লাইড পয়েন্টগুলি বিবেচনা করে, প্রকৃত লেনদেনের স্লাইড এবং সম্পাদন বিলম্বগুলি সেট করা মানের চেয়ে বেশি হতে পারে, বিশেষত কম তরলতার বাজারে।
মাল্টি টাইম ফ্রেম বিশ্লেষণ ইন্টিগ্রেশন: ট্রেডিং নিশ্চিতকরণ সংকেতগুলিকে উচ্চতর টাইম ফ্রেমের সাথে একত্রিত করার বিষয়টি বিবেচনা করুন, ট্রেডিংটি কেবলমাত্র উচ্চতর টাইম ফ্রেমের ট্রেন্ডের দিকনির্দেশের সাথে সামঞ্জস্যপূর্ণ হলেই সম্পাদন করা যায়, যা বিজয়ী হার এবং ঝুঁকি-ফেরতের অনুপাতকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।
অস্থিরতা ফিল্টার: অস্থিরতার উপর ভিত্তি করে ফিল্টার যুক্ত করা, অস্বাভাবিক উচ্চ অস্থিরতার সময় লেনদেন স্থগিত করা বা পজিশনের আকার পরিবর্তন করা, বাজারের চরম অস্থিরতার ঝুঁকি হ্রাস করতে পারে।
ডায়নামিক পজিশন ব্যবস্থাপনা: স্থির শতাংশ কনফিগারেশনের পরিবর্তে অস্থিরতা এবং বাজারের অবস্থার উপর ভিত্তি করে গতিশীল অবস্থান আকারের সমন্বয় সাধন করে, যা বিভিন্ন বাজারের অবস্থার অধীনে তহবিলের ব্যবহারের দক্ষতাকে অনুকূল করে তোলে।
মাল্টিমিটার নিশ্চিতকরণ: অন্যান্য পরিপূরক প্রযুক্তিগত সূচকগুলিকে (যেমন আপেক্ষিক দুর্বলতা সূচক আরএসআই, এলোমেলো সূচক বা এমএসিডি) দ্বিতীয় স্তরের নিশ্চিতকরণ হিসাবে সংহত করা, মিথ্যা সংকেতের হার হ্রাস করতে এবং লেনদেনের গুণমান উন্নত করতে পারে।
স্টপ লস কৌশল উন্নত করা হয়েছে: সহজ শতাংশ বা স্থির পয়েন্টের পরিবর্তে এটিআর এর গুণিতক বা সমর্থন / প্রতিরোধের স্তরের উপর ভিত্তি করে স্টপগুলি অনুসরণ করার মতো আরও জটিল স্টপ কৌশলগুলি বাস্তবায়ন করা বাজার কাঠামোর সাথে আরও ভালভাবে খাপ খাইয়ে নিতে পারে।
পরাজয়ের পরিকল্পনায় পরিবর্তন: আরও সূক্ষ্ম আংশিক মুনাফা এবং ব্যাচ আউট প্রক্রিয়া বিকাশ করা, যা প্রবণতা খাঁজ বজায় রাখার সময় আংশিক মুনাফা লক করতে পারে, সামগ্রিক রিটার্ন কার্ভকে অপ্টিমাইজ করতে পারে।
বাজার ব্যবস্থাপনার পরিচয়: বাজার ব্যবস্থার সনাক্তকরণ অ্যালগরিদম যোগ করা, বিভিন্ন বাজার অবস্থার সাথে সামঞ্জস্য রেখে কৌশলগত প্যারামিটারগুলিকে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করা (প্রবণতা, কম্পন বা বিপরীত) এবং কৌশলগুলির স্বয়ংক্রিয়তা উন্নত করা।
মেশিন লার্নিং ইন্টিগ্রেশন: মেশিন লার্নিং টেকনোলজি আবিষ্কার করুন যা প্যারামিটার নির্বাচনকে অনুকূল করে তোলে বা সর্বোত্তম প্রবেশ/প্রস্থান পয়েন্টের পূর্বাভাস দেয় যা কৌশলগত পারফরম্যান্সকে আরও উন্নত করতে পারে এবং বিষয়গত হস্তক্ষেপকে হ্রাস করতে পারে।
হাইকেন এ্যাশির এটিআর ট্র্যাকিং স্টপ লস ট্রেন্ড ট্রেডিং কৌশলটি একটি যুক্তিসঙ্গত, ঝুঁকি-নিয়ন্ত্রিত প্রবণতা ট্র্যাকিং সিস্টেম যা বিশেষত অস্থিরতার সাথে বাজারের জন্য উপযুক্ত। এই কৌশলটি হাইকেন এ্যাশির মানচিত্রের গোলমাল ফিল্টারিং ক্ষমতা, এটিআর এর গতিশীল ঝুঁকি ব্যবস্থাপনা এবং ইএমএর প্রবণতা সনাক্তকরণ বৈশিষ্ট্যগুলির সাথে মিলিত হয়ে একটি উদ্দেশ্যমূলক, পদ্ধতিগত ট্রেডিং ফ্রেমওয়ার্ক সরবরাহ করে।
এই কৌশলটির প্রধান সুবিধা হল এর স্বনির্ধারণযোগ্যতা এবং গতিশীল ঝুঁকি ব্যবস্থাপনা ক্ষমতা, যা বাজারের অস্থিরতার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে স্টপ লস স্তরকে সামঞ্জস্য করতে পারে, তহবিল রক্ষা করে এবং মুনাফা লক করে দেয়। একই সময়ে, এর কঠোর স্টপ লস বাস্তবায়ন এবং বাস্তব বাজার মূল্যের উপর ভিত্তি করে বাস্তবায়ন প্রক্রিয়াটি পুনরুদ্ধারের ফলাফলের নির্ভরযোগ্যতা এবং প্রতিলিপি নিশ্চিত করে।
যাইহোক, একটি ট্রেন্ড ট্র্যাকিং কৌশল হিসাবে, বাজারের হ্রাস বা দ্রুত বিপরীতের সময় চ্যালেঞ্জ হতে পারে। কৌশলটির স্থিতিশীলতা এবং কার্যকারিতা আরও উন্নত করা যেতে পারে যেমন মাল্টি-টাইম ফ্রেম বিশ্লেষণের সংহতকরণ, ওঠানামার হার ফিল্টার যুক্ত করা, পজিশন পরিচালনার অপ্টিমাইজেশন এবং একটি সূক্ষ্ম প্রস্থান কৌশল।
ব্যবসায়ীদের জন্য যারা ব্যবসায়ের পদ্ধতিগত পদ্ধতি তৈরি করতে চান, এই কৌশলটি একটি দৃঢ় ভিত্তি প্রদান করে, যা ব্যক্তিগত ঝুঁকি পছন্দ এবং বাজারের বৈশিষ্ট্য অনুসারে কাস্টমাইজ এবং প্রসারিত হতে পারে, যা বিভিন্ন বাজারের পরিবেশে স্থিতিশীল ঝুঁকি-সংশোধিত রিটার্ন অর্জনের সম্ভাবনা রয়েছে।
/*backtest
start: 2024-08-18 00:00:00
end: 2025-08-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"DOGE_USDT","balance":5000}]
*/
//@version=6
strategy(title="Mutanabby_AI | ATR+ | ") // Ensures realistic execution
// 📊 INPUT PARAMETERS
//=============================================================================
a = input.int(1, title="🔧 Key Value (Sensitivity)", minval=1, maxval=10,
tooltip="Lower = More signals, Higher = Fewer signals")
c = input.int(10, title="📈 ATR Period", minval=1, maxval=500,
tooltip="Period for ATR calculation")
// 🕯️ HEIKIN ASHI METHOD SELECTION
//=============================================================================
ha_method = input.string("Manual Calculation", title="🕯️ Heikin Ashi Method",
options=["Manual Calculation", "ticker.heikinashi()", "Regular Candles"],
tooltip="Manual = Most reliable, ticker.heikinashi = Good, Regular = Standard OHLC")
// 🛡️ STOP LOSS SETTINGS
//=============================================================================
use_stop_loss = input.bool(false, title="🛡️ Enable Stop Loss",
tooltip="Enable stop loss at entry price level")
stop_loss_type = input.string("Percentage", title="📊 Stop Loss Type",
options=["Percentage", "Fixed Points"],
tooltip="Choose stop loss calculation method")
stop_loss_percent = input.float(2.0, title="📉 Stop Loss %", minval=0.1, maxval=50.0, step=0.1,
tooltip="Stop loss percentage below entry price")
stop_loss_points = input.float(10.0, title="📉 Stop Loss Points", minval=0.1, step=0.1, tooltip="Stop loss in price points below entry price")
// Date condition
date_condition = true
// 🎨 VISUAL SETTINGS
//=============================================================================
show_signals = input.bool(true, title="🎯 Show Buy/Sell Signals")
show_trailing_stop = input.bool(true, title="📈 Show ATR Trailing Stop")
show_stop_loss = input.bool(true, title="🛡️ Show Stop Loss Line")
show_bar_colors = input.bool(true, title="🎨 Color Bars")
show_position_info = input.bool(true, title="📊 Show Position Info")
// 🧮 HEIKIN ASHI CALCULATIONS
//=============================================================================
// METHOD 1: MANUAL HEIKIN ASHI CALCULATION (MOST RELIABLE)
//=============================================================================
// Manual HA calculation - most transparent and reliable
var float ha_open_manual = na
ha_close_manual = (open + high + low + close) / 4
ha_open_manual := na(ha_open_manual[1]) ? (open + close) / 2 : (ha_open_manual[1] + ha_close_manual[1]) / 2
ha_high_manual = math.max(high, math.max(ha_open_manual, ha_close_manual))
ha_low_manual = math.min(low, math.min(ha_open_manual, ha_close_manual))
// METHOD 2: TICKER.HEIKINASHI() (GOOD ALTERNATIVE)
//=============================================================================
// Get Heikin Ashi data via ticker.heikinashi() - non-repainting
ha_ticker = ticker.heikinashi(syminfo.tickerid)
[ha_open_ticker, ha_high_ticker, ha_low_ticker, ha_close_ticker] = request.security(ha_ticker, timeframe.period, [open[1], high[1], low[1], close[1]], lookahead=barmerge.lookahead_on) // Use confirmed bars to prevent repainting
// METHOD 3: REGULAR CANDLES
//=============================================================================
// Regular OHLC data
ha_open_regular = open
ha_high_regular = high
ha_low_regular = low
ha_close_regular = close
// SELECT METHOD BASED ON USER INPUT
//=============================================================================
src = ha_method == "Manual Calculation" ? ha_close_manual :
ha_method == "ticker.heikinashi()" ? ha_close_ticker : ha_close_regular
source_open = ha_method == "Manual Calculation" ? ha_open_manual :
ha_method == "ticker.heikinashi()" ? ha_open_ticker : ha_open_regular
source_high = ha_method == "Manual Calculation" ? ha_high_manual :
ha_method == "ticker.heikinashi()" ? ha_high_ticker : ha_high_regular
source_low = ha_method == "Manual Calculation" ? ha_low_manual :
ha_method == "ticker.heikinashi()" ? ha_low_ticker : ha_low_regular
// 📊 ATR TRAILING STOP CALCULATION
//=============================================================================
// Calculate True Range using selected method
tr1 = source_high - source_low
tr2 = math.abs(source_high - src[1])
tr3 = math.abs(source_low - src[1])
tr = math.max(tr1, math.max(tr2, tr3))
// ATR calculation
xATR = ta.sma(tr, c)
nLoss = a * xATR
// ATR Trailing Stop logic
var float xATRTrailingStop = na
xATRTrailingStop := if src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0)
math.max(nz(xATRTrailingStop[1]), src - nLoss)
else if src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0)
math.min(nz(xATRTrailingStop[1]), src + nLoss)
else if src > nz(xATRTrailingStop[1], 0)
src - nLoss
else
src + nLoss
// Position state tracking
var int pos = na
pos := if src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0)
1
else if src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0)
-1
else
nz(pos[1], 0)
// 🎯 SIGNAL GENERATION
//=============================================================================
// EMA for crossover detection
ema_val = ta.ema(src, 1)
// Crossover conditions
above = ta.crossover(ema_val, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema_val)
// Buy and sell signals
buy_signal = src > xATRTrailingStop and above
sell_signal = src < xATRTrailingStop and below
// Trend direction
is_uptrend = src > xATRTrailingStop
is_downtrend = src < xATRTrailingStop
// 🛡️ STOP LOSS CALCULATION
//=============================================================================
var float entry_price = na
var float stop_loss_level = na
// Calculate stop loss level
calculate_stop_loss(entry_price_val) =>
if stop_loss_type == "Percentage"
entry_price_val * (1 - stop_loss_percent / 100)
else
entry_price_val - stop_loss_points
// 📈 LONG ONLY STRATEGY LOGIC
//=============================================================================
var bool in_long_position = false
// Entry condition: Buy signal when not in position
long_entry = buy_signal and date_condition and not in_long_position
// Exit conditions - CRITICAL: Use real prices for stop loss, not HA prices
atr_exit = sell_signal and date_condition and in_long_position
stop_loss_hit = use_stop_loss and in_long_position and low <= stop_loss_level // Uses real low price
// Combined exit condition
long_exit = atr_exit or stop_loss_hit
// Execute trades - Orders execute at REAL market prices
if long_entry
strategy.entry("LONG", strategy.long, comment="🚀 LONG")
in_long_position := true
entry_price := close // REAL entry price, not HA price
stop_loss_level := use_stop_loss ? calculate_stop_loss(entry_price) : na
if long_exit
exit_reason = stop_loss_hit ? "🛡️ STOP LOSS" : "💰 ATR EXIT"
strategy.close("LONG", comment=exit_reason)
in_long_position := false
entry_price := na
stop_loss_level := na
// 🎨 VISUAL ELEMENTS
//=============================================================================
// Trailing stop line color
stop_color = pos == 1 ? color.green : pos == -1 ? color.red : color.blue
// Plot ATR Trailing Stop
plot(show_trailing_stop ? xATRTrailingStop : na,
color=stop_color,
linewidth=2,
title="ATR Trailing Stop")
// Plot Stop Loss Level
plot(show_stop_loss and use_stop_loss and in_long_position ? stop_loss_level : na,
color=color.new(color.red, 0),
linewidth=2,
style=plot.style_linebr,
title="Stop Loss Level")
// Plot buy/sell signals
plotshape(show_signals and buy_signal,
title="Buy Signal",
text="BUY",
style=shape.labelup,
location=location.belowbar,
color=color.new(color.green, 0),
textcolor=color.white,
size=size.small)
plotshape(show_signals and sell_signal,
title="Sell Signal",
text="SELL",
style=shape.labeldown,
location=location.abovebar,
color=color.new(color.red, 0),
textcolor=color.white,
size=size.small)
// Plot stop loss hit signal
plotshape(show_signals and stop_loss_hit,
title="Stop Loss Hit",
text="SL",
style=shape.labeldown,
location=location.abovebar,
color=color.new(color.orange, 0),
textcolor=color.white,
size=size.small)
// Bar coloring
barcolor(show_bar_colors ? (is_uptrend ? color.new(color.green, 70) :
is_downtrend ? color.new(color.red, 70) : na) : na)
// Position status background
bgcolor(show_position_info and strategy.position_size > 0 ? color.new(color.green, 95) : show_position_info and strategy.position_size == 0 ? color.new(color.gray, 98) : na, title="Position Status")
// Entry price line - shows REAL entry price
plot(show_position_info and strategy.position_size > 0 ? strategy.position_avg_price : na,
color=color.new(color.blue, 0),
linewidth=1,
style=plot.style_linebr,
title="Entry Price")
// 📊 INFORMATION TABLE
//=============================================================================
if show_position_info and barstate.islast
var table info_table = table.new(position.top_right, 3, 11,
bgcolor=color.white,
border_width=1,
border_color=color.gray,
frame_width=1,
frame_color=color.black)
// Table headers
table.cell(info_table, 0, 0, "Mutanabby_AI | Manual HA | ATR | SL", text_color=color.white, bgcolor=color.blue, text_size=size.small)
table.cell(info_table, 1, 0, "", text_color=color.white, bgcolor=color.blue)
table.cell(info_table, 2, 0, "", text_color=color.white, bgcolor=color.blue)
// Strategy info
table.cell(info_table, 0, 1, "HA Method:", text_color=color.rgb(10, 10, 10), text_size=size.small)
method_color = ha_method == "Manual Calculation" ? color.green :
ha_method == "ticker.heikinashi()" ? color.blue : color.gray
table.cell(info_table, 1, 1, ha_method, text_color=method_color, text_size=size.small)
table.cell(info_table, 0, 2, "Key Value:", text_color=color.rgb(10, 10, 10), text_size=size.small)
table.cell(info_table, 1, 2, str.tostring(a), text_color=color.blue, text_size=size.small)
table.cell(info_table, 0, 3, "ATR Period:", text_color=color.rgb(2, 2, 2), text_size=size.small)
table.cell(info_table, 1, 3, str.tostring(c), text_color=color.blue, text_size=size.small)
table.cell(info_table, 0, 4, "Stop Loss:", text_color=color.rgb(3, 3, 3), text_size=size.small)
table.cell(info_table, 1, 4, use_stop_loss ? "ON" : "OFF",
text_color=use_stop_loss ? color.green : color.gray, text_size=size.small)
table.cell(info_table, 0, 5, "Position:", text_color=color.rgb(3, 3, 3), text_size=size.small)
table.cell(info_table, 1, 5, strategy.position_size > 0 ? "LONG" : "NONE",
text_color=strategy.position_size > 0 ? color.green : color.gray, text_size=size.small)
table.cell(info_table, 0, 6, "Trend:", text_color=color.rgb(0, 0, 0), text_size=size.small)
table.cell(info_table, 1, 6, is_uptrend ? "UP" : "DOWN",
text_color=is_uptrend ? color.green : color.red, text_size=size.small)
table.cell(info_table, 0, 7, "Current Price:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 7, str.tostring(close, "#.##"), text_color=color.black, text_size=size.small)
table.cell(info_table, 0, 8, "Trailing Stop:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 8, str.tostring(xATRTrailingStop, "#.##"), text_color=color.blue, text_size=size.small)
// Show stop loss level if enabled and in position
if use_stop_loss and in_long_position
table.cell(info_table, 0, 9, "Stop Loss:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 9, str.tostring(stop_loss_level, "#.##"), text_color=color.red, text_size=size.small)
else
table.cell(info_table, 0, 9, "Stop Loss:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 9, "N/A", text_color=color.gray, text_size=size.small)
table.cell(info_table, 0, 10, "Last Signal:", text_color=color.black, text_size=size.small)
signal_text = buy_signal ? "BUY" : sell_signal ? "SELL" : stop_loss_hit ? "STOP LOSS" : "NONE"
signal_color = buy_signal ? color.green : sell_signal ? color.red : stop_loss_hit ? color.orange : color.gray
table.cell(info_table, 1, 10, signal_text, text_color=signal_color, text_size=size.small)
// 🚨 ALERTS
//=============================================================================
// Alert conditions
alertcondition(buy_signal, title="🚀 Mutanabby_AI | ATR+ LONG Entry",
message="Mutanabby_AI | ATR+ : BUY signal at {{close}}")
alertcondition(sell_signal, title="💰 Mutanabby_AI | ATR+ LONG Exit",
message="Mutanabby_AI | ATR+ : SELL signal at {{close}}")
alertcondition(stop_loss_hit, title="🛡️ Mutanabby_AI | ATR+ Stop Loss Hit",
message="Mutanabby_AI | ATR+ : STOP LOSS hit at {{close}}")
alertcondition(buy_signal or sell_signal or stop_loss_hit, title="🔔 Mutanabby_AI | ATR+ Any Signal",
message="Mutanabby_AI| ATR+ : {{ticker}} - {{close}} - Signal: {{strategy.position_size > 0 ? 'EXIT' : 'ENTRY'}}")
//=============================================================================
// 📝 STRATEGY NOTES:
//
// 🎯 OPTIMAL IMPLEMENTATION for realistic backtesting:
// 📈 Uses manual HA calculation for transparency and reliability
// 💰 Orders execute at REAL market prices (not synthetic HA prices)
// 🛡️ Stop loss uses real market prices for accurate risk management
// 🔧 Multiple HA methods available for comparison and validation
// ⚡ Added fill_orders_on_standard_ohlc=true for extra protection
//
// 🎯 METHOD COMPARISON:
// 🥇 Manual Calculation: Most reliable, transparent, no external dependencies
// 🥈 ticker.heikinashi(): Good alternative, uses confirmed bars to prevent repainting
// 🥉 Regular Candles: Standard OHLC for comparison purposes
//
// 💡 BEST PRACTICES IMPLEMENTED:
// ✅ Always run on regular candlestick charts (not native HA charts)
// ✅ Use confirmed/historical HA values to prevent repainting
// ✅ Execute all orders at real market prices
// ✅ Stop loss based on real prices, not synthetic HA prices
// ✅ Entry price tracking uses actual fill prices
// ✅ Transparent calculation methods for verification
//
// 🚨 AVOID:
// ❌ Running strategies directly on TradingView's native HA charts
// ❌ Using current bar HA values (causes repainting)
// ❌ Stop loss based on HA prices instead of real prices
//=============================================================================