یہ حکمت عملی جوریک موونگ ایوریج (جے ایم اے) اور آر ایس آئی اشارے کو عبور کرکے تجارتی سگنل تیار کرتی ہے۔ جب جے ایم اے آر ایس آئی سے اوپر عبور کرتا ہے تو یہ طویل ہوجاتا ہے اور جب اس سے نیچے عبور کرتا ہے تو مختصر ہوجاتا ہے۔ یہ حکمت عملی دو اشارے کو جوڑ کر جھوٹے سگنل کو فلٹر کرنے کی کوشش کرتی ہے ، اور جب رجحان زیادہ واضح ہوتا ہے تو تجارت کرتی ہے۔
حکمت عملی بنیادی طور پر دو قسم کے اشارے استعمال کرتی ہے:
جے ایم اے اشارے: طاقت کے ضارب کا استعمال کرتے ہوئے ایک ہموار چلتی اوسط، کم تاخیر کے ساتھ اور قیمت کی تبدیلیوں کو پکڑنے میں تیزی سے.
RSI اشارے: خرید / فروخت کی رفتار کی عکاسی کرنے والا ایک عام طاقت کا اشارہ۔
جب جے ایم اے آر ایس آئی سے اوپر جاتا ہے تو ، یہ طویل مدتی رجحان کے مقابلے میں قلیل مدتی بڑھتے ہوئے رجحان کی نشاندہی کرتا ہے اور خریدنے کا اشارہ پیدا کرتا ہے۔ جب آر ایس آئی سے نیچے جاتا ہے تو ، یہ فروخت کا اشارہ کرتا ہے۔
سگنل پر ، حکمت عملی اسی سمت میں تجارت میں داخل ہوتی ہے۔ جب قیمت پہلے سے طے شدہ منافع تناسب تک پہنچ جاتی ہے یا اشارے مخالف سمت میں عبور کرتے ہیں تو باہر نکل جاتی ہے۔
JMA پیرامیٹرز کو مختلف ادوار میں ایڈجسٹ کیا جاسکتا ہے۔
RSI غلط فرار فلٹر.
دوہری اشارے کا مجموعہ جھوٹے سگنل کو کم کرتا ہے۔
بلٹ میں سٹاپ نقصان نقصان کنٹرول.
منافع کی ہدف بندی کے لئے اپنی مرضی کے مطابق منافع کا تناسب.
دوہری اشارے کا مجموعہ بہت کم سگنل پیدا کر سکتا ہے. حساسیت کے لئے پیرامیٹرز tweak کر سکتے ہیں.
JMA اب بھی تاخیر ہے، اہم نکات کو یاد کر سکتے ہیں.
غلط سٹاپ نقصان کی جگہ زیادہ نقصان کے لئے مارا جا سکتا ہے. مناسب جگہ کے لئے backtest چاہئے.
اشارے پر زیادہ انحصار غلط سگنل پیدا کر سکتا ہے۔ حجم یا اتار چڑھاؤ فلٹرز شامل کر سکتا ہے۔
JMA پیرامیٹرز کو ٹیسٹ کریں تاکہ زیادہ سے زیادہ ترتیبات مل سکیں۔
بہتر کارکردگی کے لیے مختلف RSI پیرامیٹرز آزمائیں۔
موافقت پذیر رکاوٹوں کے لئے پیچھے روکنے کا طریقہ کار شامل کریں.
انٹری پوزیشن سائزنگ کو بہتر بنائیں جیسے جیتنے والی تجارت میں اضافہ کریں۔
اضافی فلٹرز جیسے KD، MACD کی تحقیق کریں۔
یہ حکمت عملی جے ایم اے اور آر ایس آئی کراس اوور کے ساتھ رجحان کی پیروی کو قابل بناتی ہے اور اسٹاپ کے ذریعے خطرے کو محدود کرتی ہے۔ لیکن غلط سگنل کا امکان باقی رہتا ہے ، جس میں پیرامیٹرز اور فلٹرز پر مزید اصلاح کی ضرورت ہوتی ہے۔ اسٹاپ نقصان کو بیک ٹسٹ کی توثیق کی بھی ضرورت ہے۔ یہ دوہری اشارے کراسنگ سسٹم کے لئے ایک بنیادی فریم ورک فراہم کرتا ہے جس میں بہتری کی گنجائش ہوتی ہے۔
/*backtest start: 2023-01-01 00:00:00 end: 2023-03-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Stratégie marche le mieux sur du 2 jours strategy("JMA(7,50,RSI) crossing RSI(14,close)", overlay=false, currency=currency.EUR, default_qty_type=strategy.cash, default_qty_value=5000) // Strategy Tester Start Time sYear = input(2019, title = "Start Year") sMonth = input(06, title = "Start Month", minval = 01, maxval = 12) sDay = input(01, title = "Start Day", minval = 01, maxval = 31) sHour = input(00, title = "Start Hour", minval = 00, maxval = 23) sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59) startTime = true // Strategy Tester End Time eYear = input(2019, title = "End Year") eMonth = input(12, title = "End Month", minval = 01, maxval = 12) eDay = input(01, title = "End Day", minval = 01, maxval = 31) eHour = input(00, title = "End Hour", minval = 00, maxval = 23) eMinute = input(00, title = "End Minute", minval = 00, maxval = 59) endTime = true // === RSI === src = close, len = input(14, minval=1, title="Length") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(rsi, color=color.purple) band1 = hline(70) band0 = hline(30) // === JMA === _length = input(7, title="Length") _phase = input(50, title="Phase") _power = input(2, title="Power") highlightMovements = input(true, title="Highlight Movements ?") // srcJMA = input(rsi, title="Source") srcJMA = rsi phaseRatio = _phase < -100 ? 0.5 : _phase > 100 ? 2.5 : _phase / 100 + 1.5 beta = 0.45 * (_length - 1) / (0.45 * (_length - 1) + 2) alpha = pow(beta, _power) jma = 0.0 e0 = 0.0 e0 := (1 - alpha) * srcJMA + alpha * nz(e0[1]) e1 = 0.0 e1 := (srcJMA - e0) * (1 - beta) + beta * nz(e1[1]) e2 = 0.0 e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * nz(e2[1]) jma := e2 + nz(jma[1]) // === End of JMA def === jmaColor = highlightMovements ? (jma > jma[1] ? color.green : color.red) : #6d1e7f plot(jma, title="JMA switch", linewidth=2, color=jmaColor, transp=0) // === Inputs === // risk management useStop = input(true, title = "Use Initial Stop Loss?") goLong() => crossover(rsi, jma) killLong() => crossunder(rsi, jma) // ======= DEBUGGGGGGGG ============ long_price = 0.0 short_price = 0.0 if(startTime and endTime) if(goLong()) long_price := close strategy.entry("Buy", strategy.long, when = goLong()) strategy.close("Buy", when = killLong() and close > long_price) // Shorting if using goShort() => killLong() killShort() => goLong() if(startTime and endTime) if(goShort()) short_price := close strategy.entry("Sell", strategy.short, when = goShort() and close < short_price) strategy.close("Sell", when = killShort()) // ========================= if (useStop) strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08) strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.08)