
এই কৌশলটি মূলত মুভিং এভারেজ এইচএমএ এবং ইএমএ গঠনের সমান্তরাল সমান্তরাল ব্যবহার করে কেনার সময় নির্ধারণ করে। যখন এইচএমএ-তে ইএমএ পরিধান করা হয় তখন সমান্তরালের সমাপ্তি হিসাবে বিবেচিত হয়, নতুন উত্থান প্রবণতা তৈরি হয়, তাই এইচএমএ-তে ইএমএ পরিধানের সাথে সাথে কেনা হয়।
এই কৌশলটি RSI সূচকগুলির সাথে একত্রে ওভারব্লড ওভারসোল্ডের জন্য ব্যবহৃত হয়। RSI 70 এর নীচে ক্রয় করার অনুমতি দেয় এবং RSI 80 এর উপরে আংশিক স্টপ বিবেচনা করে।
এই কৌশলটি 200 চক্রের ইএমএ এবং এইচএমএ ব্যবহার করে গড় লাইন সিস্টেম তৈরি করে। এইচএমএ সূচকটি ইএমএ উন্নতির নকশার ভিত্তিতে আরও সংবেদনশীল চলমান গড় সূচক। যখন এইচএমএ-তে ইএমএ পরিধান করা হয়, তখন সমন্বয় পর্যায়ে শেষ হয় এবং শেয়ারের দাম বাড়তে শুরু করে। এই সময়ে যদি আরএসআই সূচকটি কোনও ওভারবাইট না দেখায় তবে এটি একটি কেনার সংকেত দেয়।
যদি শেয়ারের দাম কমে যায়, তাহলে এইচএমএ আবার ইএমএ-তে নেমে যায়, যা নতুন সংস্কার শুরু হওয়ার ইঙ্গিত দেয়। একই সময়ে, যদি আরএসআই 80 এর উপরে থাকে তবে ক্ষতির হাত থেকে রক্ষা করার জন্য 20% বন্ধ হয়ে যায়।
এই কৌশলটির লেনদেনের লজিকটি সহজ, মূলত এইচএমএ এবং ইএমএর মাল্টি-হোলি ক্রস, আরএসআইয়ের উচ্চ ও নিম্ন স্তরের বিচারের সাথে মিলিত হয়ে একটি আরও স্থিতিশীল লেনদেনের কৌশল গঠন করে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে, ইএমএ এবং এইচএমএর সমান্তরাল ট্রেডিং প্যাটার্ন ব্যবহার করে, বেশিরভাগ ফ্যালস ব্রেকগুলিকে ফিল্টার করা যায়, যার ফলে মুনাফা অর্জনের হার বৃদ্ধি পায়। একই সাথে, আরএসআই সূচকের সহায়তায় ঝুঁকিগুলি কার্যকরভাবে নিয়ন্ত্রণ করা যায়, এই দুটি সংমিশ্রণ এই কৌশলটিকে সমান্তরাল অস্থিরতার জন্য উপযুক্ত করে তোলে।
এছাড়াও, এই কৌশলটি কেবলমাত্র 3 টি সূচক ব্যবহার করে এবং যুক্তিটি সহজ, যা এর প্যারামিটারগুলিকে অনুকূলিতকরণ এবং পুনরায় পরিমাপ করা সহজ করে তোলে, যা কৌশলটির যাচাইকরণ এবং উন্নতিতে সহায়তা করে।
যদিও এই কৌশলটির কিছু সুবিধাগুলি রয়েছে, তবুও কিছু ঝুঁকি রয়েছে যা সম্পর্কে সতর্ক হওয়া দরকার। উদাহরণস্বরূপ, পজিশন ধরে রাখার সময়টি দীর্ঘ হতে পারে এবং পর্যাপ্ত তহবিলের সমর্থন প্রয়োজন। যদি আপনি ক্রস-ব্রিজডিংয়ের সময়টি পান তবে খুব তাড়াতাড়ি ক্ষতিগ্রস্থ হওয়া বন্ধ করা যায় না, তবে ক্ষতির বিস্তার ঘটতে পারে।
এছাড়াও, এই কৌশলটি মূলত সমান্তরাল সূচকের উপর নির্ভর করে, যদি দামের অস্বাভাবিক ব্রেকআউট হয় তবে স্টপ-ডাউন ব্যবস্থাটি কার্যকর না হওয়ার ঝুঁকি নিয়ে আসে। এছাড়াও, প্যারামিটার সেটিংগুলি কৌশলটির কার্যকারিতা প্রভাবিত করে এবং সর্বোত্তম প্যারামিটারগুলি খুঁজে পেতে প্রচুর পরীক্ষার প্রয়োজন।
উপরের ঝুঁকির কথা বিবেচনা করে, এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
বাজারের অস্থিরতার উপর ভিত্তি করে পজিশনের গতিশীল সমন্বয়।
ট্রেন্ড ইন্ডিকেটর ব্যবহার করে ট্রেডিংয়ের প্রবণতা বাড়ান এবং অপ্রয়োজনীয় বিপরীতমুখী ট্রেডিং এড়িয়ে চলুন।
চলমান গড় প্যারামিটারগুলিকে বর্তমান বাজারের বৈশিষ্ট্যগুলির সাথে আরও ঘনিষ্ঠ করে তুলতে অপ্টিমাইজ করা হয়েছে।
সময় নষ্ট করা এবং একক ক্ষতির সমস্যা এড়ানো।
এই কৌশলটি সামগ্রিকভাবে একটি তুলনামূলকভাবে ক্লাসিক এবং সহজ সমন্বয়কারী কম্পন কৌশল। এটি মূলত স্টক সূচক এবং জনপ্রিয় স্টকগুলির সংক্ষিপ্ত এবং মধ্যমেয়াদী লেনদেনের জন্য প্রয়োগ করা হয়, যা তুলনামূলকভাবে স্থিতিশীল আলফা মান অর্জন করতে পারে। প্যারামিটারগুলির অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা জোরদার করার সাথে সাথে এই কৌশলটির পারফরম্যান্সের আরও অনেক উন্নতির জায়গা রয়েছে।
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee
//@version=4
strategy(title="EMA_HMA_RSI_Strategy", overlay=true, pyramiding=2, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed,
//longCondition = crossover(sma(close, 14), sma(close, 28))
//if (longCondition)
//strategy.entry("My Long Entry Id", strategy.long)
//shortCondition = crossunder(sma(close, 14), sma(close, 28))
//if (shortCondition)
// strategy.entry("My Short Entry Id", strategy.short)
//HMA
HMA(src1, length1) => wma(2 * wma(src1, length1/2) - wma(src1, length1), round(sqrt(length1)))
var stopLossVal=0.00
//variables BEGIN
length=input(200,title="EMA and HMA Length") //square root of 13
rsiLength=input(13, title="RSI Length")
takePartialProfits = input(true, title="Take Partial Profits (if this selected, RSI 13 higher reading over 80 is considered for partial closing ) ")
stopLoss = input(title="Stop Loss%", defval=8, minval=1)
//variables END
//RSI
rsi13=rsi(close,rsiLength)
ema200=ema(close,length)
hma200=HMA(close,length)
//exitOnAroonOscCrossingDown = input(true, title="Exit when Aroon Osc cross down zero ")
// Drawings
//Aroon oscillator
arronUpper = 100 * (highestbars(high, length+1) + length)/length
aroonLower = 100 * (lowestbars(low, length+1) + length)/length
aroonOsc = arronUpper - aroonLower
aroonMidpoint = 0
//oscPlot = plot(aroonOsc, color=color.green)
//midLine= plot(aroonMidpoint, color=color.green)
//topLine = plot(90,style=plot.style_circles, color=color.green)
//bottomLine = plot(-90,style=plot.style_circles, color=color.red)
//fill(oscPlot, midLine, color=aroonOsc>0?color.green:color.red, transp=50)
//fill(topLine,bottomLine, color=color.blue)
//fill(topLine,oscPlot, color=aroonOsc>90?color.purple:na, transp=25)
// RSI
//plot(rsi13, title="RSI", linewidth=2, color=color.purple)
//hline(50, title="Middle Line", linestyle=hline.style_dotted)
//obLevel = hline(80, title="Overbought", linestyle=hline.style_dotted)
//osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
//fill(obLevel, osLevel, title="Background", color=rsi13 >=30 ? color.green:color.purple, transp=65) // longTermRSI >=50
hullColor = hma200 > hma200[2] ? #00ff00 : #ff0000
plot(hma200, title="HULL 200", color=hullColor, transp=25)
plot(ema200, title="EMA 200", color=color.orange)
//Entry--
strategy.initial_capital = 50000
strategy.entry(id="Long Entry", comment="LE", qty=(strategy.initial_capital * 0.10)/close, long=true, when=strategy.position_size<1 and hma200 < ema200 and hma200 > hma200[2] and rsi13<70 ) // // aroonOsc<0
//Add
if(strategy.position_size>=1 and close < strategy.position_avg_price and ( crossover(rsi13,30) or crossover(rsi13,40) ) ) // hma200 < ema200 and hma200 > hma200[2] and hma200[2] < hma200[3] ) //and crossover(rsi13,30) aroonOsc<0 //and hma200 > hma200[2] and hma200[2] <= hma200[3] //crossover(rsi13,30)
qty1=(strategy.initial_capital * 0.10)/close
//stopLossVal:= abs(strategy.position_size)>1 ? ( (close > close[1] and close > open and close>strategy.position_avg_price) ? close[1]*(1-stopLoss*0.01) : stopLossVal ) : 0.00
strategy.entry(id="Long Entry", comment="Add", qty=qty1, long=true ) //crossover(close,ema34) //and close>ema34 //crossover(rsi5Val,rsiBuyLine) -- SL="+tostring(stopLossVal, "####.##")
//stopLossVal:= abs(strategy.position_size)>1 ? strategy.position_avg_price*(1-0.5) : 0.00
stopLossVal:= abs(strategy.position_size)>1 ? ( (close > close[1] and close > open and close>strategy.position_avg_price) ? close[1]*(1-stopLoss*0.01) : stopLossVal ) : 0.00
//stopLossVal:= abs(strategy.position_size)>1 ? strategy.position_avg_price*(1-stopLoss*0.01) : 0.00
barcolor(color=strategy.position_size>=1? rsi13>80 ? color.purple: color.blue:na)
//close partial
if(takePartialProfits==true)
strategy.close(id="Long Entry", comment="Partial X points="+tostring(close - strategy.position_avg_price, "####.##"), qty_percent=20 , when=abs(strategy.position_size)>=1 and crossunder(rsi13, 80) and close > strategy.position_avg_price ) //close<ema55 and rsi5Val<20 //ema34<ema55
//close All
//if(exitOnAroonOscCrossingDown)
// strategy.close(id="Long Entry", comment="Exit All points="+tostring(close - strategy.position_avg_price, "####.##"), when=abs(strategy.position_size)>=1 and crossunder(aroonOsc, 0) ) //close<ema55 and rsi5Val<20 //ema34<ema55 //close<ema89
//close All on stop loss
strategy.close(id="Long Entry", comment="Stoploss X points="+tostring(close - strategy.position_avg_price, "####.##"), when=abs(strategy.position_size)>=1 and close < stopLossVal ) //close<ema55 and rsi5Val<20 //ema34<ema55 //close<ema89
strategy.close(id="Long Entry", comment="hmaXema X points="+tostring(close - strategy.position_avg_price, "####.##"), when=abs(strategy.position_size)>=1 and close > strategy.position_avg_price and crossunder(hma200,ema200) ) //close<ema55 and rsi5Val<20 //ema34<ema55 //close<ema89