anis86
@t_anis86
Ne tavsiye etmek istersiniz?
önceki makale
پیام های تریدر
filtre
sinyal türü

// version =5 indicator("DTT - Digital Time Theory (نظریة الزمن الرقمی)", overlay=true, max_lines_count=500, max_labels_count=500, max_boxes_count=50) //----------------------------- // ⚙️ الإعدادات العامة //----------------------------- string dtt_grpA = "الإعدادات العامة" string dtt_grpB = "عرض الخطوط" string dtt_grpC = "الألوان والسماکات" string dtt_grpD = "تسلسل 3-6-9" string dtt_grpE = "اللابلز والعناصر البصریة" string dtt_tzNy = input.string("America/New_York", "المنطقة الزمنیة لموعد البدایة", group=dtt_grpA) int dtt_startH = input.int(18, "ساعة البدایة (بتوقیت نیویورک)", minval=0, maxval=23, group=dtt_grpA) int dtt_startM = input.int(0, "دقیقة البدایة", minval=0, maxval=59, group=dtt_grpA) bool dtt_extendFuture = input.bool(true, "تمدید الخطوط أعلى/أسفل (عمودیة کاملة)", group=dtt_grpA) // إظهار/إخفاء کل طبقة bool dtt_showQuarter = input.bool(true, "إظهار أرباع الیوم (کل 6 ساعات)", group=dtt_grpB) bool dtt_show90m = input.bool(true, "إظهار خطوط 90 دقیقة", group=dtt_grpB) bool dtt_show22m5 = input.bool(true, "إظهار نبضات 22.5 دقیقة", group=dtt_grpB) // ألوان وسماکات color dtt_clQuarter = input.color(color.new(color.teal, 0), "لون ربع 6 ساعات", group=dtt_grpC) int dtt_wQuarter = input.int(2, "سُمک خط 6 ساعات", minval=1, maxval=5, group=dtt_grpC) color dtt_cl90 = input.color(color.new(color.orange, 0), "لون 90 دقیقة", group=dtt_grpC) int dtt_w90 = input.int(2, "سُمک خط 90 دقیقة", minval=1, maxval=5, group=dtt_grpC) color dtt_clBeat = input.color(color.new(color.gray, 0), "لون 22.5 دقیقة (الافتراضی)", group=dtt_grpC) int dtt_wBeat = input.int(1, "سُمک 22.5 دقیقة", minval=1, maxval=4, group=dtt_grpC) // تمییز 3-6-9 bool dtt_mark369 = input.bool(true, "تمییز تسلسل 3-6-9 على نبضات 22.5 دقیقة", group=dtt_grpD) color dtt_cl3 = input.color(color.new(color.lime, 0), "لون کل 3 نبضات", group=dtt_grpD) color dtt_cl6 = input.color(color.new(color.fuchsia, 0), "لون کل 6 نبضات", group=dtt_grpD) color dtt_cl9 = input.color(color.new(color.red, 0), "لون کل 9 نبضات (تغییر جذری)", group=dtt_grpD) int dtt_w369 = input.int(2, "سُمک خطوط 3-6-9", minval=1, maxval=5, group=dtt_grpD) // اللابلز bool dtt_showLabels = input.bool(true, "إظهار لابلز للخطوط", group=dtt_grpE) int dtt_lblSizeSel = input.int(10, "حجم خط اللابل", minval=8, maxval=16, group=dtt_grpE) int dtt_lblOffsetPx = input.int(20, "إزاحة رأسیة للّابل (بیکسل)", minval=0, maxval=100, group=dtt_grpE) bool dtt_showQuarterBg= input.bool(false, "تلوین خفیف لخلفیات الأرباع", group=dtt_grpE) color dtt_quarterBgCol = input.color(color.new(color.teal, 90), "لون خلفیة الربع", group=dtt_grpE) //----------------------------- // ⏱️ ثوابت زمنیة (بالمیلی ثانیة) //----------------------------- int dtt_msMinute = 60 * 1000 int dtt_msBeat = int(math.round(22.5 * dtt_msMinute)) // 22.5 دقیقة int dtt_ms90 = 90 * dtt_msMinute // 90 دقیقة int dtt_ms6h = 6 * 60 * dtt_msMinute // 6 ساعات //----------------------------- // 🧠 دوال مساعدة //----------------------------- var string dtt__tzTmp = dtt_tzNy // ✅ النسخة الصحیحة للدالة (بدون {} ) dtt_getAnchorForBar(_barTime) => nyY = year(_barTime, dtt__tzTmp) nyMo = month(_barTime, dtt__tzTmp) nyD = dayofmonth(_barTime, dtt__tzTmp) anchorToday = timestamp(dtt__tzTmp, nyY, nyMo, nyD, dtt_startH, dtt_startM) anchorPrev = anchorToday - 24 * 60 * 60 * 1000 _barTime >= anchorToday ? anchorToday : anchorPrev // هل عبرنا مضاعفاً جدیداً للفاصل الزمنی؟ dtt_crossedStep(_anchor, _intervalMs) => prevK = math.floor((nz(time [1]) - _anchor) / _intervalMs) nowK = math.floor((time - _anchor) / _intervalMs) nowK > prevK // یرسم خط عمودی کامل عند لحظة t dtt_makeVLine(t, col, w) => line.new(x1=t, y1= 10e10, x2=t, y2=-10e10, xloc=xloc.bar_time, extend=dtt_extendFuture ? extend.both : extend.none, color=col, width=w) // لابل dtt_makeLabel(t, txt, col) => label.new(x=t, y=high + ta.atr(14), xloc=xloc.bar_time, style=label.style_label_down, text=txt, textcolor=color.white, color=col, size=size.tiny, tooltip=txt) // خلفیة ربع (اختیاری) dtt_drawQuarterBox(t0, t1, c) => yLow = ta.lowest(low, 300) yHigh = ta.highest(high, 300) box.new(left=t0, top=yHigh, right=t1, bottom=yLow, xloc=xloc.bar_time, bgcolor=c, border_color=color.new(c, 100)) //----------------------------- // 🧩 المنطق الرئیسی //----------------------------- dtt_anchor = dtt_getAnchorForBar(time) dtt_delta = time - dtt_anchor //--------------- خطوط 22.5 دقیقة --------------- if dtt_show22m5 and dtt_delta >= 0 and dtt_crossedStep(dtt_anchor, dtt_msBeat) k = math.floor((time - dtt_anchor) / dtt_msBeat) tK = dtt_anchor + k * dtt_msBeat colBeat = dtt_clBeat wBeat = dtt_wBeat if dtt_mark369 step = (k + 1) is9 = step % 9 == 0 is6 = not is9 and step % 6 == 0 is3 = not is9 and not is6 and step % 3 == 0 colBeat := is9 ? dtt_cl9 : is6 ? dtt_cl6 : is3 ? dtt_cl3 : dtt_clBeat wBeat := is9 or is6 or is3 ? dtt_w369 : dtt_wBeat dtt_makeVLine(tK, colBeat, wBeat) if dtt_showLabels tag = dtt_mark369 ? "نبضة " + str.tostring(k + 1) : "22.5m" dtt_makeLabel(tK, tag, color.new(colBeat, 0)) //--------------- خطوط 90 دقیقة --------------- if dtt_show90m and dtt_delta >= 0 and dtt_crossedStep(dtt_anchor, dtt_ms90) m = math.floor((time - dtt_anchor) / dtt_ms90) tM = dtt_anchor + m * dtt_ms90 dtt_makeVLine(tM, dtt_cl90, dtt_w90) if dtt_showLabels tag90 = "90m #" + str.tostring(m) dtt_makeLabel(tM, tag90, color.new(dtt_cl90, 0)) //--------------- خطوط 6 ساعات (الأرباع) + خلفیات --------------- var int dtt_lastQuarterStart = na if dtt_showQuarter and dtt_delta >= 0 and dtt_crossedStep(dtt_anchor, dtt_ms6h) q = math.floor((time - dtt_anchor) / dtt_ms6h) tQ = dtt_anchor + q * dtt_ms6h dtt_makeVLine(tQ, dtt_clQuarter, dtt_wQuarter) if dtt_showLabels qInDay = q % 4 qName = qInDay == 0 ? "Q1" : qInDay == 1 ? "Q2" : qInDay == 2 ? "Q3" : "Q4" dtt_makeLabel(tQ, "ربع " + qName, color.new(dtt_clQuarter, 0)) if dtt_showQuarterBg if not na(dtt_lastQuarterStart) dtt_drawQuarterBox(dtt_lastQuarterStart, tQ, dtt_quarterBgCol) dtt_lastQuarterStart := tQ if barstate.isfirst and dtt_showQuarterBg and dtt_delta >= 0 q0 = math.floor((time - dtt_anchor) / dtt_ms6h) dtt_lastQuarterStart := dtt_anchor + q0 * dtt_ms6h if dtt_showQuarterBg and not na(dtt_lastQuarterStart) dtt_drawQuarterBox(dtt_lastQuarterStart, time, dtt_quarterBgCol) //----------------------------- // ℹ️ تلمیح مرئی أعلى الشارت //----------------------------- var label dtt_hdr = na if barstate.islast string hdrTxt = "DTT • Start: " + str.tostring(dtt_startH, "00") + ":" + str.tostring(dtt_startM, "00") + " • TZ: " + dtt_tzNy + "\n" +"Quarter: 6h | Wave: 90m | Beat: 22.5m" if na(dtt_hdr) dtt_hdr := label.new(bar_index, na, hdrTxt, xloc=xloc.bar_index, yloc=yloc.abovebar, textcolor=color.white, color=color.new(color.black, 85), size=size.small, style=label.style_label_left) else label.set_x(dtt_hdr, bar_index) label.set_text(dtt_hdr, hdrTxt)
Sorumluluk Reddi
Sahmeto'nun web sitesinde ve resmi iletişim kanallarında yer alan herhangi bir içerik ve materyal, kişisel görüşlerin ve analizlerin bir derlemesidir ve bağlayıcı değildir. Borsa ve kripto para piyasasına alım, satım, giriş veya çıkış için herhangi bir tavsiye oluşturmazlar. Ayrıca, web sitesinde ve kanallarda yer alan tüm haberler ve analizler, yalnızca resmi ve gayri resmi yerli ve yabancı kaynaklardan yeniden yayınlanan bilgilerdir ve söz konusu içeriğin kullanıcılarının materyallerin orijinalliğini ve doğruluğunu takip etmekten ve sağlamaktan sorumlu olduğu açıktır. Bu nedenle, sorumluluk reddedilirken, sermaye piyasası ve kripto para piyasasındaki herhangi bir karar verme, eylem ve olası kar ve zarar sorumluluğunun yatırımcıya ait olduğu beyan edilir.