طویل مختصر کے لئے ای ایم اے اور مجموعی حجم کراس اوور حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-20 11:48:34
ٹیگز:

جائزہ

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

حکمت عملی منطق

50 دن کے ای ایم اے اور 100 دن کے مجموعی حجم کے اشارے کا حساب لگایا جاتا ہے۔ جب ای ایم اے نیچے سے مجموعی حجم سے اوپر کی طرف بڑھتا ہے تو ، خریدنے کا اشارہ لانگ ہونے کے لئے تیار کیا جاتا ہے۔ جب ای ایم اے اوپر سے مجموعی حجم سے نیچے کی طرف بڑھتا ہے تو ، فروخت کا اشارہ مختصر ہونے کے لئے تیار کیا جاتا ہے۔

پوزیشنوں کے دوران ، فکسڈ اسٹاپ نقصان اور منافع حاصل کرنے کی حکمت عملی نافذ کی جاتی ہے۔ اسٹاپ نقصان لاگ ان قیمت سے 8٪ نیچے مقرر کیا جاتا ہے۔ لاگ ان قیمت سے 8٪ زیادہ منافع حاصل کیا جاتا ہے ، جب قیمت منافع حاصل کرنے کی سطح تک پہنچ جاتی ہے تو جزوی پوزیشن بند ہوجاتی ہے۔

فوائد کا تجزیہ

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

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

خطرے کا تجزیہ

متحرک اوسطوں پر زیادہ انحصار کرنے سے رینج سے وابستہ استحکام کے دوران whipsaws کا نتیجہ نکل سکتا ہے۔ فکسڈ منافع لینے اور اسٹاپ نقصان سے بھی قبل از وقت باہر نکلنے یا بڑے پیمانے پر اسٹاپ آؤٹ ہوسکتے ہیں۔ صرف قیمت اور حجم کے عوامل کو دوسرے عناصر کے بغیر سمجھا جاتا ہے۔

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

اصلاح کی ہدایات

  1. بہترین ترتیبات تلاش کرنے کے لئے ای ایم اے پیرامیٹر کے مجموعوں کو ٹیسٹ اور بہتر بنائیں.

  2. ایک مجموعی نظام بنانے کے لئے دیگر تکنیکی اشارے شامل کریں.

  3. مشین لرننگ کا اطلاق رجحانات کی پیشن گوئی اور EMA کارکردگی کو بہتر بنانے کے لئے.

  4. ٹریل اسٹاپس، متحرک باہر نکلنے وغیرہ کو یکجا کرکے منافع لینے اور نقصان کو روکنے کی حکمت عملی کو بہتر بنائیں.

  5. متحرک پوزیشن سائزنگ کے لیے کیپٹل مینجمنٹ ماڈیولز متعارف کرانا۔

  6. حکمت عملی مجموعہ بنانے کے لئے مصنوعات کی خصوصیات کی بنیاد پر پیرامیٹرز کو اپنی مرضی کے مطابق کریں.

خلاصہ

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


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 2h
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("EMA_cumulativeVolume_crossover[Strategy]", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000)


emaLength= input(50, title="EMA Length", minval=1, maxval=200)
cumulativePeriod = input(100,  title="cumulative volume Period", minval=1, maxval=200)


riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(8,title="Stop Loss",minval=1)
takePartialProfits=input(false, title="take partial profits  (percentage same as stop loss)")

tradeDirection=input(title="Trade Direction", defval="LONG", options=["LONG", "SHORT"])

avgPrice = (high + low + close) / 3
avgPriceVolume = avgPrice * volume

cumulPriceVolume = sum(avgPriceVolume, cumulativePeriod)
cumulVolume = sum(volume, cumulativePeriod)

vwapValue = cumulPriceVolume / cumulVolume

emaVal=ema(close, emaLength)

plot(emaVal, title="EMA", color=color.green,  transp=25)
plot(vwapValue, title="Cumulate Volumne / VWAP", color=color.orange,  linewidth=2, transp=25)

bgcolor(emaVal>vwapValue?color.blue:color.purple)    

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1

strategy.entry(id="LE",comment="LE", long=true, qty=qty1, when=crossover(emaVal, vwapValue)  and (tradeDirection=="LONG") )    //emaVal>vwapValue and crossover(close , emaVal)

//stoploss
stopLossVal=  strategy.position_size>=1 ?  (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00

//draw initil stop loss
plot(strategy.position_size>=1 ? stopLossVal : na, color = color.purple , style=plot.style_linebr,  linewidth = 2, title = "stop loss")

//partial exits
takeProfit=  strategy.position_size>=1 ?  (strategy.position_avg_price * (1+(stopLoss*0.01) )) : ( close[1] * 2 )
if(takePartialProfits==true)
    strategy.close(id="LE", comment="Partial"+tostring(close-strategy.position_avg_price, "###.##") , qty=strategy.position_size/3 , when = (tradeDirection=="LONG" ) and close>takeProfit and crossunder(close, emaVal) )    //close<close[1] and close[1]<close[2] and close[2]<close[3])
    
strategy.close(id="LE" , comment="LE Exit Points="+tostring(close-strategy.position_avg_price, "###.##"), when=crossunder(emaVal, vwapValue) and (tradeDirection=="LONG") )

strategy.close(id="LE" , comment="SL Exit Loss="+tostring(close-strategy.position_avg_price, "###.##"), when= close < stopLossVal   and (tradeDirection=="LONG") )


//for short  you dont have to wait crossodown of ema, falling is speed , so just check if close crossing down vwapVal
strategy.entry(id="SE",comment="SE", long=false, qty=qty1, when=(close<vwapValue and close<open  and close[1] < vwapValue  and close[1]<open[1] and close<close[1])  and emaVal>=vwapValue and (tradeDirection=="SHORT") )    //emaVal>vwapValue and crossover(close , emaVal)

//stoploss
stopLossValUpside=  abs(strategy.position_size)>=1 and tradeDirection=="SHORT" ?  (strategy.position_avg_price * (1+(stopLoss*0.01) )) : 0.00

//draw initil stop loss
plot(abs(strategy.position_size)>=1 and tradeDirection=="SHORT" ? stopLossValUpside : na, color = color.purple , style=plot.style_linebr,  linewidth = 2, title = "stop loss")

//partial exits
shortTakeProfit=  abs(strategy.position_size)>=1 and tradeDirection=="SHORT" ?  (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00
if(takePartialProfits==true)
    strategy.close(id="SE", comment="Partial" , qty=strategy.position_size/3 , when = (tradeDirection=="SHORT"   ) and  close<shortTakeProfit )  //close<takeProfit and (emaVal - close)>8 )
  
//strategy.close(id="SE" , comment="SE Exit Points="+tostring(close-strategy.position_avg_price, "###.##"), when=crossover(emaVal, vwapValue) and (tradeDirection=="SHORT") )
strategy.close(id="SE" , comment="SE Exit Points="+tostring(close-strategy.position_avg_price, "###.##"), when= abs(strategy.position_size)>=1 and ( (emaVal<vwapValue and close>vwapValue and open>vwapValue and close>open )   or (crossover(emaVal,vwapValue))  ) and (tradeDirection=="SHORT") )

strategy.close(id="SE" , comment="SL Exit Loss="+tostring(close-strategy.position_avg_price, "###.##"), when= abs(strategy.position_size)>=1 and  close > stopLossValUpside   and (tradeDirection=="SHORT"   ) )




مزید