
یہ حکمت عملی رینکو چارٹ کی مشابہت پر مبنی ایک نان ریپراگرافنگ مقداری تجارتی نظام ہے جو رینکو بلاک کے رویے کو معیاری وقت کے چارٹ پر ماڈل کرکے روایتی رینکو حکمت عملی میں ریپراگرافنگ کے مسئلے کو حل کرتی ہے۔ یہ حکمت عملی مارکیٹ کے شور کو فلٹر کرنے کے لئے ایک مقررہ سائز کی قیمت کے بلاکس کا استعمال کرتی ہے ، صرف قیمتوں میں معنی خیز تبدیلیوں پر توجہ دیتی ہے ، اور اس بات کو یقینی بناتی ہے کہ تاریخی سگنل کو برقرار رکھا جائے۔ یہ حکمت عملی خاص طور پر رجحانات کی پیروی اور رجحانات کی واپسی کے لئے موزوں ہے ، جس میں بلاک کی سمت میں تبدیلیوں کا موازنہ کرکے متعدد اقدامات کے ذریعہ تجارتی فیصلے کیے جاتے ہیں۔
اہم خصوصیات:
اس حکمت عملی کا بنیادی اصول معیاری ٹائم چارٹ پر رینکو بلاک کی فعالیت کو نافذ کرنا ہے ، جبکہ روایتی رینکو چارٹ میں دوبارہ پینٹنگ کے مسائل کو حل کرنا ہے۔ اس کے کام کرنے کے اصول مندرجہ ذیل ہیں:
پیرامیٹرز کی ترتیب اور ابتدائیہ:
brickSize: بلاک سائز کی وضاحت کریں ، یہ طے کریں کہ نئے بلاک بنانے کے ل price قیمت کو کتنا منتقل کرنا ہوگاrenkoPriceاس کے بعد ، آپ کو یہ معلوم ہوگا کہ آپ کو کیا کرنا چاہئے:prevRenkoPrice: Renko کے پچھلے بلاک کی قیمت کی سطح ذخیرہbrickDir: بلاک کی سمت کی پیروی کریں ((1 = اوپر، -1 = نیچے)newBrickبُل کا نشان، نیا بُل بننے یا نہ بننے کا اشارہbrickStart: موجودہ بلاک کے آغاز کے لئے کالم انڈیکس کو ذخیرہ کرتا ہےرینکو بلاک کی شناخت کا دوبارہ نقشہ نہیں:
ٹائم چارٹ پر رینکو کا تصور:
کثیر مرحلے کے رجحان کی تبدیلی کا فیصلہ:
کوڈ کا گہرائی سے تجزیہ کرنے کے بعد ، اس حکمت عملی میں درج ذیل نمایاں فوائد ہیں:
نقشہ سازی کا مسئلہ حل:
شور فلٹرنگ اور واضح رجحان کی شناخت:
کثیر مرحلہ سگنل کی تصدیق:
brickDir[brickSize]موجودہ کے ساتھbrickDirاور تاریخی قیمت کی سطح کا رشتہبصری تجارت کی بنیاد:
لچک اور حسب ضرورت:
اگرچہ اس حکمت عملی سے نقشہ سازی کا مسئلہ حل ہو گیا ہے ، لیکن اس کے باوجود مندرجہ ذیل خطرات موجود ہیں:
سگنل تاخیر کا خطرہ:
بٹ سائز کا انتخاب خطرہ:
ٹرینڈ ریورس کے غلط سگنل کا خطرہ:
واپسی کا خطرہ:
وسائل کے خطرے کا حساب:
کوڈ تجزیہ کی بنیاد پر ، اس حکمت عملی کے لئے کچھ اہم اصلاحات یہ ہیں:
متحرک بلاک سائز کی اصلاح:
ٹرانزیکشن فلٹر شامل کریں:
نقصانات اور منافع کو روکنے میں بہتری:
strategy.exit()کمانڈ ، اے ٹی آر یا بلاک سائز پر مبنی اسٹاپ نقصان کا تعین کرتا ہےکثیر مرحلے کی توثیق کے نظام کو بہتر بنائیں:
brickSizeتاریخ کے ٹکڑوں کے لئے ضرببصری اور انتباہی نظام میں بہتری:
label.new()اورalert()صارف کے تجربے کو بڑھانے کے لئے فنکشنمتعدد مرحلے میں ریکو کا نقشہ نہیں لگایا گیا رجحان کی نقل و حرکت کی واپسی کی تجارت کی حکمت عملی نے روایتی رینکو حکمت عملی میں کامیابی سے نقل و حرکت کا مسئلہ حل کیا ، جس سے تاجر کو معیاری وقت کے چارٹ پر رینکو منطق کا اطلاق کرنے کی اجازت ملتی ہے ، جبکہ تاریخی سگنل کی استحکام کو برقرار رکھا جاتا ہے۔ اس حکمت عملی نے رجحان کی واپسی کی شناخت کے لئے ایک کثیر مرحلے میں توثیق کا طریقہ کار استعمال کیا ، جس سے سگنل کی کیفیت میں اضافہ ہوا ، اور گرافکس کے ذریعہ مارکیٹ کی ساخت کو بصری طور پر دکھایا گیا۔
حکمت عملی کا بنیادی فائدہ یہ ہے کہ اس میں ریپنگ کے مسائل کو حل کرنا ، مارکیٹ میں شور کو فلٹر کرنا ، سگنل کی متعدد سطحوں کی توثیق اور بصری گرافک نمائندگی شامل ہے۔ تاہم ، سگنل کی تاخیر ، بلاک سائز کا انتخاب اور جعلی سگنل جیسے خطرات موجود ہیں۔ مستقبل میں متحرک بلاک سائز ، ٹریڈنگ فلٹرز میں اضافہ ، اسٹاپ نقصان کے طریقہ کار کو بہتر بنانا ، توثیق کے اقدامات کو بہتر بنانا اور بصری نظام کو بڑھانا۔
رینکو چارٹ کے فوائد کو یکجا کرنے اور اس کے نقصانات سے بچنے کا یہ طریقہ خاص طور پر رجحان کی پیروی اور رجحان کی واپسی کی تجارت کی حکمت عملی کے لئے موزوں ہے ، جس سے تاجروں کو ایک قابل اعتماد تکنیکی تجزیہ کا آلہ فراہم کیا جاتا ہے جو بیک اپ کی درستگی کو برقرار رکھتے ہوئے مستحکم ریئل اسٹیٹ کی کارکردگی فراہم کرتا ہے۔
//@version=5
strategy("Non-Repainting Renko Emulation Strategy [PineIndicators]", overlay=true, calc_on_every_tick=false, max_boxes_count = 500, max_labels_count = 500, max_lines_count = 500, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.01, slippage = 2)
// Parameter: Brick-Größe (z.B. 10 Punkte)
brickSize = input.float(3.0, "Brick Size", step=0.1)
// Persistente Variablen
var float renkoPrice = na // Aktueller Renko-Level (Schlusswert des letzten Bricks)
var float prevRenkoPrice = na // Vorheriger Renko-Level (für Box-Berechnung)
var int brickDir = 0 // 1 = Aufwärts, -1 = Abwärts
var bool newBrick = false // Signalisiert, dass ein neuer Brick abgeschlossen wurde
var int brickStart = bar_index // Beginn des aktuellen Bricks (x-Achse)
// Berechnungen nur auf abgeschlossenen Candles
if barstate.isconfirmed
newBrick := false
// Initialisierung: Beim ersten Candle setzen wir den Renko-Level
if na(renkoPrice)
renkoPrice := close
brickStart := bar_index
// Berechne die Differenz zum letzten Renko-Level
diff = close - renkoPrice
// Prüfen, ob der Unterschied mindestens der Brick-Größe entspricht
if math.abs(diff) >= brickSize
// Anzahl kompletter Bricks (kann > 1 sein)
numBricks = math.floor(math.abs(diff) / brickSize)
prevRenkoPrice := renkoPrice
// Aktualisieren des Renko-Levels
renkoPrice := renkoPrice + numBricks * brickSize * math.sign(diff)
// Brick-Richtung (konvertiere math.sign-Ergebnis in int)
brickDir := int(math.sign(diff))
newBrick := true
// Bestimme die obere und untere Grenze des abgeschlossenen Bricks:
lowLevel = brickDir == 1 ? prevRenkoPrice : renkoPrice
highLevel = brickDir == 1 ? renkoPrice : prevRenkoPrice
// Setze den Start für den nächsten Brick
brickStart := bar_index
// Handelslogik: Einstieg/Ausstieg nur, wenn ein neuer Brick abgeschlossen wurde
if barstate.isconfirmed and newBrick
// Bei Aufwärts-Brick: Long-Signal
if brickDir[brickSize] < brickDir and renkoPrice[brickSize] < renkoPrice[brickSize*2] and renkoPrice < renkoPrice[brickSize] and renkoPrice[brickSize*2] < renkoPrice[brickSize*3] and strategy.position_size <= 0
// Bestehende Short-Position schließen, falls vorhanden
strategy.entry("Long", strategy.long)
// Bei Abwärts-Brick: Short-Signal
else if brickDir[brickSize] > brickDir and renkoPrice[brickSize] > renkoPrice[brickSize*2] and renkoPrice > renkoPrice[brickSize] and renkoPrice[brickSize*2] > renkoPrice[brickSize*3] and strategy.position_size >= 0
// Bestehende Long-Position schließen, falls vorhanden
strategy.entry("Short", strategy.short)
if barstate.isconfirmed and newBrick
if brickDir[brickSize] < brickDir
strategy.close("Short")
else if brickDir[brickSize] > brickDir
strategy.close("Long")