The finance developer workbenchSearch the reference Development · 0.1.4 · unpublished

technical_analysis / wire operation

Calculate a technical indicator

totalfinance.technical_analysis.calculate

Compute any of TotalFinance’s ~300 registered technical indicators over a price series. Pass canonical core Bar records directly under bars; symbol, timestampMs, vwap and adjusted are declared fields. Source records require open, one symbol and strictly increasing unique timestamps; no stripping or SDK preprocessing is needed. Identity/time are validated before OHLCV projection; retain the original source/provenance alongside the result. Close-based (`series`) indicators take `closes`; bar-based indicators take `bars` (OHLCV objects) or parallel column arrays under `series`; pair indicators (e.g. beta, correl) take `x` and `y`. Use `totalfinance.technical_analysis.list` to discover indicator names, input kinds, and parameters. Output is aligned to input length with null during warmup; `assumptions.parameters` echoes the parameters actually used (declared defaults merged with yours), and `diagnostics.warmup` is the first real index.

Pack / profilestechnical_analysis / default, full
Default discoveryIncluded
Required capabilitiesNone
Effects / authorizationnone / none
Cost / cancellationsmall / Do not assume inline interruption
Handle-eligible inputsNone
Idempotencynot-applicable
Input schema
{
  "type": "object",
  "properties": {
    "indicator": {
      "type": "string",
      "enum": [
        "typicalPrice",
        "medianPrice",
        "weightedClose",
        "averagePrice",
        "realBody",
        "upperShadow",
        "lowerShadow",
        "candleRange",
        "trueRange",
        "gap",
        "heikinAshi",
        "returns",
        "logReturns",
        "rollingVolatility",
        "sma",
        "ema",
        "wma",
        "rma",
        "dema",
        "tema",
        "trima",
        "t3",
        "kama",
        "hma",
        "zlema",
        "alma",
        "vidya",
        "mcginley",
        "superSmoother",
        "vwma",
        "rollingVwap",
        "anchoredVwap",
        "frama",
        "mama",
        "movingAverage",
        "midpoint",
        "midprice",
        "fwma",
        "sineWma",
        "pascalWma",
        "symmetricWma",
        "jma",
        "holtWinterMovingAverage",
        "rainbowMovingAverage",
        "movingAverageRibbon",
        "gannHighLowActivator",
        "vwapBands",
        "sessionVwap",
        "rollingAnchoredVwap",
        "rsi",
        "macd",
        "roc",
        "rocp",
        "rocr",
        "rocr100",
        "momentum",
        "cmo",
        "apo",
        "ppo",
        "stochRsi",
        "trix",
        "dpo",
        "tsi",
        "kst",
        "connorsRsi",
        "macdExt",
        "macdFix",
        "cci",
        "williamsR",
        "awesomeOscillator",
        "ultimateOscillator",
        "fisherTransform",
        "stochastic",
        "stochFast",
        "bop",
        "bias",
        "cfo",
        "forecastOscillator",
        "coppock",
        "cti",
        "efficiencyRatio",
        "centerOfGravity",
        "psychologicalLine",
        "slope",
        "trixHistogram",
        "smiErgodic",
        "pvo",
        "elderRay",
        "brar",
        "kdj",
        "relativeVigorIndex",
        "pgo",
        "volumeWeightedMacd",
        "inertia",
        "laguerreRsi",
        "qqe",
        "rsx",
        "schaffTrendCycle",
        "squeeze",
        "squeezePro",
        "projectionOscillator",
        "tdSequential",
        "smcSweep",
        "adx",
        "dmi",
        "plusDI",
        "minusDI",
        "plusDM",
        "minusDM",
        "dx",
        "adxr",
        "aroon",
        "aroonOscillator",
        "psar",
        "psarExt",
        "supertrend",
        "ichimoku",
        "vortex",
        "donchianTrend",
        "chandelierExit",
        "linreg",
        "linregSlope",
        "linregIntercept",
        "linregAngle",
        "tsf",
        "choppinessIndex",
        "chandeKrollStop",
        "centralPivotRange",
        "amat",
        "linearDecay",
        "exponentialDecay",
        "increasing",
        "decreasing",
        "longRun",
        "shortRun",
        "pMax",
        "qstick",
        "ttmTrend",
        "verticalHorizontalFilter",
        "trendSignals",
        "crossSignals",
        "atr",
        "natr",
        "keltner",
        "donchian",
        "parkinson",
        "garmanKlass",
        "rogersSatchell",
        "yangZhang",
        "chaikinVolatility",
        "bbands",
        "bollingerBandWidth",
        "bollingerPercentB",
        "standardDeviation",
        "variance",
        "historicalVolatility",
        "realizedVolatility",
        "relativeVolatilityIndex",
        "aberration",
        "accelerationBands",
        "holtWinterChannel",
        "massIndex",
        "priceDistance",
        "elderThermometer",
        "ulcerIndex",
        "atrBands",
        "percentAtr",
        "volatilityStop",
        "obv",
        "vwap",
        "adLine",
        "chaikinOscillator",
        "chaikinMoneyFlow",
        "mfi",
        "pvt",
        "easeOfMovement",
        "forceIndex",
        "nvi",
        "pvi",
        "klinger",
        "vfi",
        "relativeVolume",
        "cvd",
        "archerObv",
        "marketFacilitationIndex",
        "priceVolume",
        "priceVolumeRank",
        "volumeOscillator",
        "williamsAd",
        "efi",
        "emv",
        "kvo",
        "dsp",
        "ebsw",
        "msw",
        "htDcPeriod",
        "htDcPhase",
        "htPhasor",
        "htSine",
        "htTrendMode",
        "htTrendline",
        "beta",
        "correl",
        "rollingMin",
        "rollingMax",
        "rollingSum",
        "rollingMinIndex",
        "rollingMaxIndex",
        "rollingMinMax",
        "rollingMinMaxIndex",
        "shift",
        "lag",
        "diff",
        "change",
        "fractionalChange",
        "cum",
        "zScore",
        "normalize",
        "rescale",
        "rollingMedian",
        "mad",
        "standardError",
        "rollingRank",
        "percentRank",
        "rollingQuantile",
        "winsorize",
        "skew",
        "kurtosis",
        "entropy",
        "covariance",
        "rSquared",
        "rollingRegression",
        "barSince",
        "valueWhen",
        "rollingMean",
        "rollingBeta",
        "rollingCorrelation",
        "highestBars",
        "lowestBars",
        "tosStdevAll",
        "acos",
        "asin",
        "atan",
        "ceil",
        "cos",
        "cosh",
        "exp",
        "floor",
        "ln",
        "log10",
        "sin",
        "sinh",
        "sqrt",
        "tan",
        "tanh",
        "add",
        "sub",
        "mult",
        "div",
        "crossover",
        "crossany",
        "drawdown",
        "cdlDoji",
        "cdlInside",
        "cdlZ",
        "fairValueGaps",
        "orderBlocks",
        "liquiditySweeps",
        "swingTrailingStop",
        "atrTrailingStop",
        "equalHighs",
        "equalLows",
        "divergence",
        "doji",
        "dojiStar",
        "dragonflyDoji",
        "gravestoneDoji",
        "longLeggedDoji",
        "rickshawMan",
        "takuri",
        "marubozu",
        "closingMarubozu",
        "beltHold",
        "spinningTop",
        "highWave",
        "longLine",
        "shortLine",
        "hammer",
        "invertedHammer",
        "hangingMan",
        "shootingStar",
        "engulfing",
        "harami",
        "haramiCross",
        "piercing",
        "darkCloudCover",
        "thrusting",
        "onNeck",
        "inNeck",
        "counterattack",
        "separatingLines",
        "matchingLow",
        "homingPigeon",
        "kicking",
        "kickingByLength",
        "morningStar",
        "eveningStar",
        "morningDojiStar",
        "eveningDojiStar",
        "abandonedBaby",
        "triStar",
        "threeWhiteSoldiers",
        "threeBlackCrows",
        "identicalThreeCrows",
        "threeInside",
        "threeOutside",
        "threeLineStrike",
        "twoCrows",
        "upsideGapTwoCrows",
        "advanceBlock",
        "stalledPattern",
        "threeStarsInSouth",
        "concealBabySwallow",
        "ladderBottom",
        "riseFallThreeMethods",
        "matHold",
        "tasukiGap",
        "gapSideSideWhite",
        "xSideGapThreeMethods",
        "stickSandwich",
        "uniqueThreeRiver",
        "breakaway",
        "hikkake",
        "hikkakeMod",
        "inside"
      ]
    },
    "closes": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "bars": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "open": {
            "type": "number"
          },
          "high": {
            "type": "number"
          },
          "low": {
            "type": "number"
          },
          "close": {
            "type": "number"
          },
          "volume": {
            "type": "number"
          },
          "symbol": {
            "type": "string",
            "description": "Canonical source Bar symbol; include timestampMs and open on every row"
          },
          "timestampMs": {
            "type": "number",
            "description": "Canonical source time in epoch ms; strictly increasing within one symbol"
          },
          "vwap": {
            "type": "number"
          },
          "adjusted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "high",
          "low",
          "close"
        ]
      }
    },
    "series": {
      "type": "object",
      "properties": {
        "open": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "high": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "low": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "close": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "volume": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "additionalProperties": false
    },
    "x": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "description": "Pair indicators: the first series (for beta/correl, the ASSET returns)"
    },
    "y": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "description": "Pair indicators: the second series (for beta/correl, the BENCHMARK returns)"
    },
    "parameters": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "string"
          },
          {
            "type": "boolean"
          }
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "indicator"
  ]
}
Output schema
{
  "type": "object",
  "properties": {
    "indicator": {
      "type": "string"
    },
    "category": {
      "type": "string"
    },
    "inputs": {
      "type": "string",
      "enum": [
        "series",
        "bars",
        "pair"
      ]
    },
    "value": {
      "type": "array",
      "items": {
        "type": [
          "number",
          "object",
          "null"
        ]
      }
    },
    "assumptions": {
      "type": "object",
      "description": "indicator + parameters actually used (declared defaults merged with supplied)"
    },
    "diagnostics": {
      "type": "object",
      "description": "warnings + warmup (first non-null index)"
    }
  },
  "required": [
    "indicator",
    "value",
    "assumptions",
    "diagnostics"
  ]
}

All operations · Setup, handles, jobs & permissions