//version=5indicator("ict STORM", overlay = true, max_labels_count = 500)//Settingslength = input(10, 'ATR Length')minMult = input.int(1, 'Factor Range', minval = 0, inline = 'factor')maxMult = input.int(5, '', minval = 0, inline = 'factor')step = input.float(.5, 'Step', minval = 0, step = 0.1)if minMult > maxMult runtime.error('Minimum factor is greater than maximum factor in the range')perfAlpha = input.float(10, 'Performance Memory', minval = 2)fromCluster = input.string('Best', 'From Cluster', options = ['Best', 'Average', 'Worst'])maxIter = input.int(1000, 'Maximum Iteration Steps', minval = 0, group = 'Optimization')maxData = input.int(10000, 'Historical Bars Calculation', minval = 0, group = 'Optimization')// إعدادات عرض الخطوطentryLineWidth = input.int(2, title="Entry Line Width", minval=1)stopLossLineWidth = input.int(2, title="Stop Loss Line Width", minval=1)takeProfitLineWidth = input.int(2, title="Take Profit Line Width", minval=1)// إعدادات طول الخطوطlineLength = input.int(5, title="Line Length", minval=1)// إعدادات خلفیة الصفقاتboxLength = input.int(5, title="Box Length", minval=1)bearCss = input(color.red, 'Trailing Stop', inline = 'ts', group = 'Style')bullCss = input(color.teal, '', inline = 'ts', group = 'Style')// إعدادات الخلفیاتbgColorStopLoss = input(color.new(color.red, 90), "Stop Loss Background")bgColorTakeProfit = input(color.new(color.green, 90), "Take Profit Background")// إعدادات التحکم فی حجم الخسارة والربحstopLossMultiplier = input(2.0, title="Stop Loss (ATR Multiplier)")takeProfitMultiplier = input(3.0, title="Take Profit (ATR Multiplier)")// إعدادات التحکم فی ارتفاع إشارات البیع والشراءbuySignalHeight = input.float(1.5, title="Buy Signal Height", minval=0)sellSignalHeight = input.float(1.5, title="Sell Signal Height", minval=0)// UDTStype supertrend float upper = hl2 float lower = hl2 float output float perf = 0 float factor int trend = 0type vector array outvar holder = array.new(0)var factors = array.new(0)if barstate.isfirst for i = 0 to int((maxMult - minMult) / step) factors.push(minMult + i * step) holder.push(supertrend.new())atr = ta.atr(length)k = 0for factor in factors get_spt = holder.get(k) up = hl2 + atr * factor dn = hl2 - atr * factor get_spt.trend := close > get_spt.upper ? 1 : close < get_spt.lower ? 0 : get_spt.trend get_spt.upper := close[1] < get_spt.upper ? math.min(up, get_spt.upper) : up get_spt.lower := close[1] > get_spt.lower ? math.max(dn, get_spt.lower) : dn diff = nz(math.sign(close[1] - get_spt.output)) get_spt.perf += 2/(perfAlpha+1) * (nz(close - close[1]) * diff - get_spt.perf) get_spt.output := get_spt.trend == 1 ? get_spt.lower : get_spt.upper get_spt.factor := factor k += 1factor_array = array.new(0)data = array.new(0)if last_bar_index - bar_index <= maxData for element in holder data.push(element.perf) factor_array.push(element.factor)centroids = array.new(0)centroids.push(data.percentile_linear_interpolation(25))centroids.push(data.percentile_linear_interpolation(50))centroids.push(data.percentile_linear_interpolation(75))var array factors_clusters = navar array perfclusters = naif last_bar_index - bar_index <= maxData for _ = 0 to maxIter factors_clusters := array.from(vector.new(array.new(0)), vector.new(array.new(0)), vector.new(array.new(0))) perfclusters := array.from(vector.new(array.new(0)), vector.new(array.new(0)), vector.new(array.new(0))) i = 0 for value in data dist = array.new(0) for centroid in centroids dist.push(math.abs(value - centroid)) idx = dist.indexof(dist.min()) perfclusters.get(idx).out.push(value) factors_clusters.get(idx).out.push(factor_array.get(i)) i += 1 new_centroids = array.new(0) for cluster_ in perfclusters new_centroids.push(cluster_.out.avg()) if new_centroids.get(0) == centroids.get(0) and new_centroids.get(1) == centroids.get(1) and new_centroids.get(2) == centroids.get(2) break centroids := new_centroidsvar float target_factor = navar float perf_idx = navar from = switch fromCluster 'Best' => 2 'Average' => 1 'Worst' => 0den = ta.ema(math.abs(close - close[1]), int(perfAlpha))if not na(perfclusters) target_factor := nz(factors_clusters.get(from).out.avg(), target_factor) perf_idx := math.max(nz(perfclusters.get(from).out.avg()), 0) / denvar upper = hl2var lower = hl2var os = 0up = hl2 + atr * target_factordn = hl2 - atr * target_factorupper := close[1] < upper ? math.min(up, upper) : uplower := close[1] > lower ? math.max(dn, lower) : dnos := close > upper ? 1 : close < lower ? 0 : os// إعداد متغیرات للصفقات والخلفیاتvar line[] stopLossLines = array.new_line()var line[] takeProfitLines = array.new_line()var line[] entryLines = array.new_line()var box[] boxes = array.new_box()// إعدادات لإظهار SL و TPshowSLTP = input(true, "Show SL/TP Labels")// إشارات الشراء والبیعif os > os[1] and os[1] == 0 entryPrice = close stopLoss = entryPrice - stopLossMultiplier * atr takeProfit = entryPrice + takeProfitMultiplier * atr entryLine = line.new(bar_index, entryPrice, bar_index + lineLength, entryPrice, color=color.blue, width=entryLineWidth) stopLossLine = line.new(bar_index, stopLoss, bar_index + lineLength, stopLoss, color=color.red, width=stopLossLineWidth) takeProfitLine = line.new(bar_index, takeProfit, bar_index + lineLength, takeProfit, color=color.green, width=takeProfitLineWidth) boxEntry = box.new(bar_index, stopLoss, bar_index + boxLength, takeProfit, border_color=color.new(color.white, 100)) box.set_bgcolor(boxEntry, bgColorTakeProfit) // إضافة نصوص SL و TP على الجانب الأیمن بلون أبیض وبدون أیقونة إذا تم تفعیلها if showSLTP label.new(bar_index + lineLength, stopLoss, "SL", textcolor=color.white, textalign=text.align_right, size=size.small) label.new(bar_index + lineLength, takeProfit, "TP", textcolor=color.white, textalign=text.align_right, size=size.small) array.push(entryLines, entryLine) array.push(stopLossLines, stopLossLine) array.push(takeProfitLines, takeProfitLine) array.push(boxes, boxEntry) label.new(bar_index, low - buySignalHeight, "شـراء", color = bullCss, style = label.style_label_up, textcolor = color.white, size = size.tiny) alert("شراء Signal", alert.freq_once_per_bar_close)if os < os[1] and os[1] == 1 entryPrice = close stopLoss = entryPrice + stopLossMultiplier * atr takeProfit = entryPrice - takeProfitMultiplier * atr entryLine = line.new(bar_index, entryPrice, bar_index + lineLength, entryPrice, color=color.blue, width=entryLineWidth) stopLossLine = line.new(bar_index, stopLoss, bar_index + lineLength, stopLoss, color=color.red, width=stopLossLineWidth) takeProfitLine = line.new(bar_index, takeProfit, bar_index + lineLength, takeProfit, color=color.green, width=takeProfitLineWidth) boxEntry = box.new(bar_index, takeProfit, bar_index + boxLength, stopLoss, border_color=color.new(color.white, 100)) box.set_bgcolor(boxEntry, bgColorStopLoss) // إضافة نصوص SL و TP على الجانب الأیمن بلون أبیض وبدون أیقونة إذا تم تفعیلها if showSLTP label.new(bar_index + lineLength, stopLoss, "SL", textcolor=color.white, textalign=text.align_right, size=size.small) label.new(bar_index + lineLength, takeProfit, "TP", textcolor=color.white, textalign=text.align_right, size=size.small) array.push(entryLines, entryLine) array.push(stopLossLines, stopLossLine) array.push(takeProfitLines, takeProfitLine) array.push(boxes, boxEntry) label.new(bar_index, high + sellSignalHeight, "بیـع", color = bearCss, style = label.style_label_down, textcolor = color.white, size = size.tiny) alert("بیع Signal", alert.freq_once_per_bar_close)// ---------------------------------------- Inputs --------------------------------------------------var GENERAL_SETTINGS = "General Settings"max_days = input.int(5, "Limit Days to Draw", 1, group = GENERAL_SETTINGS)max_timeframe = input.timeframe("5", "Timeframe Limit", group = GENERAL_SETTINGS)gmt_timezone = input.string('GMT-5', "Timezone", options = ['GMT-12','GMT-11','GMT-10','GMT-9','GMT-8','GMT-7','GMT-6','GMT-5','GMT-4','GMT-3','GMT-2','GMT-1','GMT+0','GMT+1','GMT+2','GMT+3','GMT+4','GMT+5','GMT+6','GMT+7','GMT+8','GMT+9','GMT+10','GMT+11','GMT+12'], group = GENERAL_SETTINGS)var MACROS_SETTINGS = "Macros Settings"show_macros = input.bool(true, "Show Macros Boxes", inline = "Macros", group = MACROS_SETTINGS)show_macros_text = input.bool(true, "Display Text", inline = "Macros", group = MACROS_SETTINGS)macros_transparency = input.int(80, "Macros Transparency", 0, 100, group = MACROS_SETTINGS)use_m0 = input.bool(true, "Macro 0", inline = "Macro0", group = MACROS_SETTINGS)m0 = input.session("2050-2110", "", inline = "Macro0", group = MACROS_SETTINGS)m0_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro0", group = MACROS_SETTINGS)use_m1 = input.bool(true, "Macro 1", inline = "Macro1", group = MACROS_SETTINGS)m1 = input.session("2120-2140", "", inline = "Macro1", group = MACROS_SETTINGS)m1_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro1", group = MACROS_SETTINGS)use_m2 = input.bool(true, "Macro 2", inline = "Macro2", group = MACROS_SETTINGS)m2 = input.session("2150-2210", "", inline = "Macro2", group = MACROS_SETTINGS)m2_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro2", group = MACROS_SETTINGS)use_m3 = input.bool(true, "Macro 3", inline = "Macro3", group = MACROS_SETTINGS)m3 = input.session("2220-2240", "", inline = "Macro3", group = MACROS_SETTINGS)m3_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro3", group = MACROS_SETTINGS)use_m4 = input.bool(true, "Macro 4", inline = "Macro4", group = MACROS_SETTINGS)m4 = input.session("2250-2310", "", inline = "Macro4", group = MACROS_SETTINGS)m4_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro4", group = MACROS_SETTINGS)use_m5 = input.bool(true, "Macro 5", inline = "Macro5", group = MACROS_SETTINGS)m5 = input.session("2320-2340", "", inline = "Macro5", group = MACROS_SETTINGS)m5_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro5", group = MACROS_SETTINGS)use_m6 = input.bool(true, "Macro 6", inline = "Macro6", group = MACROS_SETTINGS)m6 = input.session("2350-0010", "", inline = "Macro6", group = MACROS_SETTINGS)m6_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro6", group = MACROS_SETTINGS)use_m7 = input.bool(true, "Macro 7", inline = "Macro7", group = MACROS_SETTINGS)m7 = input.session("0020-0040", "", inline = "Macro7", group = MACROS_SETTINGS)m7_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro7", group = MACROS_SETTINGS)use_m8 = input.bool(true, "Macro 8", inline = "Macro8", group = MACROS_SETTINGS)m8 = input.session("0050-0110", "", inline = "Macro8", group = MACROS_SETTINGS)m8_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro8", group = MACROS_SETTINGS)use_m9 = input.bool(true, "Macro 9", inline = "Macro9", group = MACROS_SETTINGS)m9 = input.session("0120-0140", "", inline = "Macro9", group = MACROS_SETTINGS)m9_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro9", group = MACROS_SETTINGS)use_m10 = input.bool(true, "Macro 10", inline = "Macro10", group = MACROS_SETTINGS)m10 = input.session("0150-0210", "", inline = "Macro10", group = MACROS_SETTINGS)m10_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro10", group = MACROS_SETTINGS)use_m11 = input.bool(true, "Macro 11", inline = "Macro11", group = MACROS_SETTINGS)m11 = input.session("0220-0240", "", inline = "Macro11", group = MACROS_SETTINGS)m11_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro11", group = MACROS_SETTINGS)use_m12 = input.bool(true, "Macro 12", inline = "Macro12", group = MACROS_SETTINGS)m12 = input.session("0250-0310", "", inline = "Macro12", group = MACROS_SETTINGS)m12_color = input.color(color.rgb(99, 100, 100, 80), "", inline = "Macro12", group = MACROS_SETTINGS)use_m13 = input.bool(true, "Macro 13", inline = "Macro13", group = MACROS_SETTINGS)m13 = input.session("0320-0340", "", inline = "Macro13", group = MACROS_SETTINGS)m13_color = input.color(color.rgb(99, 100, 100, 80), "", inline = "Macro13", group = MACROS_SETTINGS)use_m14 = input.bool(true, "Macro 14", inline = "Macro14", group = MACROS_SETTINGS)m14 = input.session("0350-0410", "", inline = "Macro14", group = MACROS_SETTINGS)m14_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro`14", group = MACROS_SETTINGS)use_m15 = input.bool(true, "Macro 15", inline = "Macro15", group = MACROS_SETTINGS)m15 = input.session("0420-0440", "", inline = "Macro15", group = MACROS_SETTINGS)m15_color = input.color(color.rgb(102, 102, 102, 80), "", inline = "Macro15", group = MACROS_SETTINGS)use_m16 = input.bool(true, "Macro 16", inline = "Macro16", group = MACROS_SETTINGS)m16 = input.session("0450-0510", "", inline = "Macro16", group = MACROS_SETTINGS)m16_color = input.color(color.rgb(99, 99, 99, 80), "", inline = "Macro16", group = MACROS_SETTINGS)use_m17 = input.bool(true, "Macro 17", inline = "Macro17", group = MACROS_SETTINGS)m17 = input.session("0520-0540", "", inline = "Macro17", group = MACROS_SETTINGS)m17_color = input.color(color.rgb(100, 102, 104, 80), "", inline = "Macro17", group = MACROS_SETTINGS)use_m18 = input.bool(true, "Macro 18", inline = "Macro18", group = MACROS_SETTINGS)m18 = input.session("0550-0610", "", inline = "Macro18", group = MACROS_SETTINGS)m18_color = input.color(color.rgb(141, 21, 141, 80), "", inline = "Macro18", group = MACROS_SETTINGS)use_m19 = input.bool(true, "Macro 19", inline = "Macro19", group = MACROS_SETTINGS)m19 = input.session("0620-0640", "", inline = "Macro19", group = MACROS_SETTINGS)m19_color = input.color(color.rgb(9, 109, 209, 80), "", inline = "Macro19", group = MACROS_SETTINGS)use_m20 = input.bool(true, "Macro 20", inline = "Macro20", group = MACROS_SETTINGS)m20 = input.session("0650-0710", "", inline = "Macro20", group = MACROS_SETTINGS)m20_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro20", group = MACROS_SETTINGS)use_m21 = input.bool(true, "Macro 21", inline = "Macro21", group = MACROS_SETTINGS)m21 = input.session("0720-0740", "", inline = "Macro21", group = MACROS_SETTINGS)m21_color = input.color(color.rgb(100, 102, 104, 80), "", inline = "Macro21", group = MACROS_SETTINGS)use_m22 = input.bool(true, "Macro 22", inline = "Macro22", group = MACROS_SETTINGS)m22 = input.session("0750-0810", "", inline = "Macro22", group = MACROS_SETTINGS)m22_color = input.color(color.rgb(99, 99, 99, 80), "", inline = "Macro22", group = MACROS_SETTINGS)use_m23 = input.bool(true, "Macro 23", inline = "Macro23", group = MACROS_SETTINGS)m23 = input.session("0820-0840", "", inline = "Macro23", group = MACROS_SETTINGS)m23_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro23", group = MACROS_SETTINGS)use_m24 = input.bool(true, "Macro 24", inline = "Macro24", group = MACROS_SETTINGS)m24 = input.session("0850-0910", "", inline = "Macro24", group = MACROS_SETTINGS)m24_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro24", group = MACROS_SETTINGS)use_m25 = input.bool(true, "Macro 25", inline = "Macro25", group = MACROS_SETTINGS)m25 = input.session("0920-0940", "", inline = "Macro25", group = MACROS_SETTINGS)m25_color = input.color(color.rgb(100, 101, 102, 80), "", inline = "Macro25", group = MACROS_SETTINGS)use_m26 = input.bool(true, "Macro 26", inline = "Macro26", group = MACROS_SETTINGS)m26 = input.session("0950-1010", "", inline = "Macro26", group = MACROS_SETTINGS)m26_color = input.color(color.rgb(100, 97, 100, 80), "", inline = "Macro26", group = MACROS_SETTINGS)use_m27 = input.bool(true, "Macro 27", inline = "Macro27", group = MACROS_SETTINGS)m27 = input.session("1020-1040", "", inline = "Macro27", group = MACROS_SETTINGS)m27_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro27", group = MACROS_SETTINGS)use_m28 = input.bool(true, "Macro 28", inline = "Macro28", group = MACROS_SETTINGS)m28 = input.session("1050-1110", "", inline = "Macro28", group = MACROS_SETTINGS)m28_color = input.color(color.rgb(100, 101, 102, 80), "", inline = "Macro28", group = MACROS_SETTINGS)use_m29 = input.bool(true, "Macro 29", inline = "Macro29", group = MACROS_SETTINGS)m29 = input.session("1120-1140", "", inline = "Macro29", group = MACROS_SETTINGS)m29_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro29", group = MACROS_SETTINGS)use_m30 = input.bool(true, "Macro 30", inline = "Macro30", group = MACROS_SETTINGS)m30 = input.session("1250-1310", "", inline = "Macro30", group = MACROS_SETTINGS)m30_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro30", group = MACROS_SETTINGS)use_m31 = input.bool(true, "Macro 31", inline = "Macro31", group = MACROS_SETTINGS)m31 = input.session("1320-1340", "", inline = "Macro31", group = MACROS_SETTINGS)m31_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro31", group = MACROS_SETTINGS)use_m32 = input.bool(true, "Macro 32", inline = "Macro32", group = MACROS_SETTINGS)m32 = input.session("1350-1410", "", inline = "Macro32", group = MACROS_SETTINGS)m32_color = input.color(color.rgb(100, 101, 102, 80), "", inline = "Macro32", group = MACROS_SETTINGS)use_m33 = input.bool(true, "Macro 33", inline = "Macro33", group = MACROS_SETTINGS)m33 = input.session("1420-1440", "", inline = "Macro33", group = MACROS_SETTINGS)m33_color = input.color(color.rgb(100, 100, 100, 80), "", inline = "Macro33", group = MACROS_SETTINGS)use_m34 = input.bool(true, "Macro 34", inline = "Macro34", group = MACROS_SETTINGS)m34 = input.session("1450-1510", "", inline = "Macro34", group = MACROS_SETTINGS)m34_color = input.color(color.rgb(100, 101, 102, 80), "", inline = "Macro34", group = MACROS_SETTINGS)use_m35 = input.bool(true, "Macro 35", inline = "Macro35", group = MACROS_SETTINGS)m35 = input.session("1520-1540", "", inline = "Macro35", group = MACROS_SETTINGS)m35_color = input.color(color.rgb(100, 97, 100, 80), "", inline = "Macro35", group = MACROS_SETTINGS)use_m36 = input.bool(true, "Macro 36", inline = "Macro36", group = MACROS_SETTINGS)m36 = input.session("1550-1610", "", inline = "Macro36", group = MACROS_SETTINGS)m36_color = input.color(color.rgb(101, 101, 102, 80), "", inline = "Macro36", group = MACROS_SETTINGS)// ---------------------------------------- Inputs --------------------------------------------------// ---------------------------------------- Variables & Constants --------------------------------------------------m0_time = not na(time("", m0, gmt_timezone))m1_time = not na(time("", m1, gmt_timezone))m2_time = not na(time("", m2, gmt_timezone))m3_time = not na(time("", m3, gmt_timezone))m4_time = not na(time("", m4, gmt_timezone))m5_time = not na(time("", m5, gmt_timezone))m6_time = not na(time("", m6, gmt_timezone))m7_time = not na(time("", m7, gmt_timezone))m8_time = not na(time("", m8, gmt_timezone))m9_time = not na(time("", m9, gmt_timezone))m10_time = not na(time("", m10, gmt_timezone))m11_time = not na(time("", m11, gmt_timezone))m12_time = not na(time("", m12, gmt_timezone))m13_time = not na(time("", m13, gmt_timezone))m14_time = not na(time("", m14, gmt_timezone))m15_time = not na(time("", m15, gmt_timezone))m16_time = not na(time("", m16, gmt_timezone))m17_time = not na(time("", m17, gmt_timezone))m18_time = not na(time("", m18, gmt_timezone))m19_time = not na(time("", m19, gmt_timezone))m20_time = not na(time("", m20, gmt_timezone))m21_time = not na(time("", m21, gmt_timezone))m22_time = not na(time("", m22, gmt_timezone))m23_time = not na(time("", m23, gmt_timezone))m24_time = not na(time("", m24, gmt_timezone))m25_time = not na(time("", m25, gmt_timezone))m26_time = not na(time("", m26, gmt_timezone))m27_time = not na(time("", m27, gmt_timezone))m28_time = not na(time("", m28, gmt_timezone))m29_time = not na(time("", m29, gmt_timezone))m30_time = not na(time("", m30, gmt_timezone))m31_time = not na(time("", m31, gmt_timezone))m32_time = not na(time("", m32, gmt_timezone))m33_time = not na(time("", m33, gmt_timezone))m34_time = not na(time("", m34, gmt_timezone))m35_time = not na(time("", m35, gmt_timezone))m36_time = not na(time("", m36, gmt_timezone))var m0_box = array.new_box()var m1_box = array.new_box()var m2_box = array.new_box()var m3_box = array.new_box()var m4_box = array.new_box()var m5_box = array.new_box()var m6_box = array.new_box()var m7_box = array.new_box()var m8_box = array.new_box()var m9_box = array.new_box()var m10_box = array.new_box()var m11_box = array.new_box()var m12_box = array.new_box()var m13_box = array.new_box()var m14_box = array.new_box()var m15_box = array.new_box()var m16_box = array.new_box()var m17_box = array.new_box()var m18_box = array.new_box()var m19_box = array.new_box()var m20_box = array.new_box()var m21_box = array.new_box()var m22_box = array.new_box()var m23_box = array.new_box()var m24_box = array.new_box()var m25_box = array.new_box()var m26_box = array.new_box()var m27_box = array.new_box()var m28_box = array.new_box()var m29_box = array.new_box()var m30_box = array.new_box()var m31_box = array.new_box()var m32_box = array.new_box()var m33_box = array.new_box()var m34_box = array.new_box()var m35_box = array.new_box()var m36_box = array.new_box()m0_text = ""m1_text = ""m2_text = ""m3_text = ""m4_text = ""m5_text = ""m6_text = ""m7_text = ""m8_text = ""m9_text = ""m10_text = ""m11_text = ""m12_text = ""m13_text = ""m14_text = ""m15_text = ""m16_text = ""m17_text = ""m18_text = ""m19_text = ""m20_text = ""m21_text = ""m22_text = ""m23_text = ""m24_text = ""m25_text = ""m26_text = ""m27_text = ""m28_text = ""m29_text = ""m30_text = ""m31_text = ""m32_text = ""m33_text = ""m34_text = ""m35_text = ""m36_text = ""m0_color := color.new(m0_color, macros_transparency)m1_color := color.new(m1_color, macros_transparency)m2_color := color.new(m2_color, macros_transparency)m3_color := color.new(m3_color, macros_transparency)m4_color := color.new(m4_color, macros_transparency)m5_color := color.new(m5_color, macros_transparency)m6_color := color.new(m6_color, macros_transparency)m7_color := color.new(m7_color, macros_transparency)m8_color := color.new(m8_color, macros_transparency)m9_color := color.new(m9_color, macros_transparency)m10_color := color.new(m10_color, macros_transparency)m11_color := color.new(m11_color, macros_transparency)m12_color := color.new(m12_color, macros_transparency)m13_color := color.new(m13_color, macros_transparency)m14_color := color.new(m14_color, macros_transparency)m15_color := color.new(m15_color, macros_transparency)m16_color := color.new(m16_color, macros_transparency)m17_color := color.new(m17_color, macros_transparency)m18_color := color.new(m18_color, macros_transparency)m19_color := color.new(m19_color, macros_transparency)m20_color := color.new(m20_color, macros_transparency)m21_color := color.new(m21_color, macros_transparency)m22_color := color.new(m22_color, macros_transparency)m23_color := color.new(m23_color, macros_transparency)m24_color := color.new(m24_color, macros_transparency)m25_color := color.new(m25_color, macros_transparency)m26_color := color.new(m26_color, macros_transparency)m27_color := color.new(m27_color, macros_transparency)m28_color := color.new(m28_color, macros_transparency)m29_color := color.new(m29_color, macros_transparency)m30_color := color.new(m30_color, macros_transparency)m31_color := color.new(m31_color, macros_transparency)m32_color := color.new(m32_color, macros_transparency)m33_color := color.new(m33_color, macros_transparency)m34_color := color.new(m34_color, macros_transparency)m35_color := color.new(m35_color, macros_transparency)m36_color := color.new(m36_color, macros_transparency)// ---------------------------------------- Variables & Constants --------------------------------------------------// ---------------------------------------- Functions --------------------------------------------------adjust(_box) => _box.set_right(bar_index) _top = _box.get_top() _bot = _box.get_bottom() if high > _top _box.set_top(high) if low < _bot _box.set_bottom(low)check_array(_arr) => if _arr.size() > max_days _arr.pop().delete()// ---------------------------------------- Functions --------------------------------------------------// ---------------------------------------- Core Logic --------------------------------------------------if timeframe.in_seconds("") <= timeframe.in_seconds(max_timeframe) // Macro 0 if use_m0 if m0_time and not m0_time[1] if show_macros m0_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m0_color, bgcolor = m0_color, text = show_macros_text ? m0_text : na, text_color = m0_color)) else if m0_time adjust(m0_box.get(0)) // Macro 1 if use_m1 if m1_time and not m1_time[1] if show_macros m1_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m1_color, bgcolor = m1_color, text = show_macros_text ? m1_text : na, text_color = m1_color)) else if m1_time adjust(m1_box.get(0)) // Macro 2 if use_m2 if m2_time and not m2_time[1] if show_macros m2_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m2_color, bgcolor = m2_color, text = show_macros_text ? m2_text : na, text_color = m2_color)) else if m2_time adjust(m2_box.get(0)) // Macro 3 if use_m3 if m3_time and not m3_time[1] if show_macros m3_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m3_color, bgcolor = m3_color, text = show_macros_text ? m3_text : na, text_color = m3_color)) else if m3_time adjust(m3_box.get(0)) // Macro 4 if use_m4 if m4_time and not m4_time[1] if show_macros m4_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m4_color, bgcolor = m4_color, text = show_macros_text ? m4_text : na, text_color = m4_color)) else if m4_time adjust(m4_box.get(0)) // Macro 5 if use_m5 if m5_time and not m5_time[1] if show_macros m5_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m5_color, bgcolor = m5_color, text = show_macros_text ? m5_text : na, text_color = m5_color)) else if m5_time adjust(m5_box.get(0)) // Macro 6 if use_m6 if m6_time and not m6_time[1] if show_macros m6_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m6_color, bgcolor = m6_color, text = show_macros_text ? m6_text : na, text_color = m6_color)) else if m6_time adjust(m6_box.get(0)) // Macro 7 if use_m7 if m7_time and not m7_time[1] if show_macros m7_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m7_color, bgcolor = m7_color, text = show_macros_text ? m7_text : na, text_color = m7_color)) else if m7_time adjust(m7_box.get(0)) // Macro 8 if use_m8 if m8_time and not m8_time[1] if show_macros m8_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m8_color, bgcolor = m8_color, text = show_macros_text ? m8_text : na, text_color = m8_color)) else if m8_time adjust(m8_box.get(0)) // Macro 9 if use_m9 if m9_time and not m9_time[1] if show_macros m9_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m9_color, bgcolor = m9_color, text = show_macros_text ? m9_text : na, text_color = m9_color)) else if m9_time adjust(m9_box.get(0)) // Macro 10 if use_m10 if m10_time and not m10_time[1] if show_macros m10_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m10_color, bgcolor = m10_color, text = show_macros_text ? m10_text : na, text_color = m10_color)) else if m10_time adjust(m10_box.get(0)) // Macro 11 if use_m11 if m11_time and not m11_time[1] if show_macros m11_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m11_color, bgcolor = m11_color, text = show_macros_text ? m11_text : na, text_color = m11_color)) else if m11_time adjust(m11_box.get(0)) // Macro 12 if use_m12 if m12_time and not m12_time[1] if show_macros m12_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m12_color, bgcolor = m12_color, text = show_macros_text ? m12_text : na, text_color = m12_color)) else if m12_time adjust(m12_box.get(0)) // Macro 13 if use_m13 if m13_time and not m13_time[1] if show_macros m13_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m13_color, bgcolor = m13_color, text = show_macros_text ? m13_text : na, text_color = m13_color)) else if m13_time adjust(m13_box.get(0)) // Macro 14 if use_m14 if m14_time and not m14_time[1] if show_macros m14_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m14_color, bgcolor = m14_color, text = show_macros_text ? m14_text : na, text_color = m14_color)) else if m14_time adjust(m14_box.get(0)) // Macro 15 if use_m15 if m15_time and not m15_time[1] if show_macros m15_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m15_color, bgcolor = m15_color, text = show_macros_text ? m15_text : na, text_color = m15_color)) else if m15_time adjust(m15_box.get(0)) // Macro 16 if use_m16 if m16_time and not m16_time[1] if show_macros m16_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m16_color, bgcolor = m16_color, text = show_macros_text ? m16_text : na, text_color = m16_color)) else if m16_time adjust(m16_box.get(0)) // Macro 17 if use_m17 if m17_time and not m17_time[1] if show_macros m17_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m17_color, bgcolor = m17_color, text = show_macros_text ? m17_text : na, text_color = m17_color)) else if m17_time adjust(m17_box.get(0)) // Macro 20 if use_m20 if m20_time and not m20_time[1] if show_macros m20_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m20_color, bgcolor = m20_color, text = show_macros_text ? m20_text : na, text_color = m20_color)) else if m20_time adjust(m20_box.get(0)) // Macro 21 if use_m21 if m21_time and not m21_time[1] if show_macros m21_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m21_color, bgcolor = m21_color, text = show_macros_text ? m21_text : na, text_color = m21_color)) else if m21_time adjust(m21_box.get(0)) // Macro 22 if use_m22 if m22_time and not m22_time[1] if show_macros m22_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m22_color, bgcolor = m22_color, text = show_macros_text ? m22_text : na, text_color = m22_color)) else if m22_time adjust(m22_box.get(0)) // Macro 23 if use_m23 if m23_time and not m23_time[1] if show_macros m23_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m23_color, bgcolor = m23_color, text = show_macros_text ? m23_text : na, text_color = m23_color)) else if m23_time adjust(m23_box.get(0)) // Macro 24 if use_m24 if m24_time and not m24_time[1] if show_macros m24_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m24_color, bgcolor = m24_color, text = show_macros_text ? m24_text : na, text_color = m24_color)) else if m24_time adjust(m24_box.get(0))// Macro 25if use_m25 if m25_time and not m25_time[1] if show_macros m25_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m25_color, bgcolor = m25_color, text = show_macros_text ? m25_text : na, text_color = m25_color)) else if m25_time adjust(m25_box.get(0))// Macro 26if use_m26 if m26_time and not m26_time[1] if show_macros m26_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m26_color, bgcolor = m26_color, text = show_macros_text ? m26_text : na, text_color = m26_color)) else if m26_time adjust(m26_box.get(0))// Macro 27if use_m27 if m27_time and not m27_time[1] if show_macros m27_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m27_color, bgcolor = m27_color, text = show_macros_text ? m27_text : na, text_color = m27_color)) else if m27_time adjust(m27_box.get(0))// Macro 28if use_m28 if m28_time and not m28_time[1] if show_macros m28_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m28_color, bgcolor = m28_color, text = show_macros_text ? m28_text : na, text_color = m28_color)) else if m28_time adjust(m28_box.get(0))// Macro 29if use_m29 if m29_time and not m29_time[1] if show_macros m29_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m29_color, bgcolor = m29_color, text = show_macros_text ? m29_text : na, text_color = m29_color)) else if m29_time adjust(m29_box.get(0))// Macro 30if use_m30 if m30_time and not m30_time[1] if show_macros m30_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m30_color, bgcolor = m30_color, text = show_macros_text ? m30_text : na, text_color = m30_color)) else if m30_time adjust(m30_box.get(0))// Macro 31if use_m31 if m31_time and not m31_time[1] if show_macros m31_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m31_color, bgcolor = m31_color, text = show_macros_text ? m31_text : na, text_color = m31_color)) else if m31_time adjust(m31_box.get(0))// Macro 32if use_m32 if m32_time and not m32_time[1] if show_macros m32_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m32_color, bgcolor = m32_color, text = show_macros_text ? m32_text : na, text_color = m32_color)) else if m32_time adjust(m32_box.get(0))// Macro 33if use_m33 if m33_time and not m33_time[1] if show_macros m33_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m33_color, bgcolor = m33_color, text = show_macros_text ? m33_text : na, text_color = m33_color)) else if m33_time adjust(m33_box.get(0))// Macro 34if use_m34 if m34_time and not m34_time[1] if show_macros m34_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m34_color, bgcolor = m34_color, text = show_macros_text ? m34_text : na, text_color = m34_color)) else if m34_time adjust(m34_box.get(0))// Macro 35if use_m35 if m35_time and not m35_time[1] if show_macros m35_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m35_color, bgcolor = m35_color, text = show_macros_text ? m35_text : na, text_color = m35_color)) else if m35_time adjust(m35_box.get(0))// Macro 36if use_m36 if m36_time and not m36_time[1] if show_macros m36_box.unshift(box.new(bar_index, high, bar_index, low, border_color = m36_color, bgcolor = m36_color, text = show_macros_text ? m36_text : na, text_color = m36_color)) else if m36_time adjust(m36_box.get(0))check_array(m0_box)check_array(m1_box)check_array(m2_box)check_array(m3_box)check_array(m4_box)check_array(m5_box)check_array(m6_box)check_array(m7_box)check_array(m8_box)check_array(m9_box)check_array(m10_box)check_array(m11_box)check_array(m12_box)check_array(m13_box)check_array(m14_box)check_array(m15_box)check_array(m16_box)check_array(m17_box)check_array(m18_box)check_array(m19_box)check_array(m20_box)check_array(m21_box)check_array(m22_box)check_array(m23_box)check_array(m24_box)check_array(m25_box)check_array(m26_box)check_array(m27_box)check_array(m28_box)check_array(m29_box)check_array(m30_box)check_array(m31_box)check_array(m32_box)check_array(m33_box)check_array(m34_box)check_array(m35_box)check_array(m36_box)// ---------------------------------------- Core Logic --------------------------------------------------// زر التحکم لإظهار أو إخفاء الجدولshowTable = input.bool(true, title="إظهار الجدول")// إعداد المدخلات بحیث یمکنک التحکم فی کل سطر بشکل منفصلprofitTarget1 = input.float(8, title="الربح - سطر 1", step=0.1)profitTarget2 = input.float(16, title="الربح - سطر 2", step=0.1)profitTarget3 = input.float(24, title="الربح - سطر 3", step=0.1)profitTarget4 = input.float(32, title="الربح - سطر 4", step=0.1)profitTarget5 = input.float(40, title="الربح - سطر 5", step=0.1)profitTarget6 = input.float(48, title="الربح - سطر 6", step=0.1)profitTarget7 = input.float(56, title="الربح - سطر 7", step=0.1)profitTarget8 = input.float(64, title="الربح - سطر 8", step=0.1)profitTarget9 = input.float(72, title="الربح - سطر 9", step=0.1)profitTarget10 = input.float(80, title="الربح - سطر 10", step=0.1)riskStopLoss1 = input.float(4, title="إیقاف الخسارة - سطر 1", step=0.1)riskStopLoss2 = input.float(8, title="إیقاف الخسارة - سطر 2", step=0.1)riskStopLoss3 = input.float(12, title="إیقاف الخسارة - سطر 3", step=0.1)riskStopLoss4 = input.float(16, title="إیقاف الخسارة - سطر 4", step=0.1)riskStopLoss5 = input.float(20, title="إیقاف الخسارة - سطر 5", step=0.1)riskStopLoss6 = input.float(24, title="إیقاف الخسارة - سطر 6", step=0.1)riskStopLoss7 = input.float(28, title="إیقاف الخسارة - سطر 7", step=0.1)riskStopLoss8 = input.float(32, title="إیقاف الخسارة - سطر 8", step=0.1)riskStopLoss9 = input.float(36, title="إیقاف الخسارة - سطر 9", step=0.1)riskStopLoss10 = input.float(40, title="إیقاف الخسارة - سطر 10", step=0.1)capital1 = input.float(100, title="رأس المال - سطر 1", step=1)capital2 = input.float(200, title="رأس المال - سطر 2", step=1)capital3 = input.float(300, title="رأس المال - سطر 3", step=1)capital4 = input.float(400, title="رأس المال - سطر 4", step=1)capital5 = input.float(500, title="رأس المال - سطر 5", step=1)capital6 = input.float(600, title="رأس المال - سطر 6", step=1)capital7 = input.float(700, title="رأس المال - سطر 7", step=1)capital8 = input.float(800, title="رأس المال - سطر 8", step=1)capital9 = input.float(900, title="رأس المال - سطر 9", step=1)capital10 = input.float(1000, title="رأس المال - سطر 10", step=1)// مدخل لتحدید السطر الذی یحتوی على علامة "صح"checkmarkRow = input.int(1, title="حدد سطر '✔' فی عمود المحقق", minval=1, maxval=10)// إنشاء جدول یحتوی على 4 أعمدة و 11 صفًا (1 صف للعناوین و 10 صفوف للبیانات)var table capitalTable = table.new(position.top_right, 4, 11, border_width=1, frame_color=color.rgb(3, 20, 34), bgcolor=color.gray)// تعبئة الجدول بالبیانات فقط عند تفعیل خیار "إظهار الجدول"if showTable // العناوین الأساسیة لکل خانة table.cell(capitalTable, 0, 0, "المحقق", bgcolor=color.gray, text_color=color.white) table.cell(capitalTable, 1, 0, "الربح", bgcolor=color.green, text_color=color.white) table.cell(capitalTable, 2, 0, "إیقاف الخسارة", bgcolor=color.rgb(236, 39, 39, 14), text_color=color.white) table.cell(capitalTable, 3, 0, "رأس المال", bgcolor=#75797c, text_color=color.white) // إضافة القیم لکل سطر باستخدام المدخلات الفردیة لکل صف، وتحدید السطر الذی یظهر فیه علامة "صح" table.cell(capitalTable, 0, 1, checkmarkRow == 1 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 1, str.tostring(profitTarget1, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 1, str.tostring(riskStopLoss1, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 1, str.tostring(capital1, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 2, checkmarkRow == 2 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 2, str.tostring(profitTarget2, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 2, str.tostring(riskStopLoss2, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 2, str.tostring(capital2, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 3, checkmarkRow == 3 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 3, str.tostring(profitTarget3, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 3, str.tostring(riskStopLoss3, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 3, str.tostring(capital3, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 4, checkmarkRow == 4 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 4, str.tostring(profitTarget4, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 4, str.tostring(riskStopLoss4, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 4, str.tostring(capital4, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 5, checkmarkRow == 5 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 5, str.tostring(profitTarget5, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 5, str.tostring(riskStopLoss5, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 5, str.tostring(capital5, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 6, checkmarkRow == 6 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 6, str.tostring(profitTarget6, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 6, str.tostring(riskStopLoss6, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 6, str.tostring(capital6, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 7, checkmarkRow == 7 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 7, str.tostring(profitTarget7, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 7, str.tostring(riskStopLoss7, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 7, str.tostring(capital7, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 8, checkmarkRow == 8 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 8, str.tostring(profitTarget8, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 8, str.tostring(riskStopLoss8, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 8, str.tostring(capital8, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 9, checkmarkRow == 9 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 9, str.tostring(profitTarget9, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 9, str.tostring(riskStopLoss9, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 9, str.tostring(capital9, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white) table.cell(capitalTable, 0, 10, checkmarkRow == 10 ? "✔" : "", bgcolor=color.rgb(28, 31, 41, 2), text_color=color.white) table.cell(capitalTable, 1, 10, str.tostring(profitTarget10, "#.##"), bgcolor=color.rgb(21, 207, 27, 22), text_color=color.white) table.cell(capitalTable, 2, 10, str.tostring(riskStopLoss10, "#.##"), bgcolor=color.rgb(216, 43, 43, 18), text_color=color.white) table.cell(capitalTable, 3, 10, str.tostring(capital10, "#.##"), bgcolor=color.rgb(24, 58, 209, 25), text_color=color.white)