এই কৌশলটি দৈনিক হেইকেন আশি মোমবাতিগুলির উপর ভিত্তি করে, বিভিন্ন সময়সীমার মধ্যে গতি বিশ্লেষণের সাথে একত্রিত, গতিশীলভাবে বর্তমান মূল্যের পিছনে অন্তর্নিহিত সমর্থন নির্ধারণ এবং প্রবেশ এবং প্রস্থান পয়েন্ট সনাক্ত করতে।
পরবর্তী গতি বিশ্লেষণের ভিত্তিতে বিভিন্ন সময়সীমার মধ্যে হেইকেন আশির মোমবাতিগুলির বন্ধের মূল্য গণনা করুন।
দৈনিক এবং মাসিক গতির ওঠানামাগুলির গড় গ্রহণ করুন। এটি কিছু গোলমাল ফিল্টার করে এবং আরও স্থিতিশীল গতির বেঞ্চমার্কগুলি বের করে।
যখন বন্ধের মূল্য গতির সীমা অতিক্রম করে, তখন দীর্ঘ পজিশনগুলি মাসিক ভিত্তিতে শুরু করা হয়। যখন মূল্যটি সীমা অতিক্রম করে, পজিশনগুলি বন্ধ করা হয়।
এছাড়াও, সমস্ত অন্তর্নিহিত ডেটা হেইকেন আশি মোমবাতি থেকে উদ্ভূত, যা অন্তর্নিহিতভাবে লিঙ্কযুক্ত সময়সীমার উপর অত্যধিক নির্ভরতার সমস্যা হ্রাস করতে সহায়তা করে যা অন্যান্য ধরণের মোমবাতি কৌশলগুলিতে বিদ্যমান। সুতরাং স্থিতিশীলতা আরও ভাল।
সর্বাধিক ঝুঁকি হ'ল গতির গণনাগুলি কেবলমাত্র historicalতিহাসিক দামের উপর নির্ভর করে। যদি কোম্পানির অন্তর্নিহিত মৌলিক বা বাজার ব্যবস্থায় উল্লেখযোগ্য পরিবর্তন দেখা যায় তবে historicalতিহাসিক দামের প্রতিনিধিত্বশীলতা হ্রাস পায়, যা প্রবেশ এবং প্রস্থান সনাক্তকরণে ত্রুটির দিকে পরিচালিত করে।
সম্ভাব্য উপায়গুলির মধ্যে রয়েছে উচ্চতর ফ্রিকোয়েন্সি ডেটা এবং কোম্পানির মৌলিক বিষয়গুলির উপর রিয়েল-টাইম ফিডব্যাক অন্তর্ভুক্ত করা। অথবা বৈধতা এবং অপ্টিমাইজেশনের জন্য আরও বিষয়গত ট্রেডিং সংকেতগুলির সাথে পরিপূরক।
কৌশলটি আরও উন্নত করার কয়েকটি উপায় রয়েছেঃ
হেইকেন আশি মোমবাতিগুলিকে আরও উন্নত করুন অর্থাৎ ওজন কনফিগারেশনগুলিকে অনুকূল করুন।
আরো সময়সীমা অন্তর্ভুক্ত করুন, স্থিতিশীলতা বাড়ানোর জন্য একটি এক্সপোনেন্সিয়াল গড় স্কোরিং প্রক্রিয়া তৈরি করুন।
রিয়েল-টাইম উন্নত করার জন্য মিনিটের বারগুলির মতো উচ্চতর ফ্রিকোয়েন্সি ডেটা প্রবর্তন করুন।
লাভের সতর্কতা, এমএন্ডএ গুজবকে গতির হিসাবের মধ্যে অন্তর্ভুক্ত করুন কোম্পানির মৌলিক তথ্য যোগ করার জন্য।
দৈনিক এবং সাপ্তাহিক ভিত্তিক মুনাফা গ্রহণ এবং পুনরায় প্রবেশের যন্ত্রপাতি মাসিক এন্ট্রিগুলির উপরে যোগ করার কথা বিবেচনা করুন।
সংক্ষেপে, কৌশলটি সামগ্রিকভাবে খুব স্থিতিশীল, গতির ট্র্যাকিং কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করে। পরবর্তী পদক্ষেপটি হ'ল বাজারের সুযোগগুলি আরও ভালভাবে মূল্যায়ন করার জন্য উচ্চতর ফ্রিকোয়েন্সি এবং আরও তথ্যবহুল ডেটা অন্তর্ভুক্ত করে আরও উন্নতি করা।
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © FrancoPassuello //@version=5 strategy("Heiken Ashi ADM", overlay=true) haClose = (open + high + low + close) / 4 // prevHaOpen = line.new(na, na, na, na, width = 1) haOpen = (open[1] + close[1]) / 2 // line.set_xy1(prevHaOpen, bar_index[1], nz(haOpen[1])) // line.set_xy2(prevHaOpen, bar_index, haClose[1]) [monopen, _1monopen, _2monopen, _3monopen, _4monopen, _5monopen, _6monopen] = request.security(syminfo.tickerid, "M", [haOpen, haOpen[1], haOpen[2], haOpen[3], haOpen[4], haOpen[5], haOpen[6]] , barmerge.gaps_off, barmerge.lookahead_on) [monclose, _1monclose, _3monclose, _6monclose] = request.security(syminfo.tickerid, "M", [haClose, haClose[1], haClose[3], haClose[6]] , barmerge.gaps_off, barmerge.lookahead_on) [dayclose1, _21dayclose, _63dayclose, _126dayclose, dayclose] = request.security(syminfo.tickerid, "1D", [haClose[1], haClose[21], haClose[63], haClose[126], haClose], barmerge.gaps_off, barmerge.lookahead_on) [dayopen1, _21dayopen, _63dayopen, _126dayopen] = request.security(syminfo.tickerid, "1D", [haOpen[1], haOpen[21], haOpen[63], haOpen[126]], barmerge.gaps_off, barmerge.lookahead_on) get_rate_of_return(price1, price2) => return_ = (price1/price2 -1)*100 return_ m0 = get_rate_of_return(monclose, monopen) m1 = get_rate_of_return(_1monclose, _1monopen) m2 = get_rate_of_return(monclose, _2monopen) m3 = get_rate_of_return(_1monclose, _3monopen) m4 = get_rate_of_return(monclose, _4monopen) m5 = get_rate_of_return(monclose, _5monopen) m6 = get_rate_of_return(_1monclose, _6monopen) MS = (m1 + m3 + m6)/100 CS = (m0 + m2 + m5)/100 d1 = get_rate_of_return(dayclose1, _21dayopen) d2 = get_rate_of_return(dayclose1, _63dayopen) d3 = get_rate_of_return(dayclose1, _126dayopen) DS = (d1 + d2 + d3)/100 //Last (DAILY) lastd_s_avg1 = DS/3 lastd_Approximate1 = dayclose1*(1-lastd_s_avg1) last_approx1_d21 = lastd_Approximate1 / _21dayopen-1 last_approx1_d63 = lastd_Approximate1 / _63dayopen-1 last_approx1_d126 = lastd_Approximate1 / _126dayopen-1 lastd_s_avg2 = (last_approx1_d21 + last_approx1_d63 + last_approx1_d126) / 3 lastd_approximate2 = (dayclose1)*(1-(lastd_s_avg1 + lastd_s_avg2)) lastd_price = lastd_approximate2 //plot(lastd_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold") //Last last_s_avg1 = MS/3 last_Approximate1 = _1monclose*(1-last_s_avg1) last_approx1_m1 = last_Approximate1 / _1monopen-1 last_approx1_m3 = last_Approximate1 / _3monopen-1 last_approx1_m6 = last_Approximate1 / _6monopen-1 last_s_avg2 = (last_approx1_m1 + last_approx1_m3 + last_approx1_m6) / 3 last_approximate2 = (_1monclose)*(1-(last_s_avg1 + last_s_avg2)) last_price = last_approximate2 Scoring_price = _1monclose*(1-CS) plot(last_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold") //plot(Scoring_price,color = color.rgb(234, 0, 255, 14), title = "Last momentum threshold") //Long based on month close and being the first trade of the month. var int lastClosedMonth = -1 limit_longCondition = _1monclose > last_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth) // Long based on day close and being the first trade of the month. limit_Dlongcondition = dayclose1 > lastd_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth) // Close trade based on day close DCloseLongCondition = dayclose1<lastd_approximate2 //Old standard Trading rules longCondition = _1monclose > Scoring_price MCloseLongCondition = _1monclose<Scoring_price shortCondition = CS < 0 if (longCondition) strategy.entry("Long", strategy.long) if (strategy.position_size > 0 and MCloseLongCondition) strategy.close("Long") lastClosedMonth := month(time)