{"id":8880,"date":"2026-10-15T17:15:00","date_gmt":"2026-10-15T17:15:00","guid":{"rendered":"https:\/\/devexperts.com\/blog\/?p=8880"},"modified":"2026-10-15T17:15:01","modified_gmt":"2026-10-15T17:15:01","slug":"from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts","status":"publish","type":"post","link":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/","title":{"rendered":"From SMA to Proprietary Studies: Building Custom Technical Indicators with DXcharts"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Every trading platform comes with standard technical indicators such as SMA, EMA, RSI, MACD, and Bollinger Bands. <a href=\"https:\/\/devexperts.com\/dxcharts\/\" target=\"_blank\" rel=\"noreferrer noopener\">DXcharts<\/a>, our financial charting library, provides these out of the box. It also includes <a href=\"https:\/\/devexperts.com\/release-notes\/dxcharts-updates-custom-studies-for-trading-analytics\/\" target=\"_blank\" rel=\"noreferrer noopener\">custom studies<\/a>, which let your development team write custom technical indicators of the kind traders usually find only in desktop trading terminals.<\/p>\n\n\n<figure class=\"wp-block-post-featured-image\"><img loading=\"lazy\" decoding=\"async\" width=\"2336\" height=\"1314\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"From SMA to Proprietary Studies\" style=\"object-fit:cover;\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp 2336w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-300x169.webp 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-1024x576.webp 1024w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-768x432.webp 768w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-1536x864.webp 1536w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-2048x1152.webp 2048w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-70x39.webp 70w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-454x255.webp 454w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-574x323.webp 574w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-861x484.webp 861w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-290x163.webp 290w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-277x156.webp 277w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-354x199.webp 354w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-531x299.webp 531w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-600x338.webp 600w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-690x388.webp 690w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-728x410.webp 728w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-870x489.webp 870w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-928x522.webp 928w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-1168x657.webp 1168w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-1752x986.webp 1752w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-376x211.webp 376w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner-770x433.webp 770w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/figure>\n\n\n<p class=\"wp-block-paragraph\">For brokers and prop firms, the analytics in your platform no longer depend on a fixed indicator list. You can build the studies your traders need and <a href=\"https:\/\/devexperts.com\/news\/dxcharts-adds-support-for-custom-javascript-indicators-in-latest-update\/\" target=\"_blank\" rel=\"noreferrer noopener\">set your platform apart<\/a> without extensive customization work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below, we walk through four sample studies built with DXcharts: a multi-timeframe range model, an implied-volatility projection, a trend system that colors the price candles, and a multi-signal momentum oscillator. Each one runs natively in the browser. First, we cover the building blocks your developers combine to create them.<\/p>\n\n\n\n<h2 id=\"h-the-building-blocks-of-a-custom-study\" class=\"wp-block-heading\">The building blocks of a custom study<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/dxfeed.com\/market-search\/dxscript\/\" target=\"_blank\" rel=\"noreferrer noopener\">dxScript<\/a>, the client-side scripting layer built on the DXcharts custom studies API, lets developers write custom technical indicators in JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A dxScript Lite study has four parts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Parameters:<\/strong> the inputs a trader can change in the settings dialog.<\/li>\n\n\n\n<li><strong>Plots:<\/strong> the visual outputs declared in the study&#8217;s metadata, such as lines and clouds.<\/li>\n\n\n\n<li><strong>init():<\/strong> an optional function for one-time setup, such as requesting data from another timeframe.<\/li>\n\n\n\n<li><strong>main():<\/strong> a function that runs once per bar and returns one value, or a styled object, for each declared plot.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The plot types and the drawing API define what a study can display. Developers combine the following building blocks as each indicator requires:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>UNIVERSAL_MARKER:<\/strong> a plot that combines a per-bar marker with an optional connecting line. It supports seven line styles (lineStyle: SOLID, SHORTDASHED, DOTTED, and four more) and 17 marker styles (markerStyle: DOT, SQUARE, DIAMOND, STAR, ARROW_UP, ARROW_DOWN, EXTENDED_DASH, and more). The script can override the styling of each bar individually.\u00a0<\/li>\n\n\n\n<li><strong>DIFFERENCE:<\/strong> a pair of plots with the area between them shaded. Use it to draw clouds and bands, for example, to highlight the range between two moving averages.\u00a0<\/li>\n\n\n\n<li><strong>VERTICAL_LINE:<\/strong> an event marker at a specific bar, with an optional text label and font size.\u00a0<\/li>\n\n\n\n<li><strong>drawings.label(&#8230;):<\/strong> a floating heads-up display (HUD) for live statistics and statuses.\u00a0<\/li>\n\n\n\n<li><strong>drawings.bubble(&#8230;):<\/strong> a callout anchored to a price level on a specific bar, with configurable text, color, placement, alignment, and style.\u00a0<\/li>\n\n\n\n<li><strong>chart.changeCandleColor(index, color):<\/strong> recolors the price candles based on conditions the script defines, so the price series itself shows the signal.\u00a0<\/li>\n\n\n\n<li><strong>context.alert(&#8230;):<\/strong> a platform alert that fires when predefined conditions are met.\u00a0<\/li>\n\n\n\n<li><strong>requestSecondaryData \/ secondaryData:<\/strong> lets the script use data from another symbol or timeframe in its calculations, for example daily levels on an intraday chart.\u00a0<\/li>\n\n\n\n<li><strong>input.impVolatility():<\/strong> implied volatility data, available alongside open, high, low, close, and volume (OHLCV) data when the data feed supplies it.\u00a0<\/li>\n\n\n\n<li><strong>Parameter types:<\/strong> INTEGER_RANGE, DOUBLE_RANGE (with precision), ENUM, BOOLEAN, COLOR, STRING, DATE, and TIME. These give traders whole numbers within a min\u2013max range, decimals with a fixed number of decimal places, predefined dropdowns, on\/off switches, color pickers, free text, and calendar and clock inputs. Developers can group parameters into collapsible sections in the settings dialog.\u00a0<\/li>\n\n\n\n<li><strong>utils library:<\/strong> built-in functions for standard technical analysis calculations, including sma, ema, wma, rma, stdev, tr, atr, rsi, highest, lowest, and na, so developers do not have to write common formulas from scratch.\u00a0<\/li>\n<\/ul>\n\n\n\n<h2 id=\"h-sample-1-multitimeframe-data-and-filled-clouds-daily-range-zones\" class=\"wp-block-heading\">Sample 1. Multi-timeframe data and filled clouds: Daily Range Zones&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This indicator projects the day&#8217;s expected range as bands centered on the day&#8217;s open. The bands sit at one to five times the average daily range or, with the Standard deviation option on, at one to five standard-deviation multiples. The result is a set of dynamic support and resistance levels that reset at the start of each trading session.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Intraday traders see daily reference levels without switching timeframes. The study subscribes to a secondary daily data stream in init(), so it calculates the levels on daily candles while the trader views them on an intraday chart:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> \/\/ in init():\n\ncontext.requestSecondaryData(\"daily\", { period: { duration: 1, durationType: \"d\" } });\n\n\/\/ in main():\n\nconst dayOpen = context.secondaryData(\"daily\").open(0); <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The zones are DIFFERENCE plots with per-bar fill colors, and each band carries a dynamic line color so that each new trading day can be easily distinguished.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const AdrHighCloud_Upper = { value: adrHighFirst, color: cloudColor, fillColor: cloudColor };<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"580\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image.png\" alt=\"Multi-timeframe data and filled clouds\" class=\"wp-image-8881\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image.png 936w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-300x186.png 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-768x476.png 768w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-70x43.png 70w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-454x281.png 454w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-574x356.png 574w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-861x534.png 861w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-290x180.png 290w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-277x172.png 277w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-354x219.png 354w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-531x329.png 531w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-273x169.png 273w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-545x338.png 545w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-626x388.png 626w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-662x410.png 662w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-789x489.png 789w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-842x522.png 842w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-341x211.png 341w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-699x433.png 699w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/figure>\n\n\n\n<h2 id=\"h-sample-2-implied-volatility-and-on-chart-statistics-expected-move-bands\" class=\"wp-block-heading\">Sample 2. Implied volatility and on-chart statistics: Expected Move Bands<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This study uses implied volatility to project the week&#8217;s expected high and low as a band. It then counts how often the price closes inside the band or breaks out of it. The study requires a data feed that supplies implied volatility, such as our market data subsidiary, <a href=\"https:\/\/dxfeed.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">dxFeed<\/a>. For <a href=\"https:\/\/devexperts.com\/options-trading-platform\/\" target=\"_blank\" rel=\"noreferrer noopener\">brokers that offer options<\/a>, a study like this puts volatility analysis on the same chart as price action.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It uses <em>IV input<\/em>, <em>bubbles<\/em>, and <em>live stat labels<\/em>. The band is calculated using implied volatility data:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>state.ivGapHi&#91;index] = input.impVolatility(1); \n\nstate.expMove&#91;index]  = input.close(1) * state.ivGapHi&#91;index] * state.expMoveMultiplier;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Breakouts get callout boxes anchored to the relevant bar, and rolling statistics render as a live HUD presented above the main chart.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drawings.bubble(peak === 1, input.high() + 1, \"Peak Cnt=\" + count, \"#FFFFFF\",\n\n { placement: 'above', alignment: 'median', style: 'bubble' });\n\ndrawings.label(showDetail, \"Over EM % \" + pct, \"#FF0000\");<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The band edges use UNIVERSAL_MARKER with markerStyle: EXTENDED_DASH and DOT.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"580\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1.png\" alt=\"Expected Move Bands\" class=\"wp-image-8883\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1.png 936w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-300x186.png 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-768x476.png 768w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-70x43.png 70w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-454x281.png 454w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-574x356.png 574w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-861x534.png 861w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-290x180.png 290w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-277x172.png 277w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-354x219.png 354w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-531x329.png 531w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-273x169.png 273w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-545x338.png 545w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-626x388.png 626w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-662x410.png 662w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-789x489.png 789w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-842x522.png 842w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-341x211.png 341w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-1-699x433.png 699w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/a><\/figure>\n\n\n\n<h2 id=\"h-sample-3-candle-coloring-and-alerts-trendcolored-candles\" class=\"wp-block-heading\">Sample 3. Candle coloring and alerts: Trend-Colored Candles&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This indicator classifies the trend on every bar using the <a href=\"https:\/\/www.fidelity.com\/learning-center\/trading-investing\/technical-analysis\/technical-indicator-guide\/dmi\" target=\"_blank\" rel=\"noreferrer noopener\">Directional Movement Index (DMI)<\/a> and the Average Directional Index (ADX). When +DI is above \u2212DI and ADX exceeds the trend threshold, the trend is bullish. When \u2212DI is above +DI and ADX exceeds the threshold, the trend is bearish. The study recolors each candle to match and can send an alert when the trend turns. Traders can read the trend state directly from the price candles, without a separate indicator pane.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This indicator uses: <em>candle repainting<\/em>, <em>COLOR parameters<\/em>, the <em>utils math library<\/em>, and <em>alerts<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const atr = utils.atr(parameters.DMIlength, index, \"atr\"); \n\nconst &#91;plusDI, minusDI, , adx] = utils.dmi(parameters.DMIlength, parameters.ADXlength, index, \"dmi\"); \n\nstate.long&#91;index] = plusDI > minusDI &amp;&amp; adx > parameters.trendThreshold; \n\nstate.short&#91;index] = minusDI > plusDI &amp;&amp; adx > parameters.trendThreshold; \n\nchart.changeCandleColor(index, \n\n state.long&#91;index] ? parameters.colorBullish : \n\n state.short&#91;index] ? parameters.colorBearish : parameters.colorNeutral); \n\ncontext.alert(parameters.enableAlerts &amp;&amp; state.long&#91;index] &amp;&amp; !prevLong, \n\n \"Trend turned bullish\", \"CANDLE\", \"BELL\");<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Colors are fully user-configurable via type: &#8220;COLOR&#8221; settings with no hard-coded palette.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"580\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2.png\" alt=\"Trend-Colored Candles\" class=\"wp-image-8884\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2.png 936w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-300x186.png 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-768x476.png 768w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-70x43.png 70w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-454x281.png 454w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-574x356.png 574w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-861x534.png 861w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-290x180.png 290w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-277x172.png 277w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-354x219.png 354w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-531x329.png 531w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-273x169.png 273w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-545x338.png 545w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-626x388.png 626w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-662x410.png 662w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-789x489.png 789w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-842x522.png 842w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-341x211.png 341w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-2-699x433.png 699w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/a><\/figure>\n\n\n\n<h2 id=\"h-sample-4-a-full-lower-pane-system-threestage-momentum-oscillator\" class=\"wp-block-heading\">Sample 4. A full lower pane system: Three-Stage Momentum Oscillator&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Three-Stage Momentum Oscillator is a three-in-one technical indicator that lives in a pane below the main chart (like RSI and MACD) and can be used as a complete trading system. This indicator uses a triple exponential moving average to reduce signal lag, a triple stochastic oscillator to smooth out false positives, and the Directional Movement Index to identify trends.\u00a0\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The study provides traders with a complete three-stage setup, with buy\/sell clouds, directional arrows, and vertical event lines.\u00a0\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This indicator combines many of the building blocks described above: dynamic-color markers, DIFFERENCE clouds, and VERTICAL_LINE events that carry a text label:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ plot declaration \n\n{ id: \"stage\", title: \"Stage\", type: \"VERTICAL_LINE\", lineStyle: \"SHORTDASHED\" } \n\n\/\/ per bar: a labeled vertical event, colored by stage \n\nconst stage = { \n\n value: fired ? 1 : NaN, \n\n text: Math.abs(state.sc&#91;index]) > 1 ? \"TRIGGER\" : \"SETUP\", \n\n color: state.sc&#91;index] > 1 ? parameters.colorTriggerBuy : parameters.colorSetupBuy \n\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">It also makes use of signal squares (markerStyle: SQUARE) and entry arrows (ARROW_UP \/ ARROW_DOWN), providing a complex identification, confirmation, and entry system created all in one script.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"580\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3.png\" alt=\"Three-Stage Momentum Oscillator\" class=\"wp-image-8885\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3.png 936w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-300x186.png 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-768x476.png 768w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-70x43.png 70w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-454x281.png 454w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-574x356.png 574w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-861x534.png 861w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-290x180.png 290w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-277x172.png 277w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-354x219.png 354w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-531x329.png 531w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-273x169.png 273w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-545x338.png 545w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-626x388.png 626w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-662x410.png 662w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-789x489.png 789w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-842x522.png 842w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-341x211.png 341w, https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/image-3-699x433.png 699w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/a><\/figure>\n\n\n\n<h2 id=\"h-what-custom-studies-mean-for-your-platform\" class=\"wp-block-heading\">What custom studies mean for your platform&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The built-in library of <a href=\"https:\/\/devexperts.com\/dxcharts\/kb\/docs\/getting-started\" target=\"_blank\" rel=\"noreferrer noopener\">more than 100 indicators<\/a> covers the standard toolkit. Custom studies extend it. Your development team, or a strategy vendor you commission, can build proprietary indicators with implied-volatility models, multi-timeframe data, candle coloring, filled zones, anchored callouts, and built-in alerts. These studies run inside DXcharts in the browser, next to the standard indicators your traders already use. <a href=\"https:\/\/devexperts.com\/blog\/dxcharts-integrates-analytics-tools\/\" target=\"_blank\" rel=\"noreferrer noopener\">DXcharts&#8217; analytics integration<\/a> shows how traders work with the existing indicators, which helps you decide which studies to build first.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Explore the <a href=\"https:\/\/devexperts.com\/dxcharts-demo\/\" target=\"_blank\" rel=\"noreferrer noopener\">DXcharts demo<\/a>, or send your developers to the <a href=\"https:\/\/devexperts.com\/dxcharts\/documentation-for-developers\/dxcharts-react\/Working-with-dxcharts-react-library\/Tools-and-features\/Custom-Studies\/Overview\" target=\"_blank\" rel=\"noreferrer noopener\">custom studies documentation<\/a> to build a first study. To discuss bringing your proprietary indicators to your platform, <a href=\"https:\/\/devexperts.com\/contact-us\/\" target=\"_blank\" rel=\"noreferrer noopener\">talk to our team<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every trading platform comes with standard technical indicators such as SMA, EMA, RSI, MACD, and Bollinger Bands. DXcharts, our financial &hellip; <\/p>\n","protected":false},"author":25,"featured_media":8889,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2021,2020],"tags":[2027,36,11,62,49],"class_list":["post-8880","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-brokerage","category-fintech","tag-brokerage","tag-development","tag-financial-software","tag-technology","tag-trading-platform"],"acf":{"nifty_post_card_image":8886,"nifty_post_card_index_big":8887,"nifty_post_inner_image":8889,"nifty_post_card_banner":8888},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.2 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Building custom technical indicators with DXcharts - Devexperts Blog<\/title>\n<meta name=\"description\" content=\"Build custom technical indicators in DXcharts, from multi-timeframe range zones to implied-volatility bands, and run them in your platform.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"From SMA to Proprietary Studies: Building Custom Technical Indicators with DXcharts\" \/>\n<meta property=\"og:description\" content=\"Build custom technical indicators in DXcharts, from multi-timeframe range zones to implied-volatility bands, and run them in your platform.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/\" \/>\n<meta property=\"og:site_name\" content=\"Devexperts Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/devexperts\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-15T17:15:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-15T17:15:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2336\" \/>\n\t<meta property=\"og:image:height\" content=\"1314\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@devexperts\" \/>\n<meta name=\"twitter:site\" content=\"@devexperts\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/\"},\"headline\":\"From SMA to Proprietary Studies: Building Custom Technical Indicators with DXcharts\",\"datePublished\":\"2026-10-15T17:15:00+00:00\",\"dateModified\":\"2026-10-15T17:15:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/\"},\"wordCount\":1201,\"publisher\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/app\\\/uploads\\\/2026\\\/10\\\/Post-inner.webp\",\"keywords\":[\"brokerage\",\"development\",\"financial software\",\"technology\",\"trading platform\"],\"articleSection\":[\"Brokerage Business\",\"Fintech\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/\",\"url\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/\",\"name\":\"Building custom technical indicators with DXcharts - Devexperts Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/app\\\/uploads\\\/2026\\\/10\\\/Post-inner.webp\",\"datePublished\":\"2026-10-15T17:15:00+00:00\",\"dateModified\":\"2026-10-15T17:15:01+00:00\",\"description\":\"Build custom technical indicators in DXcharts, from multi-timeframe range zones to implied-volatility bands, and run them in your platform.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/#primaryimage\",\"url\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/app\\\/uploads\\\/2026\\\/10\\\/Post-inner.webp\",\"contentUrl\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/app\\\/uploads\\\/2026\\\/10\\\/Post-inner.webp\",\"width\":2336,\"height\":1314,\"caption\":\"From SMA to Proprietary Studies\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"From SMA to Proprietary Studies: Building Custom Technical Indicators with DXcharts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/\",\"name\":\"Devexperts Blog\",\"description\":\"We make complex finance ideas on technology, innovation and business simple\",\"publisher\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/#organization\",\"name\":\"Devexperts LLC\",\"url\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/app\\\/uploads\\\/2019\\\/08\\\/DX-logo.png\",\"contentUrl\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/app\\\/uploads\\\/2019\\\/08\\\/DX-logo.png\",\"width\":167,\"height\":30,\"caption\":\"Devexperts LLC\"},\"image\":{\"@id\":\"https:\\\/\\\/devexperts.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/devexperts\\\/\",\"https:\\\/\\\/x.com\\\/devexperts\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/devexperts\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCF3FRmes2KrcVsTXQ1aAB5w\\\/featured\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building custom technical indicators with DXcharts - Devexperts Blog","description":"Build custom technical indicators in DXcharts, from multi-timeframe range zones to implied-volatility bands, and run them in your platform.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/","og_locale":"en_US","og_type":"article","og_title":"From SMA to Proprietary Studies: Building Custom Technical Indicators with DXcharts","og_description":"Build custom technical indicators in DXcharts, from multi-timeframe range zones to implied-volatility bands, and run them in your platform.","og_url":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/","og_site_name":"Devexperts Blog","article_publisher":"https:\/\/www.facebook.com\/devexperts\/","article_published_time":"2026-10-15T17:15:00+00:00","article_modified_time":"2026-10-15T17:15:01+00:00","og_image":[{"width":2336,"height":1314,"url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_creator":"@devexperts","twitter_site":"@devexperts","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/#article","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/"},"headline":"From SMA to Proprietary Studies: Building Custom Technical Indicators with DXcharts","datePublished":"2026-10-15T17:15:00+00:00","dateModified":"2026-10-15T17:15:01+00:00","mainEntityOfPage":{"@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/"},"wordCount":1201,"publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"image":{"@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp","keywords":["brokerage","development","financial software","technology","trading platform"],"articleSection":["Brokerage Business","Fintech"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/","url":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/","name":"Building custom technical indicators with DXcharts - Devexperts Blog","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/#primaryimage"},"image":{"@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp","datePublished":"2026-10-15T17:15:00+00:00","dateModified":"2026-10-15T17:15:01+00:00","description":"Build custom technical indicators in DXcharts, from multi-timeframe range zones to implied-volatility bands, and run them in your platform.","breadcrumb":{"@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/#primaryimage","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2026\/10\/Post-inner.webp","width":2336,"height":1314,"caption":"From SMA to Proprietary Studies"},{"@type":"BreadcrumbList","@id":"https:\/\/devexperts.com\/blog\/from-sma-to-proprietary-studies-building-custom-technical-indicators-with-dxcharts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devexperts.com\/blog\/"},{"@type":"ListItem","position":2,"name":"From SMA to Proprietary Studies: Building Custom Technical Indicators with DXcharts"}]},{"@type":"WebSite","@id":"https:\/\/devexperts.com\/blog\/#website","url":"https:\/\/devexperts.com\/blog\/","name":"Devexperts Blog","description":"We make complex finance ideas on technology, innovation and business simple","publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devexperts.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/devexperts.com\/blog\/#organization","name":"Devexperts LLC","url":"https:\/\/devexperts.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","width":167,"height":30,"caption":"Devexperts LLC"},"image":{"@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/devexperts\/","https:\/\/x.com\/devexperts","https:\/\/www.linkedin.com\/company\/devexperts","https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured"]}]}},"_links":{"self":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/8880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/comments?post=8880"}],"version-history":[{"count":3,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/8880\/revisions"}],"predecessor-version":[{"id":8891,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/8880\/revisions\/8891"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media\/8889"}],"wp:attachment":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media?parent=8880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/categories?post=8880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/tags?post=8880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}