// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KioseffTrading //@version=5 // ________________________________________________ // | | // | --------------------------------- | // | | K̲ i̲ o̲ s̲ e̲ f̲ f̲ T̲ r̲ a̲ d̲ i̲ n̲ g | | // | | | | // | | ƃ u ᴉ p ɐ ɹ ꓕ ⅎ ⅎ ǝ s o ᴉ ꓘ | | // | -------------------------------- | // | | // |_______________________________________________| indicator("SuperTrend Optimizer", shorttitle = "SuperTrend Optimizer [Kioseff Trading]", overlay = true, max_lines_count = 500, max_boxes_count = 500) factor = input.float(3.0, "SuperTrend Factor", step = 0.01, minval = 0.0001, group = "Set Lower Threshold for Parameter Optimization Range", tooltip = "Changes to This Parameter Shifts the Tested Factor Range. For Instance, Increasing the Factor Measure From 3.00 to 3.01 (+0.01) Will Remove 3.00 From the Tested Range - This Setting Controls the Lower Threshold of the Range. The Upper Threshold, in All Instances, Is This Setting + 3.3 (I.e 3.0[Lower] - 6.3[Upper], 4.0[Lower] - 7.3[Upper], 2.5[Lower], - 5.8[Upper])") atr = input.int(10, "SuperTrend ATR Length", step = 1, minval = 1, tooltip = "Changes to This Parameter Shifts the Tested ATR Period Range. For Instance, Increasing the ATR Measure From 10 to 1 (+1) Will Remove 10 From the Tested Range - This Setting Controls the Lower Threshold of the Range. The Upper Threshold, in All Instances, Is This Setting + 2 (I.e 10[Lower] - 12[Upper], 11[Lower] - 13[Upper], 9[Lower], - 11[Upper])") select = input.string("Best", title = "Best Performers ? Worst Performers", options = ["Best", "Worst"], group = "Table Config") inst = input.string("No", title = "Instructions?", options = ["No", "Yes"]) tab = input.string("All", title = "Show Performers", options = ["Top Three", "All"]) lab = input.string("On", title = '"Parameters Tested" Label ?', options = ["On", "Off"]) ovr = input.string("Off", title = "Plot Override SuperTrend (Plot Your Own Instead of Auto Plot Best Performer)", options = ["Off", "On"] , group = 'Plot Supertrend With Your Parameters (This Overrides the Automatic Plot of the Best Performing Parameters) Selecting "On" Does NOT Affect the Parameter Combination Testing Range!') ovrF = input.float(3.0, "Override SuperTrend Factor", step = 0.01, minval = 0.0001) ovrA = input.int(10, "SuperTrend ATR Length", step = 1, minval = 1) light = input.string(defval = "Off", title = "Light Mode?", options = ["Off", "On"]) // _______________________________________________________ // // Override ST // _______________________________________________________ [s, d] = ta.supertrend(ovrF, ovrA) // // _______________________________________________________ // // Combination Parameters for Array // _______________________________________________________ [s1, d1] = ta.supertrend(factor , atr) [s2, d2] = ta.supertrend(factor + 0.1, atr) [s3, d3] = ta.supertrend(factor + 0.2, atr) [s4, d4] = ta.supertrend(factor + 0.3, atr) [s5, d5] = ta.supertrend(factor + 0.4, atr) [s6, d6] = ta.supertrend(factor + 0.5, atr) [s7, d7] = ta.supertrend(factor + 0.6, atr) [s8, d8] = ta.supertrend(factor + 0.7, atr) [s9, d9] = ta.supertrend(factor + 0.8, atr) [s10, d10] = ta.supertrend(factor + 0.9, atr) [s11, d11] = ta.supertrend(factor + 1.0, atr) [s12, d12] = ta.supertrend(factor + 1.1, atr) [s13, d13] = ta.supertrend(factor + 1.2, atr) [s14, d14] = ta.supertrend(factor + 1.3, atr) [s15, d15] = ta.supertrend(factor + 1.4, atr) [s16, d16] = ta.supertrend(factor + 1.5, atr) [s17, d17] = ta.supertrend(factor + 1.6, atr) [s18, d18] = ta.supertrend(factor + 1.7, atr) [s19, d19] = ta.supertrend(factor + 1.8, atr) [s20, d20] = ta.supertrend(factor + 1.9, atr) [s21, d21] = ta.supertrend(factor + 2.0, atr) [s22, d22] = ta.supertrend(factor + 2.1, atr) [s23, d23] = ta.supertrend(factor + 2.2, atr) [s24, d24] = ta.supertrend(factor + 2.3, atr) [s25, d25] = ta.supertrend(factor + 2.4, atr) [s26, d26] = ta.supertrend(factor + 2.5, atr) [s27, d27] = ta.supertrend(factor + 2.6, atr) [s28, d28] = ta.supertrend(factor + 2.7, atr) [s29, d29] = ta.supertrend(factor + 2.8, atr) [s30, d30] = ta.supertrend(factor + 2.9, atr) [s31, d31] = ta.supertrend(factor + 3.0, atr) [s32, d32] = ta.supertrend(factor + 3.1, atr) [s33, d33] = ta.supertrend(factor + 3.2, atr) [s34, d34] = ta.supertrend(factor + 3.3, atr) [sB1, dB1] = ta.supertrend(factor , atr + 1) [sB2, dB2] = ta.supertrend(factor + 0.1, atr + 1) [sB3, dB3] = ta.supertrend(factor + 0.2, atr + 1) [sB4, dB4] = ta.supertrend(factor + 0.3, atr + 1) [sB5, dB5] = ta.supertrend(factor + 0.4, atr + 1) [sB6, dB6] = ta.supertrend(factor + 0.5, atr + 1) [sB7, dB7] = ta.supertrend(factor + 0.6, atr + 1) [sB8, dB8] = ta.supertrend(factor + 0.7, atr + 1) [sB9, dB9] = ta.supertrend(factor + 0.8, atr + 1) [sB10, dB10] = ta.supertrend(factor + 0.9, atr + 1) [sB11, dB11] = ta.supertrend(factor + 1.0, atr + 1) [sB12, dB12] = ta.supertrend(factor + 1.1, atr + 1) [sB13, dB13] = ta.supertrend(factor + 1.2, atr + 1) [sB14, dB14] = ta.supertrend(factor + 1.3, atr + 1) [sB15, dB15] = ta.supertrend(factor + 1.4, atr + 1) [sB16, dB16] = ta.supertrend(factor + 1.5, atr + 1) [sB17, dB17] = ta.supertrend(factor + 1.6, atr + 1) [sB18, dB18] = ta.supertrend(factor + 1.7, atr + 1) [sB19, dB19] = ta.supertrend(factor + 1.8, atr + 1) [sB20, dB20] = ta.supertrend(factor + 1.9, atr + 1) [sB21, dB21] = ta.supertrend(factor + 2.0, atr + 1) [sB22, dB22] = ta.supertrend(factor + 2.1, atr + 1) [sB23, dB23] = ta.supertrend(factor + 2.2, atr + 1) [sB24, dB24] = ta.supertrend(factor + 2.3, atr + 1) [sB25, dB25] = ta.supertrend(factor + 2.4, atr + 1) [sB26, dB26] = ta.supertrend(factor + 2.5, atr + 1) [sB27, dB27] = ta.supertrend(factor + 2.6, atr + 1) [sB28, dB28] = ta.supertrend(factor + 2.7, atr + 1) [sB29, dB29] = ta.supertrend(factor + 2.8, atr + 1) [sB30, dB30] = ta.supertrend(factor + 2.9, atr + 1) [sB31, dB31] = ta.supertrend(factor + 3.0, atr + 1) [sB32, dB32] = ta.supertrend(factor + 3.1, atr + 1) [sB33, dB33] = ta.supertrend(factor + 3.2, atr + 1) [sB34, dB34] = ta.supertrend(factor + 3.3, atr + 1) [sC1, dC1] = ta.supertrend(factor , atr + 2) [sC2, dC2] = ta.supertrend(factor + 0.1, atr + 2) [sC3, dC3] = ta.supertrend(factor + 0.2, atr + 2) [sC4, dC4] = ta.supertrend(factor + 0.3, atr + 2) [sC5, dC5] = ta.supertrend(factor + 0.4, atr + 2) [sC6, dC6] = ta.supertrend(factor + 0.5, atr + 2) [sC7, dC7] = ta.supertrend(factor + 0.6, atr + 2) [sC8, dC8] = ta.supertrend(factor + 0.7, atr + 2) [sC9, dC9] = ta.supertrend(factor + 0.8, atr + 2) [sC10, dC10] = ta.supertrend(factor + 0.9, atr + 2) [sC11, dC11] = ta.supertrend(factor + 1.0, atr + 2) [sC12, dC12] = ta.supertrend(factor + 1.1, atr + 2) [sC13, dC13] = ta.supertrend(factor + 1.2, atr + 2) [sC14, dC14] = ta.supertrend(factor + 1.3, atr + 2) [sC15, dC15] = ta.supertrend(factor + 1.4, atr + 2) [sC16, dC16] = ta.supertrend(factor + 1.5, atr + 2) [sC17, dC17] = ta.supertrend(factor + 1.6, atr + 2) [sC18, dC18] = ta.supertrend(factor + 1.7, atr + 2) [sC19, dC19] = ta.supertrend(factor + 1.8, atr + 2) [sC20, dC20] = ta.supertrend(factor + 1.9, atr + 2) [sC21, dC21] = ta.supertrend(factor + 2.0, atr + 2) [sC22, dC22] = ta.supertrend(factor + 2.1, atr + 2) [sC23, dC23] = ta.supertrend(factor + 2.2, atr + 2) [sC24, dC24] = ta.supertrend(factor + 2.3, atr + 2) [sC25, dC25] = ta.supertrend(factor + 2.4, atr + 2) [sC26, dC26] = ta.supertrend(factor + 2.5, atr + 2) [sC27, dC27] = ta.supertrend(factor + 2.6, atr + 2) [sC28, dC28] = ta.supertrend(factor + 2.7, atr + 2) [sC29, dC29] = ta.supertrend(factor + 2.8, atr + 2) [sC30, dC30] = ta.supertrend(factor + 2.9, atr + 2) [sC31, dC31] = ta.supertrend(factor + 3.0, atr + 2) [sC32, dC32] = ta.supertrend(factor + 3.1, atr + 2) [sC33, dC33] = ta.supertrend(factor + 3.2, atr + 2) [sC34, dC34] = ta.supertrend(factor + 3.3, atr + 2) var float x = 0 var float x1 = 0 var float x2 = 0 var float x3 = 0 var float x4 = 0 var float x5 = 0 var float x6 = 0 var float x7 = 0 var float x8 = 0 var float x9 = 0 var float x10 = 0 var float x11 = 0 var float x12 = 0 var float x13 = 0 var float x14 = 0 var float x15 = 0 var float x16 = 0 var float x17 = 0 var float x18 = 0 var float x19 = 0 var float x20 = 0 var float x21 = 0 var float x22 = 0 var float x23 = 0 var float x24 = 0 var float x25 = 0 var float x26 = 0 var float x27 = 0 var float x28 = 0 var float x29 = 0 var float x30 = 0 var float x31 = 0 var float x32 = 0 var float x33 = 0 var float x34 = 0 var float x35 = 0 var float x36 = 0 var float x37 = 0 var float x38 = 0 var float x39 = 0 var float x40 = 0 var float x41 = 0 var float x42 = 0 var float x43 = 0 var float x44 = 0 var float x45 = 0 var float x46 = 0 var float x47 = 0 var float x48 = 0 var float x49 = 0 var float x50 = 0 var float x51 = 0 var float x52 = 0 var float x53 = 0 var float x54 = 0 var float x55 = 0 var float x56 = 0 var float x57 = 0 var float x58 = 0 var float x59 = 0 var float x60 = 0 var float x61 = 0 var float x62 = 0 var float x63 = 0 var float x64 = 0 var float x65 = 0 var float x66 = 0 var float x67 = 0 var float x68 = 0 var float x69 = 0 var float x70 = 0 var float x71 = 0 var float x72 = 0 var float x73 = 0 var float x74 = 0 var float x75 = 0 var float x76 = 0 var float x77 = 0 var float x78 = 0 var float x79 = 0 var float x80 = 0 var float x81 = 0 var float x82 = 0 var float x83 = 0 var float x84 = 0 var float x85 = 0 var float x86 = 0 var float x87 = 0 var float x88 = 0 var float x89 = 0 var float x90 = 0 var float x91 = 0 var float x92 = 0 var float x93 = 0 var float x94 = 0 var float x95 = 0 var float x96 = 0 var float x97 = 0 var float x98 = 0 var float x99 = 0 var float x100 = 0 var float x101 = 0 var float x102 = 0 var float x103 = 0 var float x104 = 0 var float x105 = 0 var float x106 = 0 var float x107 = 0 var float x108 = 0 var float x109 = 0 var float x110 = 0 var float x111 = 0 var float x112 = 0 var float x113 = 0 var float x114 = 0 var float x115 = 0 var float x116 = 0 var float x117 = 0 var float x118 = 0 var float x119 = 0 var float x120 = 0 var float x121 = 0 var float x122 = 0 var float x123 = 0 var float x124 = 0 var float x125 = 0 var float x126 = 0 var float x127 = 0 var float x128 = 0 var float x129 = 0 var float x130 = 0 var float x131 = 0 var float x132 = 0 var float x133 = 0 var float x134 = 0 var float x135 = 0 var float x136 = 0 var float xC69 = 0 var float xC70 = 0 var float xC71 = 0 var float xC72 = 0 var float xC73 = 0 var float xC74 = 0 var float xC75 = 0 var float xC76 = 0 var float xC77 = 0 var float xC78 = 0 var float xC79 = 0 var float xC80 = 0 var float xC81 = 0 var float xC82 = 0 var float xC83 = 0 var float xC84 = 0 var float xC85 = 0 var float xC86 = 0 var float xC87 = 0 var float xC88 = 0 var float xC89 = 0 var float xC90 = 0 var float xC91 = 0 var float xC92 = 0 var float xC93 = 0 var float xC94 = 0 var float xC95 = 0 var float xC96 = 0 var float xC97 = 0 var float xC98 = 0 var float xC99 = 0 var float xC100 = 0 var float xC101 = 0 var float xC102 = 0 var float xC103 = 0 var float xC104 = 0 var float xC105 = 0 var float xC106 = 0 var float xC107 = 0 var float xC108 = 0 var float xC109 = 0 var float xC110 = 0 var float xC111 = 0 var float xC112 = 0 var float xC113 = 0 var float xC114 = 0 var float xC115 = 0 var float xC116 = 0 var float xC117 = 0 var float xC118 = 0 var float xC119 = 0 var float xC120 = 0 var float xC121 = 0 var float xC122 = 0 var float xC123 = 0 var float xC124 = 0 var float xC125 = 0 var float xC126 = 0 var float xC127 = 0 var float xC128 = 0 var float xC129 = 0 var float xC130 = 0 var float xC131 = 0 var float xC132 = 0 var float xC133 = 0 var float xC134 = 0 var float xC135 = 0 var float xC136 = 0 var float k = 0 var float k1 = 0 var float k2 = 0 var float k3 = 0 var float k4 = 0 var float k5 = 0 var float k6 = 0 var float k7 = 0 var float k8 = 0 var float k9 = 0 var float k10 = 0 var float k11 = 0 var float k12 = 0 var float k13 = 0 var float k14 = 0 var float k15 = 0 var float k16 = 0 var float k17 = 0 var float k18 = 0 var float k19 = 0 var float k20 = 0 var float k21 = 0 var float k22 = 0 var float k23 = 0 var float k24 = 0 var float k25 = 0 var float k26 = 0 var float k27 = 0 var float k28 = 0 var float k29 = 0 var float k30 = 0 var float k31 = 0 var float k32 = 0 var float k33 = 0 var float k34 = 0 var float k35 = 0 var float k36 = 0 var float k37 = 0 var float k38 = 0 var float k39 = 0 var float k40 = 0 var float k41 = 0 var float k42 = 0 var float k43 = 0 var float k44 = 0 var float k45 = 0 var float k46 = 0 var float k47 = 0 var float k48 = 0 var float k49 = 0 var float k50 = 0 var float k51 = 0 var float k52 = 0 var float k53 = 0 var float k54 = 0 var float k55 = 0 var float k56 = 0 var float k57 = 0 var float k58 = 0 var float k59 = 0 var float k60 = 0 var float k61 = 0 var float k62 = 0 var float k63 = 0 var float k64 = 0 var float k65 = 0 var float k66 = 0 var float k67 = 0 var float kx34 = 0 var float kx35 = 0 var float kx36 = 0 var float kx37 = 0 var float kx38 = 0 var float kx39 = 0 var float kx40 = 0 var float kx41 = 0 var float kx42 = 0 var float kx43 = 0 var float kx44 = 0 var float kx45 = 0 var float kx46 = 0 var float kx47 = 0 var float kx48 = 0 var float kx49 = 0 var float kx50 = 0 var float kx51 = 0 var float kx52 = 0 var float kx53 = 0 var float kx54 = 0 var float kx55 = 0 var float kx56 = 0 var float kx57 = 0 var float kx58 = 0 var float kx59 = 0 var float kx60 = 0 var float kx61 = 0 var float kx62 = 0 var float kx63 = 0 var float kx64 = 0 var float kx65 = 0 var float kx66 = 0 var float kx67 = 0 var float j = 0 var float j1 = 0 var float j2 = 0 var float j3 = 0 var float j4 = 0 var float j5 = 0 var float j6 = 0 var float j7 = 0 var float j8 = 0 var float j9 = 0 var float j10 = 0 var float j11 = 0 var float j12 = 0 var float j13 = 0 var float j14 = 0 var float j15 = 0 var float j16 = 0 var float j17 = 0 var float j18 = 0 var float j19 = 0 var float j20 = 0 var float j21 = 0 var float j22 = 0 var float j23 = 0 var float j24 = 0 var float j25 = 0 var float j26 = 0 var float j27 = 0 var float j28 = 0 var float j29 = 0 var float j30 = 0 var float j31 = 0 var float j32 = 0 var float j33 = 0 var float j34 = 0 var float j35 = 0 var float j36 = 0 var float j37 = 0 var float j38 = 0 var float j39 = 0 var float j40 = 0 var float j41 = 0 var float j42 = 0 var float j43 = 0 var float j44 = 0 var float j45 = 0 var float j46 = 0 var float j47 = 0 var float j48 = 0 var float j49 = 0 var float j50 = 0 var float j51 = 0 var float j52 = 0 var float j53 = 0 var float j54 = 0 var float j55 = 0 var float j56 = 0 var float j57 = 0 var float j58 = 0 var float j59 = 0 var float j60 = 0 var float j61 = 0 var float j62 = 0 var float j63 = 0 var float j64 = 0 var float j65 = 0 var float j66 = 0 var float j67 = 0 var float jx34 = 0 var float jx35 = 0 var float jx36 = 0 var float jx37 = 0 var float jx38 = 0 var float jx39 = 0 var float jx40 = 0 var float jx41 = 0 var float jx42 = 0 var float jx43 = 0 var float jx44 = 0 var float jx45 = 0 var float jx46 = 0 var float jx47 = 0 var float jx48 = 0 var float jx49 = 0 var float jx50 = 0 var float jx51 = 0 var float jx52 = 0 var float jx53 = 0 var float jx54 = 0 var float jx55 = 0 var float jx56 = 0 var float jx57 = 0 var float jx58 = 0 var float jx59 = 0 var float jx60 = 0 var float jx61 = 0 var float jx62 = 0 var float jx63 = 0 var float jx64 = 0 var float jx65 = 0 var float jx66 = 0 var float jx67 = 0 // _______________________________________________________ // // Combination Parameter Calculations for Array // _______________________________________________________ if d1[1] == 1 and d1 == -1 and j == 0 x := close j := 1 if d1[1] == -1 and d1 == 1 and j == 1 x2 := ((close / x) - 1) * 100 x2 := x2[1] + x2 k += 1 j := 0 if d2[1] == 1 and d2 == -1 and j1 == 0 x3 := close j1 := 1 if d2[1] == -1 and d2 == 1 and j1 == 1 x4 := ((close / x3) - 1) * 100 x4 := x4[1] + x4 k1 += 1 j1 := 0 if d3[1] == 1 and d3 == -1 and j2 == 0 x5 := close j2 := 1 if d13[1] == -1 and d3 == 1 and j2 == 1 x6 := ((close / x5) - 1) * 100 x6 := x6[1] + x6 k2 += 1 j2 := 0 if d4[1] == 1 and d4 == -1 and j3 == 0 x7 := close j3 := 1 if d4[1] == -1 and d4 == 1 and j3 == 1 x8 := ((close / x7) - 1) * 100 x8 := x8[1] + x8 k3 += 1 j3 := 0 if d5[1] == 1 and d5 == -1 and j4 == 0 x9 := close j4 := 1 if d5[1] == -1 and d5 == 1 and j4 == 1 x10 := ((close / x9) - 1) * 100 x10 := x10[1] + x10 k4 += 1 j4 := 0 if d6[1] == 1 and d6 == -1 and j5 == 0 x11 := close j5 := 1 if d6[1] == -1 and d6 == 1 and j5 == 1 x12 := ((close / x11) - 1) * 100 x12 := x12[1] + x12 k5 += 1 j5 := 0 if d7[1] == 1 and d7 == -1 and j6 == 0 x13 := close j6 := 1 if d7[1] == -1 and d7 == 1 and j6 == 1 x14 := ((close / x13) - 1) * 100 x14 := x14[1] + x14 k6 += 1 j6 := 0 if d8[1] == 1 and d8 == -1 and j7 == 0 x15 := close j7 := 1 if d8[1] == -1 and d8 == 1 and j7 == 1 x16 := ((close / x15) - 1) * 100 x16 := x16[1] + x16 k7 += 1 j7 := 0 if d9[1] == 1 and d9 == -1 and j8 == 0 x17 := close j8 := 1 if d9[1] == -1 and d9 == 1 and j8 == 1 x18 := ((close / x17) - 1) * 100 x18 := x18[1] + x18 k8 += 1 j8 := 0 if d10[1] == 1 and d10 == -1 and j9 == 0 x19 := close j9 := 1 if d10[1] == -1 and d10 == 1 and j9 == 1 x20 := ((close / x19) - 1) * 100 x20 := x20[1] + x20 k9 += 1 j9 := 0 if d11[1] == 1 and d11 == -1 and j10 == 0 x21 := close j10 := 1 if d11[1] == -1 and d11 == 1 and j10 == 1 x22 := ((close / x21) - 1) * 100 x22 := x22[1] + x22 k10 += 1 j10 := 0 if d12[1] == 1 and d12 == -1 and j11 == 0 x23 := close j11 := 1 if d12[1] == -1 and d12 == 1 and j11 == 1 x24 := ((close / x23) - 1) * 100 x24 := x24[1] + x24 k11 += 1 j11 := 0 if d13[1] == 1 and d13 == -1 and j12 == 0 x25 := close j12 := 1 if d13[1] == -1 and d13 == 1 and j12 == 1 x26 := ((close / x25) - 1) * 100 x26 := x26[1] + x26 k12 += 1 j12 := 0 if d14[1] == 1 and d14 == -1 and j13 == 0 x27 := close j13 := 1 if d14[1] == -1 and d14 == 1 and j13 == 1 x28 := ((close / x27) - 1) * 100 x28 := x28[1] + x28 k13 += 1 j13 := 0 if d15[1] == 1 and d15 == -1 and j14 == 0 x29 := close j14 := 1 if d15[1] == -1 and d15 == 1 and j14 == 1 x30 := ((close / x29) - 1) * 100 x30 := x30[1] + x30 k14 += 1 j14 := 0 if d16[1] == 1 and d16 == -1 and j15 == 0 x31 := close j15 := 1 if d16[1] == -1 and d16 == 1 and j15 == 1 x32 := ((close / x31) - 1) * 100 x32 := x32[1] + x32 k15 += 1 j15 := 0 if d17[1] == 1 and d17 == -1 and j16 == 0 x33 := close j16 := 1 if d17[1] == -1 and d17 == 1 and j16 == 1 x34 := ((close / x33) - 1) * 100 x34 := x34[1] + x34 k16 += 1 j16 := 0 if d18[1] == 1 and d18 == -1 and j17 == 0 x35 := close j17 := 1 if d18[1] == -1 and d18 == 1 and j17 == 1 x36 := ((close / x35) - 1) * 100 x36 := x36[1] + x36 k17 += 1 j17 := 0 if d19[1] == 1 and d19 == -1 and j18 == 0 x37 := close j18 := 1 if d19[1] == -1 and d19 == 1 and j18 == 1 x38 := ((close / x37) - 1) * 100 x38 := x38[1] + x38 k18 += 1 j18 := 0 if d20[1] == 1 and d20 == -1 and j19 == 0 x39 := close j19 := 1 if d20[1] == -1 and d20 == 1 and j19 == 1 x40 := ((close / x39) - 1) * 100 x40 := x40[1] + x40 k19 += 1 j19 := 0 if d21[1] == 1 and d21 == -1 and j20 == 0 x41 := close j20 := 1 if d21[1] == -1 and d21 == 1 and j20 == 1 x42 := ((close / x41) - 1) * 100 x42 := x42[1] + x42 k20 += 1 j20 := 0 if d22[1] == 1 and d22 == -1 and j21 == 0 x43 := close j21 := 1 if d22[1] == -1 and d22 == 1 and j21 == 1 x44 := ((close / x43) - 1) * 100 x44 := x44[1] + x44 k21 += 1 j21 := 0 if d23[1] == 1 and d23 == -1 and j22 == 0 x45 := close j22 := 1 if d23[1] == -1 and d23 == 1 and j22 == 1 x46 := ((close / x45) - 1) * 100 x46 := x46[1] + x46 k22 += 1 j22 := 0 if d24[1] == 1 and d24 == -1 and j23 == 0 x47 := close j23 := 1 if d24[1] == -1 and d24 == 1 and j23 == 1 x48 := ((close / x47) - 1) * 100 x48 := x48[1] + x48 k23 += 1 j23 := 0 if d25[1] == 1 and d25 == -1 and j24 == 0 x49 := close j24 := 1 if d25[1] == -1 and d25 == 1 and j24 == 1 x50 := ((close / x49) - 1) * 100 x50 := x50[1] + x50 k24 += 1 j24 := 0 if d26[1] == 1 and d26 == -1 and j25 == 0 x51 := close j25 := 1 if d26[1] == -1 and d26 == 1 and j25 == 1 x52 := ((close / x51) - 1) * 100 x52 := x52[1] + x52 k25 += 1 j25 := 0 if d27[1] == 1 and d27 == -1 and j26 == 0 x53 := close j26 := 1 if d27[1] == -1 and d27 == 1 and j26 == 1 x54 := ((close / x53) - 1) * 100 x54 := x54[1] + x54 k26 += 1 j26 := 0 if d28[1] == 1 and d28 == -1 and j27 == 0 x55 := close j27 := 1 if d28[1] == -1 and d28 == 1 and j27 == 1 x56 := ((close / x55) - 1) * 100 x56 := x56[1] + x56 k27 += 1 j27 := 0 if d29[1] == 1 and d29 == -1 and j28 == 0 x57 := close j28 := 1 if d29[1] == -1 and d29 == 1 and j28 == 1 x58 := ((close / x57) - 1) * 100 x58 := x58[1] + x58 k28 += 1 j28 := 0 if d30[1] == 1 and d30 == -1 and j29 == 0 x59 := close j29 := 1 if d30[1] == -1 and d30 == 1 and j29 == 1 x60 := ((close / x59) - 1) * 100 x60 := x60[1] + x60 k29 += 1 j29 := 0 if d31[1] == 1 and d31 == -1 and j30 == 0 x61 := close j30 := 1 if d31[1] == -1 and d31 == 1 and j30 == 1 x62 := ((close / x61) - 1) * 100 x62 := x62[1] + x62 k30 += 1 j30 := 0 if d32[1] == 1 and d32 == -1 and j31 == 0 x63 := close j31 := 1 if d32[1] == -1 and d32 == 1 and j31 == 1 x64 := ((close / x63) - 1) * 100 x64 := x64[1] + x64 k31 += 1 j31 := 0 if d33[1] == 1 and d33 == -1 and j32 == 0 x65 := close j32 := 1 if d33[1] == -1 and d33 == 1 and j32 == 1 x66 := ((close / x65) - 1) * 100 x66 := x66[1] + x66 k32 += 1 j32 := 0 if d34[1] == 1 and d34 == -1 and j33 == 0 x67 := close j33 := 1 if d34[1] == -1 and d34 == 1 and j33 == 1 x68 := ((close / x67) - 1) * 100 x68 := x68[1] + x68 k33 += 1 j33 := 0 if dB1[1] == 1 and dB1 == -1 and j34 == 0 x69 := close j34 := 1 if dB1[1] == -1 and dB1 == 1 and j34 == 1 x70 := ((close / x69) - 1) * 100 x70 := x70[1] + x70 k34 += 1 j34 := 0 if dB2[1] == 1 and dB2 == -1 and j35 == 0 x71 := close j35 := 1 if dB2[1] == -1 and dB2 == 1 and j35 == 1 x72 := ((close / x71) - 1) * 100 x72 := x72[1] + x72 k35 += 1 j35 := 0 if dB3[1] == 1 and dB3 == -1 and j36 == 0 x73 := close j36 := 1 if dB13[1] == -1 and dB3 == 1 and j36 == 1 x74 := ((close / x73) - 1) * 100 x74 := x74[1] + x74 k36 += 1 j36 := 0 if dB4[1] == 1 and dB4 == -1 and j37 == 0 x75 := close j37 := 1 if dB4[1] == -1 and dB4 == 1 and j37 == 1 x76 := ((close / x75) - 1) * 100 x76 := x76[1] + x76 k37 += 1 j37 := 0 if dB5[1] == 1 and dB5 == -1 and j38 == 0 x77 := close j38 := 1 if dB5[1] == -1 and dB5 == 1 and j38 == 1 x78 := ((close / x77) - 1) * 100 x78 := x78[1] + x78 k38 += 1 j38 := 0 if dB6[1] == 1 and dB6 == -1 and j39 == 0 x79 := close j39 := 1 if dB6[1] == -1 and dB6 == 1 and j39 == 1 x80 := ((close / x79) - 1) * 100 x80 := x80[1] + x80 k39 += 1 j39 := 0 if dB7[1] == 1 and dB7 == -1 and j40 == 0 x81 := close j40 := 1 if dB7[1] == -1 and dB7 == 1 and j40 == 1 x82 := ((close / x81) - 1) * 100 x82 := x82[1] + x82 k40 += 1 j40 := 0 if dB8[1] == 1 and dB8 == -1 and j41 == 0 x83 := close j41 := 1 if dB8[1] == -1 and dB8 == 1 and j41 == 1 x84 := ((close / x83) - 1) * 100 x84 := x84[1] + x84 k41 += 1 j41 := 0 if dB9[1] == 1 and dB9 == -1 and j42 == 0 x85 := close j42 := 1 if dB9[1] == -1 and dB9 == 1 and j42 == 1 x86 := ((close / x85) - 1) * 100 x86 := x86[1] + x86 k42 += 1 j42 := 0 if dB10[1] == 1 and dB10 == -1 and j43 == 0 x87 := close j43 := 1 if dB10[1] == -1 and dB10 == 1 and j43 == 1 x88 := ((close / x87) - 1) * 100 x88 := x88[1] + x88 k43 += 1 j43 := 0 if dB11[1] == 1 and dB11 == -1 and j44 == 0 x89 := close j44 := 1 if dB11[1] == -1 and dB11 == 1 and j44 == 1 x90 := ((close / x89) - 1) * 100 x90 := x90[1] + x90 k44 += 1 j44 := 0 if dB12[1] == 1 and dB12 == -1 and j45 == 0 x91 := close j45 := 1 if dB12[1] == -1 and dB12 == 1 and j45 == 1 x92 := ((close / x91) - 1) * 100 x92 := x92[1] + x92 k45 += 1 j45 := 0 if dB13[1] == 1 and dB13 == -1 and j46 == 0 x93 := close j46 := 1 if dB13[1] == -1 and dB13 == 1 and j46 == 1 x94 := ((close / x93) - 1) * 100 x94 := x94[1] + x94 k46 += 1 j46 := 0 if dB14[1] == 1 and dB14 == -1 and j47 == 0 x95 := close j47 := 1 if dB14[1] == -1 and dB14 == 1 and j47 == 1 x96 := ((close / x95) - 1) * 100 x96 := x96[1] + x96 k47 += 1 j47 := 0 if dB15[1] == 1 and dB15 == -1 and j48 == 0 x97 := close j48 := 1 if dB15[1] == -1 and dB15 == 1 and j48 == 1 x98 := ((close / x97) - 1) * 100 x98 := x98[1] + x98 k48 += 1 j48 := 0 if dB16[1] == 1 and dB16 == -1 and j49 == 0 x99 := close j49 := 1 if dB16[1] == -1 and dB16 == 1 and j49 == 1 x100 := ((close / x99) - 1) * 100 x100 := x100[1] + x100 k49 += 1 j49 := 0 if dB17[1] == 1 and dB17 == -1 and j50 == 0 x101 := close j50 := 1 if dB17[1] == -1 and dB17 == 1 and j50 == 1 x102 := ((close / x101) - 1) * 100 x102 := x102[1] + x102 k50 += 1 j50 := 0 if dB18[1] == 1 and dB18 == -1 and j51 == 0 x103 := close j51 := 1 if dB18[1] == -1 and dB18 == 1 and j51 == 1 x104 := ((close / x103) - 1) * 100 x104 := x104[1] + x104 k51 += 1 j51 := 0 if dB19[1] == 1 and dB19 == -1 and j52 == 0 x105 := close j52 := 1 if dB19[1] == -1 and dB19 == 1 and j52 == 1 x106 := ((close / x105) - 1) * 100 x106 := x106[1] + x106 k52 += 1 j52 := 0 if dB20[1] == 1 and dB20 == -1 and j53 == 0 x107 := close j53 := 1 if dB20[1] == -1 and dB20 == 1 and j53 == 1 x108 := ((close / x107) - 1) * 100 x108 := x108[1] + x108 k53 += 1 j53 := 0 if dB21[1] == 1 and dB21 == -1 and j54 == 0 x109 := close j54 := 1 if dB21[1] == -1 and dB21 == 1 and j54 == 1 x110 := ((close / x109) - 1) * 100 x110 := x110[1] + x110 k54 += 1 j54 := 0 if dB22[1] == 1 and dB22 == -1 and j55 == 0 x111 := close j55 := 1 if dB22[1] == -1 and dB22 == 1 and j55 == 1 x112 := ((close / x111) - 1) * 100 x112 := x112[1] + x112 k55 += 1 j55 := 0 if dB23[1] == 1 and dB23 == -1 and j56 == 0 x113 := close j56 := 1 if dB23[1] == -1 and dB23 == 1 and j56 == 1 x114 := ((close / x113) - 1) * 100 x114 := x114[1] + x114 k56 += 1 j56 := 0 if dB24[1] == 1 and dB24 == -1 and j57 == 0 x115 := close j57 := 1 if dB24[1] == -1 and dB24 == 1 and j57 == 1 x116 := ((close / x115) - 1) * 100 x116 := x116[1] + x116 k57 += 1 j57 := 0 if dB25[1] == 1 and dB25 == -1 and j58 == 0 x117 := close j58 := 1 if dB25[1] == -1 and dB25 == 1 and j58 == 1 x118 := ((close / x117) - 1) * 100 x118 := x118[1] + x118 k58 += 1 j58 := 0 if dB26[1] == 1 and dB26 == -1 and j59 == 0 x119 := close j59 := 1 if dB26[1] == -1 and dB26 == 1 and j59 == 1 x120 := ((close / x119) - 1) * 100 x120 := x120[1] + x120 k59 += 1 j59 := 0 if dB27[1] == 1 and dB27 == -1 and j60 == 0 x121 := close j60 := 1 if dB27[1] == -1 and dB27 == 1 and j60 == 1 x122 := ((close / x121) - 1) * 100 x122 := x122[1] + x122 k60 += 1 j60 := 0 if dB28[1] == 1 and dB28 == -1 and j61 == 0 x123 := close j61 := 1 if dB28[1] == -1 and dB28 == 1 and j61 == 1 x124 := ((close / x123) - 1) * 100 x124 := x124[1] + x124 k61 += 1 j61 := 0 if dB29[1] == 1 and dB29 == -1 and j62 == 0 x125 := close j62 := 1 if dB29[1] == -1 and dB29 == 1 and j62 == 1 x126 := ((close / x125) - 1) * 100 x126 := x126[1] + x126 k62 += 1 j62 := 0 if dB30[1] == 1 and dB30 == -1 and j63 == 0 x127 := close j63 := 1 if dB30[1] == -1 and dB30 == 1 and j63 == 1 x128 := ((close / x127) - 1) * 100 x128 := x128[1] + x128 k63 += 1 j63 := 0 if dB31[1] == 1 and dB31 == -1 and j64 == 0 x129 := close j64 := 1 if dB31[1] == -1 and dB31 == 1 and j64 == 1 x130 := ((close / x129) - 1) * 100 x130 := x130[1] + x130 k64 += 1 j64 := 0 if dB32[1] == 1 and dB32 == -1 and j65 == 0 x131 := close j65 := 1 if dB32[1] == -1 and dB32 == 1 and j65 == 1 x132 := ((close / x131) - 1) * 100 x132 := x132[1] + x132 k65 += 1 j65 := 0 if dB33[1] == 1 and dB33 == -1 and j66 == 0 x133 := close j66 := 1 if dB33[1] == -1 and dB33 == 1 and j66 == 1 x134 := ((close / x133) - 1) * 100 x134 := x134[1] + x134 k66 += 1 j66 := 0 if dB34[1] == 1 and dB34 == -1 and j67 == 0 x135 := close j67 := 1 if dB34[1] == -1 and dB34 == 1 and j67 == 1 x136 := ((close / x135) - 1) * 100 x136 := x136[1] + x136 k67 += 1 j67 := 0 if dC1[1] == 1 and dC1 == -1 and jx34 == 0 xC69 := close jx34 := 1 if dC1[1] == -1 and dC1 == 1 and jx34 == 1 xC70 := ((close / xC69) - 1) * 100 xC70 := xC70[1] + xC70 kx34 += 1 jx34 := 0 if dC2[1] == 1 and dC2 == -1 and jx35 == 0 xC71 := close jx35 := 1 if dC2[1] == -1 and dC2 == 1 and jx35 == 1 xC72 := ((close / xC71) - 1) * 100 xC72 := xC72[1] + xC72 kx35 += 1 jx35 := 0 if dC3[1] == 1 and dC3 == -1 and jx36 == 0 xC73 := close jx36 := 1 if dC13[1] == -1 and dC3 == 1 and jx36 == 1 xC74 := ((close / xC73) - 1) * 100 xC74 := xC74[1] + xC74 kx36 += 1 jx36 := 0 if dC4[1] == 1 and dC4 == -1 and jx37 == 0 xC75 := close jx37 := 1 if dC4[1] == -1 and dC4 == 1 and jx37 == 1 xC76 := ((close / xC75) - 1) * 100 xC76 := xC76[1] + xC76 kx37 += 1 jx37 := 0 if dC5[1] == 1 and dC5 == -1 and jx38 == 0 xC77 := close jx38 := 1 if dC5[1] == -1 and dC5 == 1 and jx38 == 1 xC78 := ((close / xC77) - 1) * 100 xC78 := xC78[1] + xC78 kx38 += 1 jx38 := 0 if dC6[1] == 1 and dC6 == -1 and jx39 == 0 xC79 := close jx39 := 1 if dC6[1] == -1 and dC6 == 1 and jx39 == 1 xC80 := ((close / xC79) - 1) * 100 xC80 := xC80[1] + xC80 kx39 += 1 jx39 := 0 if dC7[1] == 1 and dC7 == -1 and jx40 == 0 xC81 := close jx40 := 1 if dC7[1] == -1 and dC7 == 1 and jx40 == 1 xC82 := ((close / xC81) - 1) * 100 xC82 := xC82[1] + xC82 kx40 += 1 jx40 := 0 if dC8[1] == 1 and dC8 == -1 and jx41 == 0 xC83 := close jx41 := 1 if dC8[1] == -1 and dC8 == 1 and jx41 == 1 xC84 := ((close / xC83) - 1) * 100 xC84 := xC84[1] + xC84 kx41 += 1 jx41 := 0 if dC9[1] == 1 and dC9 == -1 and jx42 == 0 xC85 := close jx42 := 1 if dC9[1] == -1 and dC9 == 1 and jx42 == 1 xC86 := ((close / xC85) - 1) * 100 xC86 := xC86[1] + xC86 kx42 += 1 jx42 := 0 if dC10[1] == 1 and dC10 == -1 and jx43 == 0 xC87 := close jx43 := 1 if dC10[1] == -1 and dC10 == 1 and jx43 == 1 xC88 := ((close / xC87) - 1) * 100 xC88 := xC88[1] + xC88 kx43 += 1 jx43 := 0 if dC11[1] == 1 and dC11 == -1 and jx44 == 0 xC89 := close jx44 := 1 if dC11[1] == -1 and dC11 == 1 and jx44 == 1 xC90 := ((close / xC89) - 1) * 100 xC90 := xC90[1] + xC90 kx44 += 1 jx44 := 0 if dC12[1] == 1 and dC12 == -1 and jx45 == 0 xC91 := close jx45 := 1 if dC12[1] == -1 and dC12 == 1 and jx45 == 1 xC92 := ((close / xC91) - 1) * 100 xC92 := xC92[1] + xC92 kx45 += 1 jx45 := 0 if dC13[1] == 1 and dC13 == -1 and jx46 == 0 xC93 := close jx46 := 1 if dC13[1] == -1 and dC13 == 1 and jx46 == 1 xC94 := ((close / xC93) - 1) * 100 xC94 := xC94[1] + xC94 kx46 += 1 jx46 := 0 if dC14[1] == 1 and dC14 == -1 and jx47 == 0 xC95 := close jx47 := 1 if dC14[1] == -1 and dC14 == 1 and jx47 == 1 xC96 := ((close / xC95) - 1) * 100 xC96 := xC96[1] + xC96 kx47 += 1 jx47 := 0 if dC15[1] == 1 and dC15 == -1 and jx48 == 0 xC97 := close jx48 := 1 if dC15[1] == -1 and dC15 == 1 and jx48 == 1 xC98 := ((close / xC97) - 1) * 100 xC98 := xC98[1] + xC98 kx48 += 1 jx48 := 0 if dC16[1] == 1 and dC16 == -1 and jx49 == 0 xC99 := close jx49 := 1 if dC16[1] == -1 and dC16 == 1 and jx49 == 1 xC100 := ((close / xC99) - 1) * 100 xC100 := xC100[1] + xC100 kx49 += 1 jx49 := 0 if dC17[1] == 1 and dC17 == -1 and jx50 == 0 xC101 := close jx50 := 1 if dC17[1] == -1 and dC17 == 1 and jx50 == 1 xC102 := ((close / xC101) - 1) * 100 xC102 := xC102[1] + xC102 kx50 += 1 jx50 := 0 if dC18[1] == 1 and dC18 == -1 and jx51 == 0 xC103 := close jx51 := 1 if dC18[1] == -1 and dC18 == 1 and jx51 == 1 xC104 := ((close / xC103) - 1) * 100 xC104 := xC104[1] + xC104 kx51 += 1 jx51 := 0 if dC19[1] == 1 and dC19 == -1 and jx52 == 0 xC105 := close jx52 := 1 if dC19[1] == -1 and dC19 == 1 and jx52 == 1 xC106 := ((close / xC105) - 1) * 100 xC106 := xC106[1] + xC106 kx52 += 1 jx52 := 0 if dC20[1] == 1 and dC20 == -1 and jx53 == 0 xC107 := close jx53 := 1 if dC20[1] == -1 and dC20 == 1 and jx53 == 1 xC108 := ((close / xC107) - 1) * 100 xC108 := xC108[1] + xC108 kx53 += 1 jx53 := 0 if dC21[1] == 1 and dC21 == -1 and jx54 == 0 xC109 := close jx54 := 1 if dC21[1] == -1 and dC21 == 1 and jx54 == 1 xC110 := ((close / xC109) - 1) * 100 xC110 := xC110[1] + xC110 kx54 += 1 jx54 := 0 if dC22[1] == 1 and dC22 == -1 and jx55 == 0 xC111 := close jx55 := 1 if dC22[1] == -1 and dC22 == 1 and jx55 == 1 xC112 := ((close / xC111) - 1) * 100 xC112 := xC112[1] + xC112 kx55 += 1 jx55 := 0 if dC23[1] == 1 and dC23 == -1 and jx56 == 0 xC113 := close jx56 := 1 if dC23[1] == -1 and dC23 == 1 and jx56 == 1 xC114 := ((close / xC113) - 1) * 100 xC114 := xC114[1] + xC114 kx56 += 1 jx56 := 0 if dC24[1] == 1 and dC24 == -1 and jx57 == 0 xC115 := close jx57 := 1 if dC24[1] == -1 and dC24 == 1 and jx57 == 1 xC116 := ((close / xC115) - 1) * 100 xC116 := xC116[1] + xC116 kx57 += 1 jx57 := 0 if dC25[1] == 1 and dC25 == -1 and jx58 == 0 xC117 := close jx58 := 1 if dC25[1] == -1 and dC25 == 1 and jx58 == 1 xC118 := ((close / xC117) - 1) * 100 xC118 := xC118[1] + xC118 kx58 += 1 jx58 := 0 if dC26[1] == 1 and dC26 == -1 and jx59 == 0 xC119 := close jx59 := 1 if dC26[1] == -1 and dC26 == 1 and jx59 == 1 xC120 := ((close / xC119) - 1) * 100 xC120 := xC120[1] + xC120 kx59 += 1 jx59 := 0 if dC27[1] == 1 and dC27 == -1 and jx60 == 0 xC121 := close jx60 := 1 if dC27[1] == -1 and dC27 == 1 and jx60 == 1 xC122 := ((close / xC121) - 1) * 100 xC122 := xC122[1] + xC122 kx60 += 1 jx60 := 0 if dC28[1] == 1 and dC28 == -1 and jx61 == 0 xC123 := close jx61 := 1 if dC28[1] == -1 and dC28 == 1 and jx61 == 1 xC124 := ((close / xC123) - 1) * 100 xC124 := xC124[1] + xC124 kx61 += 1 jx61 := 0 if dC29[1] == 1 and dC29 == -1 and jx62 == 0 xC125 := close jx62 := 1 if dC29[1] == -1 and dC29 == 1 and jx62 == 1 xC126 := ((close / xC125) - 1) * 100 xC126 := xC126[1] + xC126 kx62 += 1 jx62 := 0 if dC30[1] == 1 and dC30 == -1 and jx63 == 0 xC127 := close jx63 := 1 if dC30[1] == -1 and dC30 == 1 and jx63 == 1 xC128 := ((close / xC127) - 1) * 100 xC128 := xC128[1] + xC128 kx63 += 1 jx63 := 0 if dC31[1] == 1 and dC31 == -1 and jx64 == 0 xC129 := close jx64 := 1 if dC31[1] == -1 and dC31 == 1 and jx64 == 1 xC130 := ((close / xC129) - 1) * 100 xC130 := xC130[1] + xC130 kx64 += 1 jx64 := 0 if dC32[1] == 1 and dC32 == -1 and jx65 == 0 xC131 := close jx65 := 1 if dC32[1] == -1 and dC32 == 1 and jx65 == 1 xC132 := ((close / xC131) - 1) * 100 xC132 := xC132[1] + xC132 kx65 += 1 jx65 := 0 if dC33[1] == 1 and dC33 == -1 and jx66 == 0 xC133 := close jx66 := 1 if dC33[1] == -1 and dC33 == 1 and jx66 == 1 xC134 := ((close / xC133) - 1) * 100 xC134 := xC134[1] + xC134 kx66 += 1 jx66 := 0 if dC34[1] == 1 and dC34 == -1 and jx67 == 0 xC135 := close jx67 := 1 if dC34[1] == -1 and dC34 == 1 and jx67 == 1 xC136 := ((close / xC135) - 1) * 100 xC136 := xC136[1] + xC136 kx67 += 1 jx67 := 0 // Thank you Dyuck https://www.tradingview.com/v/Mzc4dmq7/ f_sort_by_array(_array1, _array2, _ascending) => _array1_size = array.size(_array1) _array1_sorted = array.new_string(_array1_size) _array2_sorted = array.copy(_array2) if _array1_size == array.size(_array2) array.sort(_array2_sorted, _ascending ? order.ascending : order.descending) for i = 0 to _array1_size - 1 _sorted_value = array.get (_array2_sorted, i) _unsorted_index = math.max(0, array.indexof(_array2, _sorted_value)) _unsorted_value = array.get (_array1, _unsorted_index) array.set(_array1_sorted, i, _unsorted_value) [_array1_sorted, _array2_sorted] // Thank you Dyuck https://www.tradingview.com/v/Mzc4dmq7/ // _______________________________________________________ // // Performance Array Set // _______________________________________________________ best = array.new_float(102) array.set(best, 0, x2) array.set(best, 1, x4) array.set(best, 2, x6) array.set(best, 3, x8) array.set(best, 4, x10) array.set(best, 5, x12) array.set(best, 6, x14) array.set(best, 7, x16) array.set(best, 8, x18) array.set(best, 9, x20) array.set(best, 10, x22) array.set(best, 11, x24) array.set(best, 12, x26) array.set(best, 13, x28) array.set(best, 14, x30) array.set(best, 15, x32) array.set(best, 16, x34) array.set(best, 17, x36) array.set(best, 18, x38) array.set(best, 19, x40) array.set(best, 20, x42) array.set(best, 21, x44) array.set(best, 22, x46) array.set(best, 23, x48) array.set(best, 24, x50) array.set(best, 25, x52) array.set(best, 26, x54) array.set(best, 27, x56) array.set(best, 28, x58) array.set(best, 29, x60) array.set(best, 30, x62) array.set(best, 31, x64) array.set(best, 32, x66) array.set(best, 33, x68) array.set(best, 34, x70) array.set(best, 35, x72) array.set(best, 36, x74) array.set(best, 37, x76) array.set(best, 38, x78) array.set(best, 39, x80) array.set(best, 40, x82) array.set(best, 41, x84) array.set(best, 42, x86) array.set(best, 43, x88) array.set(best, 44, x90) array.set(best, 45, x92) array.set(best, 46, x94) array.set(best, 47, x96) array.set(best, 48, x98) array.set(best, 49, x100) array.set(best, 50, x102) array.set(best, 51, x104) array.set(best, 52, x106) array.set(best, 53, x108) array.set(best, 54, x110) array.set(best, 55, x112) array.set(best, 56, x114) array.set(best, 57, x116) array.set(best, 58, x118) array.set(best, 59, x120) array.set(best, 60, x122) array.set(best, 61, x124) array.set(best, 62, x126) array.set(best, 63, x128) array.set(best, 64, x130) array.set(best, 65, x132) array.set(best, 66, x134) array.set(best, 67, x136) array.set(best, 68, xC70) array.set(best, 69, xC72) array.set(best, 70, xC74) array.set(best, 71, xC76) array.set(best, 72, xC78) array.set(best, 73, xC80) array.set(best, 74, xC82) array.set(best, 75, xC84) array.set(best, 76, xC86) array.set(best, 77, xC88) array.set(best, 78, xC90) array.set(best, 79, xC92) array.set(best, 80, xC94) array.set(best, 81, xC96) array.set(best, 82, xC98) array.set(best, 83, xC100) array.set(best, 84, xC102) array.set(best, 85, xC104) array.set(best, 86, xC106) array.set(best, 87, xC108) array.set(best, 88, xC110) array.set(best, 89, xC112) array.set(best, 90, xC114) array.set(best, 91, xC116) array.set(best, 92, xC118) array.set(best, 93, xC120) array.set(best, 94, xC122) array.set(best, 95, xC124) array.set(best, 96, xC126) array.set(best, 97, xC128) array.set(best, 98, xC130) array.set(best, 99, xC132) array.set(best, 100, xC134) array.set(best, 101, xC136) // _______________________________________________________ // // String Array Set // _______________________________________________________ best1 = array.new_string(102) array.set(best1, 0, "SuperTrend: " + "[" +str.tostring(factor, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 1, "SuperTrend: " + "[" +str.tostring(factor + 0.1, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 2, "SuperTrend: " + "[" +str.tostring(factor + 0.2, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 3, "SuperTrend: " + "[" +str.tostring(factor + 0.3, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 4, "SuperTrend: " + "[" +str.tostring(factor + 0.4, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 5, "SuperTrend: " + "[" +str.tostring(factor + 0.5, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 6, "SuperTrend: " + "[" +str.tostring(factor + 0.6, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 7, "SuperTrend: " + "[" +str.tostring(factor + 0.7, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 8, "SuperTrend: " + "[" +str.tostring(factor + 0.8, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 9, "SuperTrend: " + "[" +str.tostring(factor + 0.9, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 10, "SuperTrend: " + "[" +str.tostring(factor + 1.0, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 11, "SuperTrend: " + "[" +str.tostring(factor + 1.1, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 12, "SuperTrend: " + "[" +str.tostring(factor + 1.2, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 13, "SuperTrend: " + "[" +str.tostring(factor + 1.3, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 14, "SuperTrend: " + "[" +str.tostring(factor + 1.4, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 15, "SuperTrend: " + "[" +str.tostring(factor + 1.5, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 16, "SuperTrend: " + "[" +str.tostring(factor + 1.6, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 17, "SuperTrend: " + "[" +str.tostring(factor + 1.7, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 18, "SuperTrend: " + "[" +str.tostring(factor + 1.8, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 19, "SuperTrend: " + "[" +str.tostring(factor + 1.9, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 20, "SuperTrend: " + "[" +str.tostring(factor + 2.0, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 21, "SuperTrend: " + "[" +str.tostring(factor + 2.1, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 22, "SuperTrend: " + "[" +str.tostring(factor + 2.2, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 23, "SuperTrend: " + "[" +str.tostring(factor + 2.3, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 24, "SuperTrend: " + "[" +str.tostring(factor + 2.4, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 25, "SuperTrend: " + "[" +str.tostring(factor + 2.5, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 26, "SuperTrend: " + "[" +str.tostring(factor + 2.6, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 27, "SuperTrend: " + "[" +str.tostring(factor + 2.7, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 28, "SuperTrend: " + "[" +str.tostring(factor + 2.8, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 29, "SuperTrend: " + "[" +str.tostring(factor + 2.9, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 30, "SuperTrend: " + "[" +str.tostring(factor + 3.0, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 31, "SuperTrend: " + "[" +str.tostring(factor + 3.1, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 32, "SuperTrend: " + "[" +str.tostring(factor + 3.2, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 33, "SuperTrend: " + "[" +str.tostring(factor + 3.3, format.mintick) + ", " + str.tostring(atr + 0, "#") + "] ") array.set(best1, 34, "SuperTrend: " + "[" +str.tostring(factor, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 35, "SuperTrend: " + "[" +str.tostring(factor + 0.1, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 36, "SuperTrend: " + "[" +str.tostring(factor + 0.2, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 37, "SuperTrend: " + "[" +str.tostring(factor + 0.3, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 38, "SuperTrend: " + "[" +str.tostring(factor + 0.4, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 39, "SuperTrend: " + "[" +str.tostring(factor + 0.5, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 40, "SuperTrend: " + "[" +str.tostring(factor + 0.6, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 41, "SuperTrend: " + "[" +str.tostring(factor + 0.7, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 42, "SuperTrend: " + "[" +str.tostring(factor + 0.8, format.mintick)+ ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 43, "SuperTrend: " + "[" +str.tostring(factor + 0.9, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 44, "SuperTrend: " + "[" +str.tostring(factor + 1.0, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 45, "SuperTrend: " + "[" +str.tostring(factor + 1.1, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 46, "SuperTrend: " + "[" +str.tostring(factor + 1.2, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 47, "SuperTrend: " + "[" +str.tostring(factor + 1.3, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 48, "SuperTrend: " + "[" +str.tostring(factor + 1.4, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 49, "SuperTrend: " + "[" +str.tostring(factor + 1.5, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 50, "SuperTrend: " + "[" +str.tostring(factor + 1.6, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 51, "SuperTrend: " + "[" +str.tostring(factor + 1.7, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 52, "SuperTrend: " + "[" +str.tostring(factor + 1.8, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 53, "SuperTrend: " + "[" +str.tostring(factor + 1.9, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 54, "SuperTrend: " + "[" +str.tostring(factor + 2.0, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 55, "SuperTrend: " + "[" +str.tostring(factor + 2.1, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 56, "SuperTrend: " + "[" +str.tostring(factor + 2.2, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 57, "SuperTrend: " + "[" +str.tostring(factor + 2.3, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 58, "SuperTrend: " + "[" +str.tostring(factor + 2.4, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 59, "SuperTrend: " + "[" +str.tostring(factor + 2.5, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 60, "SuperTrend: " + "[" +str.tostring(factor + 2.6, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 61, "SuperTrend: " + "[" +str.tostring(factor + 2.7, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 62, "SuperTrend: " + "[" +str.tostring(factor + 2.8, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 63, "SuperTrend: " + "[" +str.tostring(factor + 2.9, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 64, "SuperTrend: " + "[" +str.tostring(factor + 3.0, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 65, "SuperTrend: " + "[" +str.tostring(factor + 3.1, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 66, "SuperTrend: " + "[" +str.tostring(factor + 3.2, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 67, "SuperTrend: " + "[" +str.tostring(factor + 3.3, format.mintick) + ", " + str.tostring(atr + 1, "#") + "] ") array.set(best1, 68, "SuperTrend: " + "[" +str.tostring(factor, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 69, "SuperTrend: " + "[" +str.tostring(factor + 0.1, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 70, "SuperTrend: " + "[" +str.tostring(factor + 0.2, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 71, "SuperTrend: " + "[" +str.tostring(factor + 0.3, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 72, "SuperTrend: " + "[" +str.tostring(factor + 0.4, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 73, "SuperTrend: " + "[" +str.tostring(factor + 0.5, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 74, "SuperTrend: " + "[" +str.tostring(factor + 0.6, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 75, "SuperTrend: " + "[" +str.tostring(factor + 0.7, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 76, "SuperTrend: " + "[" +str.tostring(factor + 0.8, format.mintick)+ ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 77, "SuperTrend: " + "[" +str.tostring(factor + 0.9, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 78, "SuperTrend: " + "[" +str.tostring(factor + 1.0, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 79, "SuperTrend: " + "[" +str.tostring(factor + 1.1, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 80, "SuperTrend: " + "[" +str.tostring(factor + 1.2, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 81, "SuperTrend: " + "[" +str.tostring(factor + 1.3, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 82, "SuperTrend: " + "[" +str.tostring(factor + 1.4, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 83, "SuperTrend: " + "[" +str.tostring(factor + 1.5, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 84, "SuperTrend: " + "[" +str.tostring(factor + 1.6, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 85, "SuperTrend: " + "[" +str.tostring(factor + 1.7, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 86, "SuperTrend: " + "[" +str.tostring(factor + 1.8, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 87, "SuperTrend: " + "[" +str.tostring(factor + 1.9, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 88, "SuperTrend: " + "[" +str.tostring(factor + 2.0, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 89, "SuperTrend: " + "[" +str.tostring(factor + 2.1, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 90, "SuperTrend: " + "[" +str.tostring(factor + 2.2, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 91, "SuperTrend: " + "[" +str.tostring(factor + 2.3, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 92, "SuperTrend: " + "[" +str.tostring(factor + 2.4, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 93, "SuperTrend: " + "[" +str.tostring(factor + 2.5, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 94, "SuperTrend: " + "[" +str.tostring(factor + 2.6, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 95, "SuperTrend: " + "[" +str.tostring(factor + 2.7, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 96, "SuperTrend: " + "[" +str.tostring(factor + 2.8, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 97, "SuperTrend: " + "[" +str.tostring(factor + 2.9, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 98, "SuperTrend: " + "[" +str.tostring(factor + 3.0, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 99, "SuperTrend: " + "[" +str.tostring(factor + 3.1, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 100, "SuperTrend: " + "[" +str.tostring(factor + 3.2, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") array.set(best1, 101, "SuperTrend: " + "[" +str.tostring(factor + 3.3, format.mintick) + ", " + str.tostring(atr + 2, "#") + "] ") [cumulativePerformanceNameSorted, cumulativePerformanceSorted] = f_sort_by_array(best1, best, false) // _______________________________________________________ // // Attaching an Identifier to Optimized Parameters // _______________________________________________________ o = array.get(cumulativePerformanceSorted, 0) var p = 0.0 var t = 0.0 if o == x2 p := s1 t := d1 else if o == x4 p := s2 t := d2 else if o == x6 p := s3 t := d3 else if o == x8 p := s4 t := d4 else if o == x10 p := s5 t := d5 else if o == x12 p := s6 t := d6 else if o == x14 p := s7 t := d7 else if o == x16 p := s8 t := d8 else if o == x18 p := s9 t := d9 else if o == x20 p := s10 t := d10 else if o == x22 p := s11 t := d11 else if o == x24 p := s12 t := d12 else if o == x26 p := s13 t := d13 else if o == x28 p := s14 t := d14 else if o == x30 p := s15 t := d15 else if o == x32 p := s16 t := d16 else if o == x34 p := s17 t := d17 else if o == x36 p := s18 t := d18 else if o == x38 p := s19 t := d19 else if o == x40 p := s20 t := d20 else if o == x42 p := s21 t := d21 else if o == x44 p := s22 t := d22 else if o == x46 p := s23 t := d23 else if o == x48 p := s24 t := d24 else if o == x50 p := s25 t := d25 else if o == x52 p := s26 t := d26 else if o == x54 p := s27 t := d27 else if o == x56 p := s28 t := d28 else if o == x58 p := s29 t := d29 else if o == x60 p := s30 t := d30 else if o == x62 p := s31 t := d31 else if o == x64 p := s32 t := d32 else if o == x66 p := s33 t := d33 else if o == x68 p := s34 t := d34 else if o == x70 p := sB1 t := dB1 else if o == x72 p := sB2 t := dB2 else if o == x74 p := sB3 t := dB3 else if o == x76 p := sB4 t := dB4 else if o == x78 p := sB5 t := dB5 else if o == x80 p := sB6 t := dB6 else if o == x82 p := sB7 t := dB7 else if o == x84 p := sB8 t := dB8 else if o == x86 p := sB9 t := dB9 else if o == x88 p := sB10 t := dB10 else if o == x90 p := sB11 t := dB11 else if o == x92 p := sB12 t := dB12 else if o == x94 p := sB13 t := dB13 else if o == x96 p := sB14 t := dB14 else if o == x98 p := sB15 t := dB15 else if o == x100 p := sB16 t := dB16 else if o == x102 p := sB17 t := dB17 else if o == x104 p := sB18 t := dB18 else if o == x106 p := sB19 t := dB19 else if o == x108 p := sB20 t := dB20 else if o == x110 p := sB21 t := dB21 else if o == x112 p := sB22 t := dB22 else if o == x114 p := sB23 t := dB23 else if o == x116 p := sB24 t := dB24 else if o == x118 p := sB25 t := dB25 else if o == x120 p := sB26 t := dB26 else if o == x122 p := sB27 t := dB27 else if o == x124 p := sB28 t := dB28 else if o == x126 p := sB29 t := dB29 else if o == x128 p := sB30 t := dB30 else if o == x130 p := sB31 t := dB31 else if o == x132 p := sB32 t := dB32 else if o == x134 p := sB33 t := dB33 else if o == x136 p := sB34 t := dB34 else if o == xC70 p := sC1 t := dC1 else if o == xC72 p := sC2 t := dC2 else if o == xC74 p := sC3 t := dC3 else if o == xC76 p := sC4 t := dC4 else if o == xC78 p := sC5 t := dC5 else if o == xC80 p := sC6 t := dC6 else if o == xC82 p := sC7 t := dC7 else if o == xC84 p := sC8 t := dC8 else if o == xC86 p := sC9 t := dC9 else if o == xC88 p := sC10 t := dC10 else if o == xC90 p := sC11 t := dC11 else if o == xC92 p := sC12 t := dC12 else if o == xC94 p := sC13 t := dC13 else if o == xC96 p := sC14 t := dC14 else if o == xC98 p := sC15 t := dC15 else if o == xC100 p := sC16 t := dC16 else if o == xC102 p := sC17 t := dC17 else if o == xC104 p := sC18 t := dC18 else if o == xC106 p := sC19 t := dC19 else if o == xC108 p := sC20 t := dC20 else if o == xC110 p := sC21 t := dC21 else if o == xC112 p := sC22 t := dC22 else if o == xC114 p := sC23 t := dC23 else if o == xC116 p := sC24 t := dC24 else if o == xC118 p := sC25 t := dC25 else if o == xC120 p := sC26 t := dC26 else if o == xC122 p := sC27 t := dC27 else if o == xC124 p := sC28 t := dC28 else if o == xC126 p := sC29 t := dC29 else if o == xC128 p := sC30 t := dC30 else if o == xC130 p := sC31 t := dC31 else if o == xC132 p := sC32 t := dC32 else if o == xC134 p := sC33 t := dC33 else if o == xC136 p := sC34 t := dC34 // _______________________________________________________ // // Plot Optimized Parameters.. Or Override ST // _______________________________________________________ midS = plot((open + close) / 2, display=display.none, title = "[(Open + Close) / 2] Average Price") upS = plot(ovr == "Off" and t < 0 ? p : na, "Up Trend", color = #02ff00, style=plot.style_linebr) downS = plot(ovr == "Off" and t > 0 ? p : na, "Down Trend", color = #ff0500, style=plot.style_linebr) fill(midS, upS, ovr == "Off" ? color.new(#ffffff, 90) : na, fillgaps=false, title = "Uptrend Fill") fill(midS, downS, ovr == "Off" ? color.new(#000000, 90) : na, fillgaps=false, title = "Downtrend Fill") upO = plot(ovr == "On" and d < 0 ? s : na, "Up Trend (OVERRIDE ST)", color = color.blue, style=plot.style_linebr) downO = plot(ovr == "On" and d > 0 ? s : na, "Down Trend (OVERRIDE ST)", color = color.orange, style=plot.style_linebr) var label [] buy = array.new_label(1) if t[1] == 1 and t == -1 and ovr == "Off" array.push(buy, label.new(bar_index, p * .99, style = label.style_label_up, textcolor = color.green, color = color.new(color.black,50), text = "Long")) else if d[1] == 1 and d == -1 and ovr == "On" array.push(buy, label.new(bar_index, s * .99, style = label.style_label_up, textcolor = color.orange, color = color.new(color.black,50), text = "Long")) // _______________________________________________________ // // Performance Table // _______________________________________________________ arrayText = "" allText = "" allText2 = "" var table tablePerformance = na if barstate.islast tablePerformance := table.new(position.bottom_right, 10, 10, bgcolor = color.new(color.white, 100)) if select == "Best" and tab == "Top Three" for i = 0 to 2 arrayText := arrayText + array.get(cumulativePerformanceNameSorted, i) + str.tostring(array.get(cumulativePerformanceSorted, i), format.percent) +"\n\n" else if select == "Worst" array.reverse(cumulativePerformanceSorted) array.reverse(cumulativePerformanceNameSorted) if tab == "Top Three" for i = 0 to 2 arrayText := arrayText + array.get(cumulativePerformanceNameSorted, i) + str.tostring(array.get(cumulativePerformanceSorted, i), format.percent) +"\n\n" if tab == "All" for i = 0 to 33 arrayText := arrayText + array.get(cumulativePerformanceNameSorted, i) + str.tostring(array.get(cumulativePerformanceSorted, i), format.percent) +"\n\n" for i = 34 to 67 allText := allText + array.get(cumulativePerformanceNameSorted, i) + str.tostring(array.get(cumulativePerformanceSorted, i), format.percent) +"\n\n" for i = 68 to 101 allText2 := allText2 + array.get(cumulativePerformanceNameSorted, i) + str.tostring(array.get(cumulativePerformanceSorted, i), format.percent) +"\n\n" table.cell(tablePerformance, 2, 2, text = allText, text_color = color.blue, text_size = size.tiny, bgcolor = color.new(color.black, 50)) table.cell(tablePerformance, 3, 2, text = allText2, text_color = light == "Off" ? color.red : color.blue, text_size = size.tiny, bgcolor = color.new(color.black, 50)) if tab == "Top Three" if lab == "On" table.cell(tablePerformance, 1,0, text = "Best Performing ST is Automatically Plotted" ,text_color = color.white, text_size = tab == "All" ? size.tiny : size.normal, bgcolor = na) table.cell(tablePerformance, 1,1, text = "Parameters : Performance" ,text_color = light == "Off" ? color.green : color.blue, text_size = tab == "All" ? size.tiny : size.normal, bgcolor = color.new(color.black, 50)) table.cell(tablePerformance, 1,2, text = arrayText ,text_color = light == "Off" ? color.green : color.blue, text_size = tab == "All" ? size.tiny : size.normal, bgcolor = color.new(color.black, 50)) if lab == "On" table.cell(tablePerformance, tab == "All" ? 2 : 1, tab == "All" ? 0 : 3, text = "Parameters Tested: \n\n" + "Factor [" + str.tostring(factor, format.mintick) + " to " + str.tostring(factor + 3.3, format.mintick) + "]" + "\n\nATR Period " + "[" + str.tostring(atr, "#.0") + " to " + str.tostring(atr + 2, "#.0") + "]", text_color = light == "Off" ? color.white : color.blue, text_size = tab == "All" ? size.small : size.normal) if inst == "Yes" table.cell(tablePerformance, 0,4, text_size = size.small, text_color = light == "Off" ? color.white : color.blue, text = "Hello! This indicator attempts to optimize Supertrend parameters. To achieve this, 102 parameter combinations are tested \nconcurrently - the top three performers are \nlisted in descending order. Parameters, \nFactor: Changes to this parameter shifts the tested factor range. \nFor instance, increasing the factor measure from 3.00 to 3. 01 (+0. 01 ) \nwill remove 3.00 from the tested range - this setting controls \nthe lower threshold of the range. The upper threshold, in all instances, is the \nlower Factor threshold + 3.3 (i.e. 3.0(lower) - 6.3(upper), 4.0(lower) - 7.3(upper), 2.5(lower) - 5.8(upper)) \nATR period: Changes to this parameter shifts the tested ATR period range. For instance, increasing \nthe ATR measure from 10 to 11 (+1) will remove 10\n from the tested range - this setting controls the lower threshold of the \nrange. The upper threshold, in all instances, is the lower threshold + 2 \n(i.e. 10(lower) - 12(upper), 11(lower) - 13(upper), 9(lower), - 11(upper)) The Factor \nparameter is modifiable to any positive decimal number; the ATR parameter is modifiable to any positive integer. \nChanging either parameter shifts the tested parameter combination range. \nBoth parameters can be changed in the settings, to which you control the lower threshold \nof the range. If, for instance, you were to change the Factor measurement from 3.0 to 4.1 \n(+1.1) the 4.0 Factor measurement, and all Factor measures less than 4.0, \nwill be excluded from the performance test. Consequently, \na Supertrend test will be performed with a Factor of 4.1 \nand an ATR period of 10 (default). This test repeats at \n0.1 Factor intervals and 1.0 ATR intervals. Therefore, assume you modify the Factor \nlower threshold to 3.1 and the ATR lower threshold to 10. The indicator will test three Supertrend \nsystems with a Factor of 3.1 and an ATR period of 10.. then 11.. 12, then three systems \nwith a Factor of 3.2 and an ATR period of 10.. then 11.. 12... \nuntil (lower Factor threshold + 3.3) and (lower ATR threshold + 2) are tested... \nwhich in this example is... a Factor of 6.4 and an ATR period of 12. The tested Factor \nrange and ATR range are displayed in a bottom right table alongside \nthe top performing parameter combinations. Of course, you can change \nthe the lower thresholds, which means you can test numerous Supertrend \nparameter combinations! However, no greater than 102 parameter combinations\n will be tested simultaneously; the best performing Supertrend parameters are plotted \non the chart automatically. The indicator tests LONG positions ONLY! Traditional Supertrend sell signals are \nconsidered LONG EXIT signals - \nwhich are calculated for profit/loss. Performance calculations are predicated on CUMULATIVE \ngains, not average gain/loss! Also, it's good to be prudent with an indicator \nlike this! Automated optimization can lead to \nover optimization!") // _______________________________________________________ // // FUN // _______________________________________________________ // _______________________________________________________ // // Raining Candlesticks (Rocketship?) // _______________________________________________________ var line [] n = array.new_line(1) var line [] n1 = array.new_line(1) var linefill [] b = array.new_linefill(1) var line[] c = array.new_line(1) var line [] c1 = array.new_line(1) var line [] l = array.new_line(1) var line [] l1 = array.new_line(1) var line [] l2 = array.new_line(1) var line [] l3 = array.new_line(1) var box[] bo = array.new_box(1) var box[] bo1 = array.new_box(1) var box[] bo2 = array.new_box(1) var box[] bo3 = array.new_box(1) var label [] btc = array.new_label(1) var label [] eth = array.new_label(1) var label [] zCash = array.new_label(1) var label[] doge = array.new_label(1) var label [] rocket = array.new_label(1) [mid, up, lo] = ta.bb(ohlc4, 20, 2.0) emalo = ta.sma(lo, 200) emahi = ta.ema(up, 2) var int counter = 0 var int counter1 = 0 if counter < 30 counter += 1 if counter == 30 counter := 0 if counter1 < 50 counter1 += 1 if counter1 == 50 counter1 := 0 h = ta.highest(high, 250) rain = input.string(defval = "Sunny Day", title = 'Raining ?', options = ["Candles", "Crypto", "Sunny Day", "Rocketship?"], group = 'Leave on "Sunny Day" for the chart to remain unaffected; changing the settings below does not affect script calculations. If you want to try these with Bar Replay, be sure to change the "Show Performers" tab to "Top Three" to increase chart space!') if barstate.islast if rain != "Sunny Day" and rain != "Rocketship?" array.push(n, line.new(bar_index + 150, emahi[1], bar_index + 151, emahi, color = color.gray)) array.push(n1, line.new(bar_index + 150, emalo[1], bar_index + 151, emalo, color = color.gray)) array.push(b, linefill.new(array.get(n, array.size(n) - 1), array.get(n1, array.size(n1) - 1), color.new(color.gray,50))) array.push(c, line.new(bar_index + 101, emahi[50], bar_index + 101, emalo[50], color = color.gray)) array.push(c1, line.new(bar_index + 151, emahi, bar_index + 151, emalo, color = color.gray)) if rain == "Candles" array.push(bo, box.new(bar_index + 110, emalo[40] - counter[5], bar_index + 112, emalo[40] - counter, bgcolor = counter > 5 and close[5] > open[5] ? color.green : counter > 5 and close[5] < open[5] ? color.red : na, border_color = counter > 5 and close[5] > open[5] ? color.green : counter > 5 and close[5] < open[5] ? color.red : na)) array.push(bo1, box.new(bar_index + 130, emalo[20] - counter[5], bar_index + 132, emalo[20] - counter, bgcolor = counter > 8 and close[3] > open[3] ? color.green : counter > 8 and close[3] < open[3] ? color.red : na, border_color = counter > 8 and close[3] > open[3] ? color.green : counter > 8 and close[3] < open[3] ? color.red : na)) array.push(bo2, box.new(bar_index + 120, emalo[30] - counter[5], bar_index + 122, emalo[30] - counter, bgcolor = counter > 11 and close[4] > open[4] ? color.green : counter > 11 and close[4] < open[4] ? color.red : na, border_color = counter > 11 and close[4] > open[4] ? color.green : counter > 14 and close[4] < open[4] ? color.red : na)) array.push(bo3, box.new(bar_index + 140, emalo[10] - counter[5], bar_index + 142, emalo[10] - counter, bgcolor = counter > 14 and close[2] > open[2] ? color.green : counter > 14 and close[2] < open[2] ? color.red : na, border_color = counter > 14 and close[2] > open[2] ? color.green : counter > 18 and close[2] < open[2] ? color.red : na)) array.push(l, line.new(bar_index + 111, box.get_top(array.get(bo, 0)) * 1.01, bar_index + 111, box.get_bottom(array.get(bo, 0)) * .99, color = counter > 5 and close[5] > open[5] ? color.green : counter > 5 and close[5] < open[5] ? color.red : na)) array.push(l1, line.new(bar_index + 121, box.get_top(array.get(bo1, 0)) * 1.01, bar_index + 121, box.get_bottom(array.get(bo1, 0)) * .99, color = counter > 11 and close[4] > open[4] ? color.green : counter > 11 and close[4] < open[4] ? color.red : na)) array.push(l2, line.new(bar_index + 131, box.get_top(array.get(bo2, 0)), bar_index + 131, box.get_bottom(array.get(bo2, 0)) * .98, color = counter > 8 and close[3] > open[3] ? color.green : counter > 8 and close[3] < open[3] ? color.red : na)) array.push(l3, line.new(bar_index + 141, box.get_top(array.get(bo3, 0)) * 1.02, bar_index + 141, box.get_bottom(array.get(bo3, 0)) * .98, color = counter > 14 and close[2] > open[2] ? color.green : counter > 14 and close[2] < open[2] ? color.red : na)) if rain == "Crypto" array.push(btc, label.new(bar_index + 111, emalo[40] - counter1[5], text = "₿", color = na, textcolor = counter1 > 5 ? color.yellow : na, size = size.large)) array.push(eth, label.new(bar_index + 121, emalo[30] - counter1[5], text = "⟠", color = na, textcolor = counter1 > 14 ? color.blue : na, size = size.huge)) array.push(zCash, label.new(bar_index + 131, emalo[20] - counter1[5], text = "ⓩ", color = na, textcolor = counter1 > 11? color.red : na, size = size.normal)) array.push(doge, label.new(bar_index + 141, emalo[10] - counter1[5], text = "🐶", color = na, textcolor = counter1 > 18 ? color.black : na, size = size.normal)) if rain == "Rocketship?" array.push(rocket, label.new(bar_index + bar_index % 200, h + bar_index % 200, text = "🚀", color = na)) if array.size(n) > 50 if rain != "Sunny Day" line.delete(array.shift(n)) line.delete(array.shift(n1)) linefill.delete(array.shift(b)) if array.size(c) > 1 line.delete(array.shift(c)) line.delete(array.shift(c1)) if array.size(l) > 1 and rain == "Candles" line.delete(array.shift(l)) line.delete(array.shift(l1)) line.delete(array.shift(l2)) line.delete(array.shift(l3)) box.delete(array.shift(bo)) box.delete(array.shift(bo1)) box.delete(array.shift(bo2)) box.delete(array.shift(bo3)) if rain == "Crypto" and array.size(btc) > 1 label.delete(array.shift(btc)) label.delete(array.shift(eth)) label.delete(array.shift(zCash)) label.delete(array.shift(doge)) var table tt = na if barstate.islast tt := table.new(position.top_right, 5, 5) if rain == "Rocketship?" and array.size(rocket) > 1 label.delete(array.shift(rocket)) table.cell(tt,0, 0, text = "🌕", text_size = size.huge) uptrendCondition = t < 0 downtrendCondition = t > 0 sourceSignal = input.source(close) buySignal = sourceSignal == 1 and downtrendCondition downtrendSignal = downtrendCondition and uptrendCondition[1] uptrendSignal = uptrendCondition and downtrendCondition[1] plotshape(buySignal,"B",shape.labelup,location = location.belowbar, color = color.purple,text = "B",textcolor = color.white) plotshape(downtrendSignal,"D",shape.labelup,location = location.belowbar, color = color.red,text = "D",textcolor = color.white) plotshape(uptrendSignal,"U",shape.labeldown,location = location.abovebar, color = color.green,text = "U",textcolor = color.white) alertcondition(downtrendSignal, "downtrend") alertcondition(buySignal, "buy") alertcondition(uptrendSignal, "uptrend") plot(buySignal ? 1 : downtrendSignal ? 2 : na, "signal", color = na) plot(t < 0 ? 1 : 2, "steady trend")