یہ حکمت عملی دوہری حرکت پذیر اوسط کراس اوور کے عام رجحان کی پیروی کرنے کے طریقہ کار کو اپناتی ہے ، جس میں خطرہ مینجمنٹ کے طریقہ کار جیسے اسٹاپ نقصان ، منافع حاصل کرنا ، اور ٹریلنگ اسٹاپ نقصان شامل ہیں ، جس کا مقصد رجحان مارکیٹوں سے بڑے منافع حاصل کرنا ہے۔
خطرات کو کم کیا جا سکتا ہے:
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
خلاصہ یہ ہے کہ ، یہ ایک عام ڈبل ای ایم اے کراس اوور ٹرینڈ ٹریکنگ حکمت عملی ہے۔ اس کا فائدہ یہ ہے کہ یہ اسٹاپ نقصان ، منافع لینے اور ٹریلنگ اسٹاپ نقصان جیسے رسک مینجمنٹ میکانزم کے ساتھ مربوط ، رجحانات کی نقل و حرکت کو پکڑتا ہے۔ لیکن اس میں کچھ عام کمزوریاں بھی ہیں ، جیسے شور اور رینج سے منسلک مارکیٹوں کی طرف اعلی حساسیت ، پھنس جانے کا امکان ہے۔ اضافی اشارے ، پیرامیٹرز کی اصلاح ، متحرک ایڈجسٹمنٹ اور پورٹ فولیو کے استعمال کو متعارف کرانے سے اس حکمت عملی کی کارکردگی کو بڑھانے کے ل further مزید بہتری لائی جاسکتی ہے۔ مجموعی طور پر ، پیرامیٹر کی مناسب ترتیب اور مصنوعات اور مارکیٹ کے حالات کے ساتھ اچھی فٹنس کے ساتھ ، یہ حکمت عملی مہذب نتائج حاصل کرسکتی ہے۔
/*backtest start: 2023-11-20 00:00:00 end: 2023-12-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Strategy Code Example", shorttitle = "Strategy Code Example", overlay = true) // Revision: 1 // Author: @JayRogers // // *** THIS IS JUST AN EXAMPLE OF STRATEGY RISK MANAGEMENT CODE IMPLEMENTATION *** // === GENERAL INPUTS === // short ma maFastSource = input(defval = open, title = "Fast MA Source") maFastLength = input(defval = 14, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = open, title = "Slow MA Source") maSlowLength = input(defval = 21, title = "Slow MA Period", minval = 1) // === STRATEGY RELATED INPUTS === tradeInvert = input(defval = false, title = "Invert Trade Direction?") // the risk management inputs inpTakeProfit = input(defval = 1000, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 200, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 200, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === SERIES SETUP === /// a couple of ma's.. maFast = ema(maFastSource, maFastLength) maSlow = ema(maSlowSource, maSlowLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) slow = plot(maSlow, title = "Slow MA", color = red, linewidth = 2, style = line, transp = 50) // === LOGIC === // is fast ma above slow ma? aboveBelow = maFast >= maSlow ? true : false // are we inverting our trade direction? tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false // === STRATEGY - LONG POSITION EXECUTION === enterLong() => not tradeDirection[1] and tradeDirection // functions can be used to wrap up and work out complex conditions exitLong() => tradeDirection[1] and not tradeDirection strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in strategy.close(id = "Long", when = exitLong()) // ...and when to get out // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => tradeDirection[1] and not tradeDirection exitShort() => not tradeDirection[1] and tradeDirection strategy.entry(id = "Short", long = false, when = enterShort()) strategy.close(id = "Short", when = exitShort()) // === STRATEGY RISK MANAGEMENT EXECUTION === // finally, make use of all the earlier values we got prepped strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)