এই কৌশলটি জুরিক মুভিং এভারেজ (জেএমএ) এবং আরএসআই সূচক অতিক্রম করে ট্রেডিং সংকেত তৈরি করে। এটি দীর্ঘ হয় যখন জেএমএ আরএসআইয়ের উপরে অতিক্রম করে এবং নীচে অতিক্রম করার সময় শর্ট হয়। কৌশলটি দুটি সূচককে একত্রিত করে মিথ্যা সংকেতগুলি ফিল্টার করার চেষ্টা করে এবং প্রবণতা আরও স্পষ্ট হলে বাণিজ্য করে।
কৌশলটি মূলত দুই ধরনের সূচক ব্যবহার করেঃ
জেএমএ সূচকঃ ক্ষমতা গুণক ব্যবহার করে একটি মসৃণ চলমান গড়, কম বিলম্ব এবং দামের পরিবর্তনগুলি ক্যাপচার করতে দ্রুত।
RSI ইন্ডিকেটরঃ একটি সাধারণ শক্তি সূচক যা ক্রয়/বিক্রয় গতি প্রতিফলিত করে।
যখন জেএমএ আরএসআই এর উপরে অতিক্রম করে, এটি দীর্ঘমেয়াদী প্রবণতার তুলনায় শক্তিশালী স্বল্পমেয়াদী আপট্রেন্ডের ইঙ্গিত দেয় এবং ক্রয় সংকেত তৈরি করে। যখন এটি আরএসআই এর নীচে অতিক্রম করে, এটি বিক্রয় সংকেত প্রেরণ করে।
সিগন্যাল পাওয়ার পর, কৌশলটি সংশ্লিষ্ট দিকের ট্রেডে প্রবেশ করে। যখন মূল্য পূর্বনির্ধারিত মুনাফা অনুপাত বা সূচকগুলি বিপরীত দিক অতিক্রম করে তখন প্রস্থান করে।
বিভিন্ন সময়ের জন্য সামঞ্জস্যযোগ্য JMA পরামিতি।
আরএসআই ভুয়া পলাতকতা ফিল্টার করে।
ডাবল ইন্ডিকেটর সংমিশ্রণ মিথ্যা সংকেত হ্রাস করে।
বিল্ট ইন স্টপ লস কন্ট্রোলস লস।
লাভের লক্ষ্যমাত্রার জন্য কাস্টমাইজযোগ্য মুনাফা অনুপাত।
ডাবল ইন্ডিকেটর কম্বো খুব কম সংকেত উৎপন্ন করতে পারে. সংবেদনশীলতার জন্য পরামিতি tweak করতে পারেন.
জেএমএ এখনও বিলম্বিত, হয়তো পালা পয়েন্ট মিস করতে পারে।
ভুল স্টপ লস প্লেসমেন্ট আরও ক্ষতির জন্য আঘাত হতে পারে। উপযুক্ত প্লেসমেন্টের জন্য ব্যাকটেস্ট করা উচিত।
সূচকগুলির উপর অত্যধিক নির্ভরতা মিথ্যা সংকেত তৈরি করতে পারে। ভলিউম বা অস্থিরতা ফিল্টার যোগ করতে পারে।
সর্বোত্তম সেটিংস খুঁজে পেতে JMA পরামিতি পরীক্ষা করুন।
আরও ভাল পারফরম্যান্সের জন্য বিভিন্ন আরএসআই প্যারামিটার চেষ্টা করুন।
অ্যাডাপ্টিভ স্টপের জন্য ট্রেলিং স্টপ মেকানিজম যোগ করুন।
এন্ট্রি পজিশনের সাইজিং অপ্টিমাইজ করুন যেমন জয়ী ট্রেডের জন্য যোগ করা।
কেডি, এমএসিডি এর মতো অতিরিক্ত ফিল্টার অনুসন্ধান করুন।
এই কৌশলটি জেএমএ এবং আরএসআই ক্রসওভারের সাথে প্রবণতা অনুসরণ করতে সক্ষম করে এবং স্টপগুলির মাধ্যমে ঝুঁকি সীমাবদ্ধ করে। তবে মিথ্যা সংকেতগুলি এখনও সম্ভাব্য, যা পরামিতি এবং ফিল্টারগুলিতে আরও অপ্টিমাইজেশনের প্রয়োজন। স্টপ লসকেও ব্যাকটেস্ট বৈধতার প্রয়োজন। এটি উন্নতির জন্য জায়গা সহ দ্বৈত সূচক ক্রসিং সিস্টেমের জন্য একটি প্রাথমিক কাঠামো সরবরাহ করে।
/*backtest start: 2023-01-01 00:00:00 end: 2023-03-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Stratégie marche le mieux sur du 2 jours strategy("JMA(7,50,RSI) crossing RSI(14,close)", overlay=false, currency=currency.EUR, default_qty_type=strategy.cash, default_qty_value=5000) // Strategy Tester Start Time sYear = input(2019, title = "Start Year") sMonth = input(06, title = "Start Month", minval = 01, maxval = 12) sDay = input(01, title = "Start Day", minval = 01, maxval = 31) sHour = input(00, title = "Start Hour", minval = 00, maxval = 23) sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59) startTime = true // Strategy Tester End Time eYear = input(2019, title = "End Year") eMonth = input(12, title = "End Month", minval = 01, maxval = 12) eDay = input(01, title = "End Day", minval = 01, maxval = 31) eHour = input(00, title = "End Hour", minval = 00, maxval = 23) eMinute = input(00, title = "End Minute", minval = 00, maxval = 59) endTime = true // === RSI === src = close, len = input(14, minval=1, title="Length") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(rsi, color=color.purple) band1 = hline(70) band0 = hline(30) // === JMA === _length = input(7, title="Length") _phase = input(50, title="Phase") _power = input(2, title="Power") highlightMovements = input(true, title="Highlight Movements ?") // srcJMA = input(rsi, title="Source") srcJMA = rsi phaseRatio = _phase < -100 ? 0.5 : _phase > 100 ? 2.5 : _phase / 100 + 1.5 beta = 0.45 * (_length - 1) / (0.45 * (_length - 1) + 2) alpha = pow(beta, _power) jma = 0.0 e0 = 0.0 e0 := (1 - alpha) * srcJMA + alpha * nz(e0[1]) e1 = 0.0 e1 := (srcJMA - e0) * (1 - beta) + beta * nz(e1[1]) e2 = 0.0 e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * nz(e2[1]) jma := e2 + nz(jma[1]) // === End of JMA def === jmaColor = highlightMovements ? (jma > jma[1] ? color.green : color.red) : #6d1e7f plot(jma, title="JMA switch", linewidth=2, color=jmaColor, transp=0) // === Inputs === // risk management useStop = input(true, title = "Use Initial Stop Loss?") goLong() => crossover(rsi, jma) killLong() => crossunder(rsi, jma) // ======= DEBUGGGGGGGG ============ long_price = 0.0 short_price = 0.0 if(startTime and endTime) if(goLong()) long_price := close strategy.entry("Buy", strategy.long, when = goLong()) strategy.close("Buy", when = killLong() and close > long_price) // Shorting if using goShort() => killLong() killShort() => goLong() if(startTime and endTime) if(goShort()) short_price := close strategy.entry("Sell", strategy.short, when = goShort() and close < short_price) strategy.close("Sell", when = killShort()) // ========================= if (useStop) strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08) strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.08)