یہ حکمت عملی بنیادی طور پر خریدنے کے وقت کا تعین کرنے کے لئے حرکت پذیر اوسط لائنوں HMA اور EMA کے ذریعہ تشکیل شدہ استحکام کا استعمال کرتی ہے۔ جب HMA EMA سے تجاوز کرتا ہے تو ، یہ سمجھا جاتا ہے کہ استحکام ختم ہو گیا ہے اور ایک نیا عروج کا رجحان تشکیل دیا گیا ہے ، لہذا خریدیں جب HMA EMA سے اوپر ایک ہی وقت میں عبور کرتا ہے۔
یہ حکمت عملی اوور بک اور اوور سیلڈ حالات کا پتہ لگانے کے لئے آر ایس آئی اشارے کو بھی جوڑتی ہے۔ جب آر ایس آئی 70 سے نیچے ہوتا ہے تو یہ خریدنے کی اجازت دیتا ہے اور جب آر ایس آئی 80 سے اوپر ہوتا ہے تو جزوی منافع لینے پر غور کرتا ہے۔
اس حکمت عملی میں 200 پیریڈ ای ایم اے اور ایچ ایم اے کے ساتھ بنایا گیا ایک چلتا ہوا اوسط نظام استعمال کیا جاتا ہے۔ ان میں ، ایچ ایم اے اشارے ای ایم اے کی بنیاد پر ڈیزائن کیا گیا ایک زیادہ حساس چلتا ہوا اوسط اشارے ہے۔ جب ایچ ایم اے ای ایم اے کے اوپر سے گزر جاتا ہے تو ، اس کا مطلب یہ ہے کہ استحکام کا مرحلہ ختم ہو گیا ہے اور اسٹاک کی قیمت بڑھنا شروع ہوجاتی ہے۔ اس وقت ، اگر آر ایس آئی اشارے میں زیادہ خریداری نہیں ہوتی ہے تو ، خرید کا اشارہ پیدا ہوتا ہے۔
موجودہ پوزیشن کی صورت میں ، اگر اسٹاک کی قیمت میں کمی واقع ہوتی ہے اور ایچ ایم اے ایک بار پھر ای ایم اے سے نیچے کی حد کو عبور کرتا ہے ، جس سے ایک نئی استحکام کا آغاز ہوتا ہے ، تو پوری پوزیشن بند ہوجائے گی۔ اسی وقت ، اگر آر ایس آئی 80 سے اوپر کی حد کو عبور کرتا ہے تو ، نقصانات سے بچنے کے لئے 20٪ منافع جزوی طور پر لیا جائے گا۔
اس حکمت عملی کا ٹرانزیکشن منطق کافی آسان ہے، بنیادی طور پر HMA اور EMA کے طویل اور مختصر کراسنگ پر انحصار کرتا ہے، RSI
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ ای ایم اے اور ایچ ایم اے کے استحکام تجارتی پیٹرن کا استعمال کرتے ہوئے ، زیادہ تر جعلی وقفوں کو فلٹر کیا جاسکتا ہے ، اس طرح منافع کی شرح کو بہتر بنایا جاسکتا ہے۔ اسی وقت ، آر ایس آئی اشارے کا معاون بھی خطرات کو مؤثر طریقے سے کنٹرول کرسکتا ہے۔ دونوں کا امتزاج اس حکمت عملی کو استحکام اور اتار چڑھاؤ کی منڈیوں کے لئے بہت موزوں بنا دیتا ہے۔
اس کے علاوہ ، یہ حکمت عملی صرف 3 اشارے استعمال کرتی ہے اور منطق آسان ہے ، جس سے پیرامیٹرز اور بیک ٹیسٹ کو بہتر بنانا آسان ہوجاتا ہے ، جو حکمت عملیوں کی تصدیق اور بہتری کے لئے موزوں ہے۔
اگرچہ اس حکمت عملی کے کچھ فوائد ہیں ، لیکن پھر بھی کچھ خطرات ہیں۔ مثال کے طور پر ، انعقاد کا وقت نسبتا long طویل ہوسکتا ہے ، جس میں معاونت کے لئے کافی فنڈز کی ضرورت ہوتی ہے۔ اگر اس میں ضمنی استحکام کی مدت کا سامنا کرنا پڑتا ہے تو ، یہ اسٹاپ نقصان کے ساتھ جلدی سے باہر نہیں نکل سکتا ہے ، جس سے آسانی سے نقصانات میں توسیع کی صورتحال پیدا ہوتی ہے۔
اس کے علاوہ ، یہ حکمت عملی بنیادی طور پر متحرک اوسط اشارے پر انحصار کرتی ہے۔ اگر قیمتوں میں غیر معمولی پیشرفت ہوتی ہے تو ، اسٹاپ نقصان کے اقدامات اثر انداز نہیں ہوسکتے ہیں ، جس سے زیادہ سے زیادہ خطرات پیدا ہوں گے۔ اس کے علاوہ ، پیرامیٹر کی ترتیبات حکمت عملی کی کارکردگی کو بھی متاثر کریں گی اور زیادہ سے زیادہ پیرامیٹرز تلاش کرنے کے لئے وسیع پیمانے پر جانچ کی ضرورت ہوگی۔
مذکورہ بالا خطرات کو مدنظر رکھتے ہوئے، اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
مارکیٹ کی اتار چڑھاؤ کی بنیاد پر پوزیشنوں کو متحرک طور پر ایڈجسٹ کرنے کے لئے اتار چڑھاؤ کے اشارے کو یکجا کریں.
غیر ضروری واپسی کی تجارت سے بچنے کے لئے رجحان اشارے کے فیصلوں کو بڑھانا۔
چلتی اوسط پیرامیٹرز کو بہتر بنائیں تاکہ وہ موجودہ مارکیٹ کی خصوصیات کے قریب ہوں۔
بڑے پیمانے پر واحد نقصانات سے بچنے کے لئے ٹائم اسٹاپ استعمال کریں۔
مجموعی طور پر ، یہ نسبتا simple کلاسیکی سادہ استحکام اور اتار چڑھاؤ کی حکمت عملی ہے۔ یہ بنیادی طور پر اسٹاک انڈیکس اور گرم اسٹاک کی قلیل مدتی اور درمیانی مدتی تجارت کے لئے استعمال ہوتا ہے ، اور نسبتا stable مستحکم الفا اقدار حاصل کرسکتا ہے۔ پیرامیٹرز کی اصلاح اور رسک کنٹرول کے اقدامات کو مضبوط کرنے کے ساتھ ، اس حکمت عملی کی کارکردگی میں ابھی بھی بہتری کی گنجائش ہے۔
/*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