এই কৌশলটি একটি ক্রস-বিক্রয় সংকেত উত্পন্ন করে যা জুরিকের চলমান গড় ((জেএমএ) এবং আরএসআই সূচককে অতিক্রম করে। এটি জেএমএ-তে আরএসআই অতিক্রম করার সময় বেশি এবং জেএমএ-তে আরএসআই অতিক্রম করার সময় খালি করে। এই কৌশলটি দুটি সূচকের সমন্বয় ব্যবহার করে জাল সংকেতগুলি ফিল্টার করার চেষ্টা করে এবং ট্রেড করার সময় ট্রেন্ডটি আরও স্পষ্ট হয়।
এই কৌশলটি মূলত দুটি সূচকের সমন্বয়ে তৈরি করা হয়েছেঃ
জেএমএ সূচকঃ একটি নমনীয় চলমান গড় যা কম পিছিয়ে থাকে এবং দামের পরিবর্তনকে আরও দ্রুত ধরতে পারে।
আরএসআই সূচকঃ বাজারের ক্রয়-বিক্রয় শক্তির প্রতিফলন করে একটি সাধারণ শক্তিশালী-দুর্বল সূচক।
যখন JMA RSI অতিক্রম করে, এটি নির্দেশ করে যে স্বল্পমেয়াদী মূল্য বৃদ্ধি প্রবণতা দীর্ঘমেয়াদী প্রবণতার চেয়ে শক্তিশালী, একটি ক্রয় সংকেত উত্পন্ন করে; যখন JMA RSI অতিক্রম করে, এটি একটি খালি সংকেত নির্দেশ করে।
ক্রস সিগন্যালের পরে, ট্রেডটি বিপরীত দিকের অবস্থানের জন্য খোলা হয়। সমতল অবস্থানের শর্তটি হল যে দামটি নির্দিষ্ট লক্ষ্যমাত্রার অনুপাতের চেয়ে বেশি বা সূচকটি আবার ক্রস বিপরীত।
JMA সূচক প্যারামিটারগুলি সামঞ্জস্যযোগ্য, যা বিভিন্ন চক্রের জন্য অনুকূলিতকরণ করতে পারে।
RSI সূচকটি মিথ্যা ব্রেকিং ফিল্টার করতে পারে।
ডাবল ইন্ডিকেটর সমন্বয় ব্যবহার করে ভুয়া সংকেত কমানো যায়।
বিল্ট-ইন স্টপ লস ম্যানেজমেন্ট, যা ক্ষতির পরিমাণ সীমিত করতে পারে।
কাস্টমাইজড মুনাফার অনুপাত, মুনাফার লক্ষ্যমাত্রা অর্জনের জন্য
দ্বৈত সূচক সমন্বয় inating, সংকেত উত্পাদন ফ্রিকোয়েন্সি খুব কম হতে পারে. সূচক আরো সংবেদনশীল করতে প্যারামিটারগুলি সামঞ্জস্য করা যেতে পারে।
জেএমএ সূচকটি পিছিয়ে রয়েছে এবং সম্ভবত মূল্যের বিপরীত দিকটি মিস করেছে। অন্যান্য অগ্রণী সূচকগুলির সাথে একত্রে অপ্টিমাইজ করা যেতে পারে।
ভুলভাবে সেট করা স্টপ লস পয়েন্টটি ভেঙে ফেলা হতে পারে যার ফলে ক্ষতির পরিমাণ বাড়তে পারে। ঐতিহাসিক ডেটা পরীক্ষার ভিত্তিতে উপযুক্ত স্টপ লস পয়েন্ট নির্ধারণ করা উচিত।
কেবলমাত্র সূচকগুলির উপর নির্ভর করে মিথ্যা সংকেত তৈরি করা সহজ। আপনি ট্রেডিং ভলিউম বা অস্থিরতার সূচক যুক্ত করতে পারেন।
JMA প্যারামিটারগুলির উপর পরীক্ষা করে সেরা প্যারামিটার সমন্বয় খুঁজে বের করুন।
বিভিন্ন RSI প্যারামিটার সেটিং চেষ্টা করুন, সূচকটির কার্যকারিতা অনুকূলিত করুন।
মোবাইল স্টপ-অফ সিস্টেম যুক্ত করা হয়েছে, যাতে স্টপ-অফ ব্যবস্থা আরও বেশি অভিযোজিত হতে পারে।
গুদাম খোলার স্থান পরিচালনার লজিককে অপ্টিমাইজ করুন, যেমন গুদাম যোগ করা এবং গুদাম তৈরির শর্তাদি যোগ করা।
ফিল্টার সিগন্যালের অন্যান্য সূচক যেমন কেডি, এমএসিডি ইত্যাদি নিয়ে গবেষণা করুন।
এই কৌশলটি জেএমএ এবং আরএসআই উভয় সূচককে ক্রস করে ট্রেন্ড ট্র্যাকিং বাস্তবায়নের উপর ভিত্তি করে, ঝুঁকি সীমাবদ্ধ করার জন্য স্টপ লস কনফিগার করা যায়। তবে এখনও কিছু মিথ্যা সংকেত সম্ভাবনা রয়েছে, ত্রুটিযুক্ত লেনদেন কমাতে সূচক প্যারামিটার এবং ফিল্টারিং শর্তগুলিকে আরও অনুকূলিতকরণের প্রয়োজন। স্টপ লস কৌশলটিও রিটার্ন ডেটার উপর ভিত্তি করে অনুকূলিতকরণ পরীক্ষা করা দরকার। এই কৌশলটি দ্বি-সূচক ক্রস ট্রেডিংয়ের জন্য একটি প্রাথমিক কাঠামো সরবরাহ করে এবং কিছুটা সম্প্রসারণের জায়গা রয়েছে।
/*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)