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 / profiles | technical_analysis / default, full |
|---|---|
| Default discovery | Included |
| Required capabilities | None |
| Effects / authorization | none / none |
| Cost / cancellation | small / Do not assume inline interruption |
| Handle-eligible inputs | None |
| Idempotency | not-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"
]
}