QuaScript DocumentationLanguage guide, engine API, 601 builtins and the preset library · v3.0.0-phase1 colorPalette explorerSearch colorsall50100200300400500600700800900950Click setsAB50100200300400500600700800900950redtomatocoralbrownbronzecoppercoffeeorangesandamberyellowgoldchartreuseolivelimegreenemeraldminttealaquacyanskyAnavyslateblueindigovioletlavenderpurpleplumfuchsiamagentapinkrubycrimsonroseBneutralzincstonesagegraycharcoalmauvesilvercolor.sky.400#38bdf8namecolor.sky.400hex#38bdf8rgb56, 189, 248hsl198°, 93%, 60%Aa 123.45on black: 9.80 · AAAAa 123.45on white: 2.14 · failTransparency (color.translucent(c, t), 0 = opaque)02040608090Gradient A → Bcolor.sky.400 → color.rose.500Use the selectionselection.qsanalysis "Palette: sky" { overlay = false } m = ta.rsi(close, 14) - 50 heat = color.gradient(m, -20, 20, color.rose.500, color.sky.400) render.histogram(m, "Momentum", color = heat) render.line(ta.ema(m, 9), "Signal", color = color.sky.400, width = 2) render.area(m, "Area", base = 0, color = color.translucent(color.sky.400, 85))Rainbow at shade50100200300400500600700800900950redtomatocoralbrownbronzecoppercoffeeorangesandamberyellowgoldchartreuseolivelimegreenemeraldminttealaquacyanskynavyslateblueindigovioletlavenderpurpleplumfuchsiamagentapinkrubycrimsonroserainbow_ribbon.qsanalysis "Rainbow ribbon" { overlay = true } // one moving average per family, in rainbow order render.line(ta.ema(close, 8), "EMA 8", color = color.red.400) render.line(ta.ema(close, 14), "EMA 14", color = color.coral.400) render.line(ta.ema(close, 20), "EMA 20", color = color.bronze.400) render.line(ta.ema(close, 26), "EMA 26", color = color.coffee.400) render.line(ta.ema(close, 32), "EMA 32", color = color.sand.400) render.line(ta.ema(close, 38), "EMA 38", color = color.yellow.400) render.line(ta.ema(close, 44), "EMA 44", color = color.chartreuse.400) render.line(ta.ema(close, 50), "EMA 50", color = color.lime.400)Generated from the engine catalog by tools/gen-docs.mjs; do not edit.Palette constants: color.<family>.<shade> for 44 families (slate, gray, zinc, neutral, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, gold, silver, bronze, copper, navy, charcoal, brown, coffee, sand, olive, sage, mint, chartreuse, aqua, coral, tomato, crimson, ruby, magenta, plum, lavender, mauve) and shades 50, 100, 200 … 900, 950.The palettePalette valuesFamily50100200300400500600700800900950slate#f8fafc#f1f5f9#e2e8f0#cbd5e1#94a3b8#64748b#475569#334155#1e293b#0f172a#020617gray#f9fafb#f3f4f6#e5e7eb#d1d5db#9ca3af#6b7280#4b5563#374151#1f2937#111827#030712zinc#fafafa#f4f4f5#e4e4e7#d4d4d8#a1a1aa#71717a#52525b#3f3f46#27272a#18181b#09090bneutral#fafafa#f5f5f5#e5e5e5#d4d4d4#a3a3a3#737373#525252#404040#262626#171717#0a0a0astone#fafaf9#f5f5f4#e7e5e4#d6d3d1#a8a29e#78716c#57534e#44403c#292524#1c1917#0c0a09red#fef2f2#fee2e2#fecaca#fca5a5#f87171#ef4444#dc2626#b91c1c#991b1b#7f1d1d#450a0aorange#fff7ed#ffedd5#fed7aa#fdba74#fb923c#f97316#ea580c#c2410c#9a3412#7c2d12#431407amber#fffbeb#fef3c7#fde68a#fcd34d#fbbf24#f59e0b#d97706#b45309#92400e#78350f#451a03yellow#fefce8#fef9c3#fef08a#fde047#facc15#eab308#ca8a04#a16207#854d0e#713f12#422006lime#f7fee7#ecfccb#d9f99d#bef264#a3e635#84cc16#65a30d#4d7c0f#3f6212#365314#1a2e05green#f0fdf4#dcfce7#bbf7d0#86efac#4ade80#22c55e#16a34a#15803d#166534#14532d#052e16emerald#ecfdf5#d1fae5#a7f3d0#6ee7b7#34d399#10b981#059669#047857#065f46#064e3b#022c22teal#f0fdfa#ccfbf1#99f6e4#5eead4#2dd4bf#14b8a6#0d9488#0f766e#115e59#134e4a#042f2ecyan#ecfeff#cffafe#a5f3fc#67e8f9#22d3ee#06b6d4#0891b2#0e7490#155e75#164e63#083344sky#f0f9ff#e0f2fe#bae6fd#7dd3fc#38bdf8#0ea5e9#0284c7#0369a1#075985#0c4a6e#082f49blue#eff6ff#dbeafe#bfdbfe#93c5fd#60a5fa#3b82f6#2563eb#1d4ed8#1e40af#1e3a8a#172554indigo#eef2ff#e0e7ff#c7d2fe#a5b4fc#818cf8#6366f1#4f46e5#4338ca#3730a3#312e81#1e1b4bviolet#f5f3ff#ede9fe#ddd6fe#c4b5fd#a78bfa#8b5cf6#7c3aed#6d28d9#5b21b6#4c1d95#2e1065purple#faf5ff#f3e8ff#e9d5ff#d8b4fe#c084fc#a855f7#9333ea#7e22ce#6b21a8#581c87#3b0764fuchsia#fdf4ff#fae8ff#f5d0fe#f0abfc#e879f9#d946ef#c026d3#a21caf#86198f#701a75#4a044epink#fdf2f8#fce7f3#fbcfe8#f9a8d4#f472b6#ec4899#db2777#be185d#9d174d#831843#500724rose#fff1f2#ffe4e6#fecdd3#fda4af#fb7185#f43f5e#e11d48#be123c#9f1239#881337#4c0519gold#fffbeb#fef08a#fde047#facc15#eab308#d4af37#b8860b#996515#78510d#54390b#332205silver#f8f9fa#f1f3f5#e9ecef#dee2e6#ced4da#adb5bd#868e96#495057#343a40#212529#121416bronze#fdf8f6#f2e8e5#e4d2cc#d1b4ab#ba9285#a17464#8c5e50#72493e#5c3a31#4d3129#2a1914copper#fdf7f4#f8ede6#f0d9cb#e3beaa#cf997f#b87355#a15d40#834a33#6b3c29#573223#32190fnavy#f0f4f8#d9e2ec#bcccdc#9fb3c8#627d98#334e68#243b53#102a43#0b1f33#061424#030a14charcoal#f5f5f6#e5e6e8#cdcfd3#a9adb5#7d828e#5b616e#464a55#383b44#2a2c33#1d1e23#0f0f12brown#fdf8f6#f2e8e5#eaddd7#d0b8ac#b08974#8d5b4c#77493b#623b2f#523228#442a22#281712coffee#fbf8f6#f4ece7#e6d6cd#d2b8a8#b3917c#8d6750#734f3b#5e3e2d#4e3325#422c20#26170fsand#fcfbf9#f6f3ee#ede6dc#ded2c2#c7b59f#a8947c#8f7a63#73614e#5e4f41#4e4238#2e261folive#fbfcf8#f4f6ec#e7ebda#d4dcbe#b5c496#8f9e6d#728052#596440#474f34#3d432e#202417sage#f6f7f6#e3e7e4#c8d1cb#a9b7ad#8b9c90#6e7f73#57655b#46514a#3a423d#323834#1b1f1dmint#f0fdf9#ccfbef#99f6df#5eead0#2dd4b7#14b89d#0d947e#0f7665#115e52#134e44#042f29chartreuse#fbfee7#f5fec2#ecfd8a#dcfb49#c4f114#a3d900#7fae00#5f8300#4c6606#40550a#213000aqua#f0fdff#dcf8fc#b5f0f8#7ee3f1#3ecfe5#00bcd4#009cb3#007d91#046474#085360#02353fcoral#fff7f5#ffeee9#fed8ce#fcbda9#f99576#f06a4b#db4d2c#b63a1e#93301a#792b1a#431309tomato#fff5f3#ffe7e2#fed2c8#fdb1a2#f8816a#ef4f30#d93315#b4250c#92200d#791f11#440b03crimson#fff1f2#ffe1e4#fecdd3#fda4af#f7556d#dc143c#b90e31#960926#77071d#5a0415#38020cruby#fff0f3#ffccd5#ffb3c1#ff8fa3#ff4d6d#c9184a#a4133c#800f2f#590d22#3c0817#24040dmagenta#fdf2f9#fce7f3#f9cee5#f4a4cd#eb67a9#d92683#bd166b#9c1055#7e1144#67133a#3e041fplum#fbf7fc#f5ebf8#ebd6f2#dcb8e7#c490d6#a665be#8c4da3#733c85#5f336d#4f2c59#33173clavender#faf7fe#f2ebfd#e6d8fb#d3bbf7#b895f0#9b6ee5#824fd4#6e3bbe#5b2f9f#4b2881#2e1454mauve#faf8f9#f2edf0#e4dae0#d0c1cb#b5a1ae#998392#7e6977#665460#554650#483c44#2c2229ConstantsNameValueMeaningcolor.black0Black.color.transparent16777216Fully transparent.color.white16777215White.color.alphascript.qscolor.alpha(color) -> numTransparency of the color (0..100).ArgumentKindDefaultNotescolorcolorrequiredcolor.complementscript.qscolor.complement(color) -> colorComplementary hue.ArgumentKindDefaultNotescolorcolorrequiredcolor.contrastscript.qscolor.contrast(color1, color2) -> numContrast ratio of two colors (1 .. 21).ArgumentKindDefaultNotescolor1colorrequiredcolor2colorrequiredcolor.darkenscript.qscolor.darken(color, amount = 50) -> colorMix towards black by amount percent.ArgumentKindDefaultNotescolorcolorrequiredamountnum50color.gradientscript.qscolor.gradient(x, min, max, color1, color2) -> colorBlend from color1 (x <= min) to color2 (x >= max).ArgumentKindDefaultNotesxnumrequiredminnumrequiredmaxnumrequiredcolor1colorrequiredcolor2colorrequiredcolor.grayscalescript.qscolor.grayscale(color) -> colorLuminance-preserving gray.ArgumentKindDefaultNotescolorcolorrequiredcolor.harmonicsscript.qscolor.harmonics(color, scheme = 0) -> colorHarmonic partner hue (0 triad, 1 analogous, 2 split complement, 3 tetrad).ArgumentKindDefaultNotescolorcolorrequiredschemeint0color.hsvscript.qscolor.hsv(h, s, v) -> colorColor from hue (0..360), saturation and value (0..1).ArgumentKindDefaultNoteshnumrequiredsnumrequiredvnumrequiredcolor.invertscript.qscolor.invert(color) -> colorInverted channels.ArgumentKindDefaultNotescolorcolorrequiredcolor.lightenscript.qscolor.lighten(color, amount = 50) -> colorMix towards white by amount percent.ArgumentKindDefaultNotescolorcolorrequiredamountnum50color.rampscript.qscolor.ramp(x, min, max, palette = viridis, transparency = 0) -> colorColor of x on a multi-stop palette, scaled from min (first stop) to max (last stop). Swap min and max to reverse it.ArgumentKindDefaultNotesxnumrequiredminnumrequiredmaxnumrequiredpalettetextviridisone of viridis, magma, inferno, plasma, cividis, turbo, spectral, coolwarm, terrain, pnltransparencynum0script.qsrender.histogram(z, "Z", color = color.ramp(z, -3, 3, "coolwarm"))color.readablescript.qscolor.readable(color) -> colorBlack or white, whichever reads better on the color.ArgumentKindDefaultNotescolorcolorrequiredcolor.rgbscript.qscolor.rgb(r, g, b, transparency = 0) -> colorColor from 0..255 channels and 0..100 transparency.ArgumentKindDefaultNotesrnumrequiredgnumrequiredbnumrequiredtransparencynum0color.translucentscript.qscolor.translucent(color, transparency) -> colorThe color with a transparency of 0 (opaque) .. 100 (invisible).ArgumentKindDefaultNotescolorcolorrequiredtransparencynumrequired← mathrender: outputs →All 81 chaptersGuideGetting startedScript headersLanguage basicsFunctionsStructs, enums and traitsLibrariesParametersRenderingColorsDrawingsCollectionsTime, sessions and dataStrategiesBotsExecution modelBuilding complex analysesAdvancedChart styles by exampleEngineEngine APIPerformanceDiagnosticsReferenceta: technical analysisstat: statisticsmathcolorrender: outputsdraw: drawing objectsarraylistmapgridtablestr: textparam: settingsbarassetintervaltimesessionfeed: other intervalsalertorderexitpositionportfolioriskbook: order book (host data)orderbook (host data)derivative (host data)financial (host data)option pricinganchorshapestyleraysidepanechartaccounthftPresetsEvery chartGalleryLanguage showcasesbookFundamentals and flowsWebGPU StudioMicrostructureTrendlines and levelsMoving averagesMomentumMultiple intervalsLayoutsMarket structureStatisticsTrendVolatilityVolumeVertical panesBotsChart stylesLibrariesStrategies