এই কৌশলটি মূলত ক্রয়ের সময় নির্ধারণের জন্য HMA এবং EMA চলমান গড় রেখাগুলি দ্বারা গঠিত একীকরণ ব্যবহার করে। যখন HMA EMA এর উপরে অতিক্রম করে, তখন এটি বিবেচনা করা হয় যে একীকরণ শেষ হয়েছে এবং একটি নতুন উত্থান প্রবণতা গঠিত হয়েছে, তাই যখন HMA একই সময়ে EMA এর উপরে অতিক্রম করে তখন কিনুন।
এই কৌশলটি ওভারকুপ এবং ওভারসোল্ড শর্তগুলি সনাক্ত করতে আরএসআই সূচককেও একত্রিত করে। এটি যখন আরএসআই 70 এর নীচে থাকে তখন কেনার অনুমতি দেয় এবং যখন আরএসআই 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