Momentum Moving Average Consolidation Strategy


تخلیق کی تاریخ: 2024-01-25 11:39:00 آخر میں ترمیم کریں: 2024-01-25 11:39:00
کاپی: 0 کلکس کی تعداد: 682
1
پر توجہ دیں
1617
پیروکار

Momentum Moving Average Consolidation Strategy

جائزہ

یہ حکمت عملی بنیادی طور پر خریدنے کے وقت کا تعین کرنے کے لئے متحرک اوسط HMA اور EMA کی تشکیل کی مساوی لائن کی صف بندی کا استعمال کرتی ہے۔ جب HMA پر EMA پہننا صف بندی کے اختتام کے طور پر سمجھا جاتا ہے ، تو ایک نیا اوپر کا رجحان پیدا ہوتا ہے ، لہذا HMA پر EMA پہننے کے ساتھ ساتھ خریدیں۔

یہ حکمت عملی RSI اشارے کے ساتھ مل کر اوورلوڈ اور اوور سیل کا پتہ لگانے کے لئے استعمال کی جاتی ہے۔ آر ایس آئی 70 سے نیچے خریدنے کی اجازت دیتا ہے ، اور آر ایس آئی 80 سے اوپر ہونے پر جزوی اسٹاپ پر غور کرتا ہے۔

حکمت عملی کا اصول

اس حکمت عملی میں 200 ادوار کے ای ایم اے اور ایچ ایم اے کا استعمال کیا گیا ہے تاکہ ایک اوسط لکیری نظام بنایا جاسکے۔ اس میں ، ایچ ایم اے اشارے ای ایم اے میں بہتری کے ڈیزائن کے مطابق ایک زیادہ حساس حرکت پذیر اوسط اشارے ہیں۔ جب ایچ ایم اے پر ای ایم اے پہنا جاتا ہے ، تو اس کا مطلب ہے کہ صفائی کا مرحلہ ختم ہوچکا ہے اور اسٹاک کی قیمت بڑھنے لگی ہے۔ اس وقت اگر آر ایس آئی اشارے میں کوئی زیادہ خریداری نہیں دکھائی دیتی ہے تو ، اس سے خریدنے کا اشارہ ملتا ہے۔

اگر اسٹاک کی قیمت میں کمی واقع ہوتی ہے تو ، ایچ ایم اے ایک بار پھر ای ایم اے کو نیچے لے جاتا ہے ، جس سے یہ ظاہر ہوتا ہے کہ نئی صف بندی کا آغاز ہوا ہے ، تو یہ مکمل طور پر صاف ہے۔ اس کے علاوہ ، اگر آر ایس آئی 80 پر پہنتا ہے تو ، نقصان سے بچنے کے لئے 20٪ کی طرف سے جزوی طور پر روک دیا جائے گا۔

اس حکمت عملی کی تجارت کا منطق نسبتا simple آسان ہے ، بنیادی طور پر ایچ ایم اے اور ای ایم اے کے کثیر قطب کراسنگ ، جو آر ایس آئی کے اعلی اور کم فیصلے کے ساتھ مل کر ایک زیادہ مستحکم تجارتی حکمت عملی تشکیل دیتے ہیں۔

طاقت کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ ای ایم اے اور ایچ ایم اے کے تالے کی تجارت کی شکل کا استعمال کرتے ہوئے ، زیادہ تر جھوٹے وقفے کو فلٹر کیا جاسکتا ہے ، جس سے منافع کی شرح میں اضافہ ہوتا ہے۔ اس کے علاوہ ، آر ایس آئی اشارے کی معاونت بھی خطرے کو مؤثر طریقے سے کنٹرول کرسکتی ہے ، اور ان دونوں کا امتزاج اس حکمت عملی کو تالے کی اتار چڑھاؤ والی مارکیٹوں کے لئے بہت موزوں بنا دیتا ہے۔

اس کے علاوہ، یہ حکمت عملی صرف 3 اشارے کا استعمال کرتا ہے اور منطقی طور پر آسان ہے، جس سے اس کے پیرامیٹرز کو بہتر بنانے اور پیمائش کرنا آسان ہے، جو حکمت عملی کی توثیق اور بہتری کے لئے فائدہ مند ہے.

خطرے کا تجزیہ

اگرچہ اس حکمت عملی کے کچھ فوائد ہیں ، لیکن اس میں کچھ خطرات موجود ہیں جن پر دھیان دینے کی ضرورت ہے۔ مثال کے طور پر ، پوزیشن کی مدت نسبتا long طویل ہوسکتی ہے ، جس میں کافی مالی اعانت کی ضرورت ہوتی ہے۔ اگر افقی صفائی کے اوقات کا سامنا کرنا پڑتا ہے تو ، نقصان سے باہر نکلنے کو جلدی سے روکنا ممکن نہیں ہے ، تو نقصانات میں اضافے کا خطرہ ہے۔

اس کے علاوہ ، یہ حکمت عملی بنیادی طور پر ایکویریم اشارے پر انحصار کرتی ہے ، اور اگر قیمت میں غیر معمولی توڑ پڑتا ہے تو ، روک تھام کے اقدامات کام نہیں کرسکتے ہیں ، جس سے زیادہ خطرہ لاحق ہوتا ہے۔ اس کے علاوہ ، پیرامیٹرز کی ترتیب حکمت عملی کی کارکردگی کو بھی متاثر کرتی ہے ، جس میں بہترین پیرامیٹرز تلاش کرنے کے لئے بہت زیادہ جانچ کی ضرورت ہوتی ہے۔

اصلاح کی سمت

مندرجہ بالا خطرات کو مدنظر رکھتے ہوئے ، اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے۔

  1. مارکیٹ میں اتار چڑھاو کے مطابق پوزیشنوں کو متحرک طور پر ایڈجسٹ کرنے کے لئے اتار چڑھاو کے اشارے کے ساتھ مل کر۔

  2. ٹرینڈ انڈیکیٹرز میں اضافہ کریں اور غیر ضروری تجارت سے بچیں.

  3. متحرک اوسط پیرامیٹرز کو بہتر بنائیں تاکہ وہ موجودہ مارکیٹ کی خصوصیات کے قریب ہوں۔

  4. وقت کے ضیاع کو روکنے کے لئے استعمال کیا جاتا ہے، زیادہ سے زیادہ ممکنہ طور پر انفرادی نقصانات سے بچنے کے لئے.

خلاصہ کریں۔

یہ حکمت عملی مجموعی طور پر ایک نسبتا کلاسیکی سادہ مجموعی جھٹکا حکمت عملی ہے۔ یہ بنیادی طور پر اسٹاک انڈیکس اور مشہور اسٹاک کے مختصر اور درمیانی مدت کے کاروبار میں لاگو ہوتا ہے ، جس سے نسبتا مستحکم الفا کی قیمت حاصل کی جاسکتی ہے۔ پیرامیٹرز کی اصلاح اور ہوا کے کنٹرول کے اقدامات میں اضافے کے ساتھ ، اس حکمت عملی کی کارکردگی میں بہتری کی گنجائش ہے۔

حکمت عملی کا ماخذ کوڈ
/*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