رفتار کے رجحان کی نگرانی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-07 16:49:49
ٹیگز:

img

جائزہ

یہ حکمت عملی حرکت پذیر اوسط اور حجم کے رجحان تجزیہ پر مبنی ہے، رفتار کے اشارے طے کرتی ہے، اور رجحانات کو ٹریک کرکے خرید و فروخت کی کارروائی کرتی ہے۔

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

  1. قریبی قیمت کے EMA اور حجم کے مجموعی EMA کا حساب لگائیں
  2. جب بند ای ایم اے سے اوپر عبور کرتا ہے تو ، اس کو اوپر کا رجحان سمجھا جاتا ہے اور لمبی پوزیشن لی جاتی ہے
  3. جب بڑھتی ہوئی جاری رہتی ہے تو ، مجموعی EMA کے 2 گنا سے زیادہ کراسوں کو بند کریں ، طویل پوزیشن میں شامل کریں
  4. RSI اشارے مقرر کریں، جب RSI 90 سے زیادہ ہو، منافع لینے کے لئے 1/3 پوزیشن بند کریں
  5. جب بند EMA سے نیچے عبور کرتا ہے تو ، اسے نیچے کی طرف رجحان سمجھا جاتا ہے ، تمام لمبی پوزیشنوں کو بند کریں
  6. جب بند EMA سے نیچے عبور کرتا ہے تو ، اسے نیچے کی طرف رجحان سمجھا جاتا ہے ، مختصر پوزیشن لیں
  7. لاگ ان قیمت کے مقررہ فیصد پر سٹاپ نقصان لائن مقرر کریں
  8. مختصر پوزیشن کا منافع لینا طویل پوزیشن کے برابر ہے

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

اس حکمت عملی کے اہم فوائد یہ ہیں:

  1. رجحانات کا اندازہ کرنے کے لئے ای ایم اے کا استعمال کرتے ہوئے رجحانات کو مؤثر طریقے سے ٹریک کیا جاسکتا ہے
  2. حجم کے مجموعی EMA کا استعمال کرتے ہوئے حقیقی رجحان کی تبدیلیوں کا اندازہ لگانا
  3. منافع لینے کے لئے رفتار کے اشارے کی پیمائش کرنے والا RSI
  4. سٹاپ نقصان کے ساتھ اچھا خطرہ کنٹرول
  5. مختلف مارکیٹ کے حالات کے مطابق ڈھال سکتے ہیں، پیرامیٹرز کو لچکدار طریقے سے ایڈجسٹ کیا جا سکتا ہے

خطرے کا تجزیہ

اس حکمت عملی کے اہم خطرات یہ ہیں:

  1. ای ایم اے میں تاخیر ہے، ممکنہ طور پر اہم نکات سے محروم ہو سکتا ہے
  2. حجم ہمیشہ حقیقی رجحان کی عکاسی نہیں کرسکتا
  3. مقررہ فیصد سٹاپ نقصان بہت میکانی ہو سکتا ہے
  4. بہت سے پیرامیٹرز پیرامیٹرز کی ترتیب مشکل بناتے ہیں
  5. تجارت کی اعلی تعدد سے تجارت کی اعلی لاگت آتی ہے

خطرے کے حل:

  1. تاخیر کو کم کرنے کے لئے EMA پیرامیٹرز کو بہتر بنائیں
  2. حجم سگنل کی تصدیق کے لئے دیگر اشارے کے ساتھ مل کر
  3. مارکیٹ کے حالات کی بنیاد پر سٹاپ نقصان کے پوائنٹس کو بہتر بنائیں
  4. پیرامیٹرز کو آسان بنائیں، صرف اہم ترتیبات رکھیں
  5. سٹاپ نقصان اور تجارتی تعدد کو مناسب طریقے سے آرام دہ بنائیں

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

اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:

  1. بہترین مجموعہ تلاش کرنے کے لئے مختلف EMA پیرامیٹر کی ترتیبات کی جانچ کریں
  2. اندراج کے لئے سگنل کی طاقت کے فیصلے کے طور پر حجم کے کئی گنا شامل کریں
  3. اندراج کی تصدیق کے لئے MACD، KD اور دیگر اشارے کے ساتھ مل کر
  4. مخصوص اسٹاک کی خصوصیات کے مطابق اسٹاپ نقصان کا فیصد بہتر بنائیں
  5. تجارتی اخراجات کو کم کرنے کے لئے تجارتی تعدد کو بہتر بنائیں

خلاصہ

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


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 5m
basePeriod: 1m
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=5, default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000)


emaLength= input(25, 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(true, 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)

cumValue = cumulPriceVolume / cumulVolume

emaVal=ema(close, emaLength)

emaCumValue1=ema(cumValue, emaLength)
emaCumValue2=ema(cumValue, emaLength*2)

emaCumValueHistory=ema(cumValue[emaLength], emaLength)


//vwapVal1=vwap(hlc3)

rsiVal=rsi(close,5)

plotEma=plot(emaVal, title="EMA", color=color.green,  transp=25)
//plot(vwapValue, title="Cumulate Volumne", color=color.orange,  linewidth=2, transp=25)
//plot(vwapVal1, title="vwapVal1", color=color.purple,  linewidth=1, transp=25)
plotCum=plot(emaCumValue1, title="emaVwapValue", color=color.purple,  linewidth=2, transp=35)
plot(emaCumValue2, title="emaVwapValue", color=color.yellow,  linewidth=3, transp=25)
fill(plotEma,plotCum, color=emaVal>emaCumValue1 ? color.lime : color.red, transp=35, title="ema and cum area")

plot(emaCumValueHistory, title="emaCumValueHistory", color=color.black,  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)

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

//re-entry
rentryCondition1=strategy.position_size>1 and emaVal > emaCumValue1 and emaCumValue1>emaCumValue2 and crossover(close, emaCumValue2) and close>open and  (tradeDirection=="LONG")
strategy.entry(id="LE",comment="LE RE", long=true, qty=qty1, when=rentryCondition1 )

rentryCondition2=strategy.position_size>1 and emaVal > emaCumValue1 and emaCumValue1>emaCumValueHistory and crossover(close, emaCumValueHistory) and close>open and  (tradeDirection=="LONG")
//strategy.entry(id="LE",comment="LE RE", long=true, qty=qty1, when=rentryCondition2 )    


//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+(1*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="PExit Points=>"+tostring(close-strategy.position_avg_price, "###.##") , qty=strategy.position_size/3 , when = (tradeDirection=="LONG" ) and  takePartialProfits == true and close>=takeProfit and crossunder(rsiVal,90) )

profitVal=    strategy.position_size>=1 ?  (strategy.position_avg_price * (1+(1*0.01) )) : ( close[1] * 2 )

//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="Exit Points=>"+tostring(close-strategy.position_avg_price, "###.##"), when=  crossunder(emaVal, emaCumValue1) 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=crossunder(emaVal, emaCumValue1) 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  crossover(rsiVal,15) )  //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<emaCumValue1 and close>emaCumValue1 and open>emaCumValue1 and close>open )   or (crossover(emaVal,emaCumValue1))  ) 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"   ) )
strategy.close(id="SE" , comment="SL Exit Loss="+tostring(close-strategy.position_avg_price, "###.##"), when= abs(strategy.position_size)>=1 and  crossover(emaVal, emaCumValue1)   and (tradeDirection=="SHORT"   ) )



مزید