Skip to content
  • There are no suggestions because the search field is empty.

Acuity Technical Analysis Patterns API

This document provides an overview of the Technical Analysis Patterns API, including supported pattern types, the request model and the response structure.

Basic Concepts

The Technical Analysis Patterns API returns pattern-driven trade ideas derived from classical chart-pattern detection over OHLC price data. In the API, these ideas are represented as Pattern reports containing both trade setup fields and a nested PatternData object describing the detected chart formation.

The API supports filtering by:

  • date range
  • language
  • asset class
  • asset identifiers
  • period
  • report type

The following classes are supported:

  • Equity
  • Currency Pairs
  • Commodity
  • Index
  • Coins

Supported price data granularities:

  • 1H
  • 4H
  • 1D

The following periods are supported by the API:

  • intraday
  • short-term
  • medium-term

Supported Pattern Types

Zig Zag Patterns

  • Double Top
  • Double Bottom
  • Triple Top
  • Triple Bottom
  • Head And Shoulders
  • Inverse Head And Shoulders

Continuation Patterns

  • Bullish Flag
  • Bearish Flag
  • Bullish Pennant
  • Bearish Pennant
  • Bullish Continuation Wedge
  • Bearish Continuation Wedge
  • Bullish Reversal Wedge
  • Bearish Reversal Wedge

Triangle Patterns

  • Ascending Triangle Continuation
  • Descending Triangle Continuation
  • Symmetrical Triangle Bullish Continuation
  • Symmetrical Triangle Bullish Reversal
  • Symmetrical Triangle Bearish Continuation
  • Symmetrical Triangle Bearish Reversal

Rectangle Patterns

  • Rectangle Bullish Continuation
  • Rectangle Bullish Reversal
  • Rectangle Bearish Continuation
  • Rectangle Bearish Reversal

Pattern Family Codes

Family code

Meaning inferred from source materials

ASC_TRIANGLE_CONT

Ascending Triangle Continuation

DESC_TRIANGLE_CONT

Descending Triangle Continuation

CONT_WEDGE

Continuation Wedge

REV_WEDGE

Reversal Wedge

DB

Double Bottom

FLAG

Flag

HS

Head And Shoulders

IHS

Inverse Head And Shoulders

PENNANT

Pennant

RECTANGLE_BEAR_CONT

Rectangle Bearish Continuation

RECTANGLE_BEAR_REV

Rectangle Bearish Reversal

RECTANGLE_BULL_CONT

Rectangle Bearish Continuation

RECTANGLE_BULL_REV

Rectangle Bullish Reversal

SYM_TRIANGLE_BEAR_CONT

Symmetrical Triangle Bearish Continuation

SYM_TRIANGLE_BEAR_REV

Symmetrical Triangle Bearish Reversal

SYM_TRIANGLE_BULL_CONT

Symmetrical Triangle Bullish Continuation

SYM_TRIANGLE_BULL_REV

Symmetrical Triangle Bullish Reversal

TB

Triple Bottom

TT

Triple Top

DT

Double Top


Supported Languages

The request model defines LanguageCode and lists these supported values:

Language

LanguageCode

Arabic

ar-ae

German

de-de

English

en-gb

Spanish

es-es

Farsi

fa-ir

Hindi

hi-in

Indonesian

id-id

Italian

it-it

French

fr-fr

Japanese

ja-jp

Malay

ms-my

Dutch

nl-nl

Norwegian Bokmal

nb-no

Polish

pl-pl

Portuguese

pt-pt

Brazilian Portuguese

pt-br

Russian

ru-ru

Swedish

sv-se

Turkish

tr-tr

Vietnamese

vi-vn

Simplified Chinese

zh-cn

REST API

Documentation

  • Overview: https://api.acuitytrading.com/
  • Swagger URL: https://api.acuitytrading.com/swagger/index.html
  • Endpoint: POST /api/AcuityEvents

Authentication

  • Documentation URL: https://api.acuitytrading.com/Security

Exchange your username and password for a Bearer token that you can pass with any request. The token is valid for 14 days.

Sample Request

curl --location "https://api.acuitytrading.com/api/signalcentrereports"
--header "Authorization: Bearer eyJhbGciO6IkpXVCJ9.eyJzdWIcmlkIjoiNTQxIiwiaHR0cDovL3NjaGVtYXMuYWN1aXR5dHJhZGluZy5jb20vd3MvMjAxMy8wOC9pZGVudGl0eS9jbGFpbXMvYXBpa2V5IjoiN2U0MzLTU3NTktNDg0OS1hZTFjLWZlMWNhN2Q4ZWNiNCIsImlhdCI6MTc3NDM2ODg5MiwibmJmIjoxNzc0MzY4ODkyLCJleHAiOjE3NzU1Nzg0OTIsImlzcyI6IkFjdWl0eSIsImF1ZCI6IkFjdWl0eUF1ZGllbmNlIn0.5_vPvyUI5m_8GA3I_qqJ90aXlMgcZ5AetiieSuGDM00"
--header "Content-Type: application/json"
--data "{
   \"StartDate\": \"2026-03-19T16:09:11+01:00\",
   \"EndDate\": \"2026-03-26T16:09:11+01:00\",
   \"LanguageCode\": \"en-gb\",
   \"IncludeExpired\": true,
   \"Count\": 100,
   \"ReportTypes\": [3]
}"

Sample Response

[
    {
        "Report": {
            "PatternData": {
                "id": "b7aab3d5-e842-4b73-a0d3-29e4b2dae097",
                "Granularity": "1h",
                "Family": "PENNANT",
                "start_time": "2026-03-23T15:00:00",
                "start_price": 305.92,
                "confirmation_time": "2026-03-26T13:00:00",
                "confirmation_price": 289.4949,
                "specific_data": {
                    "support_slope": "0.054980468749964595",
                    "support_intercept": "289.22",
                    "resist_slope": "-0.19498413085940988",
                    "resist_intercept": "292.18",
                    "tip_time": "2026-03-25 15:00:00",
                    "tip_price": "289.22",
                    "flag_width": "5",
                    "flag_height": "2.9599999999999795",
                    "pole_width": "14",
                    "pole_height": "16.69999999999999"
                },
                "trade_end_time": null,
                "trade_end_price": null,
                "wait": 5
            },
            "id": "51457e4d-dcb4-461e-b26d-908047c05632",
            "group_id": "80590d3b-ab95-407f-9034-10c6149eb911",
            "product_id": "4493d5df-d46d-491e-842e-bd8e4354d34f",
            "period_id": "53149989-5570-4906-a7ac-04a10a0a0a0a",
            "direction": 1,
            "action": 1,
            "direction_text": "Bearish",
            "action_text": "SELL",
            "buy_target_1": null,
            "sell_target_1": 274.6,
            "stop": 291.79,
            "expiry": "2026-03-26T19:00:00",
            "live_time": "2026-03-26T14:00:00",
            "status": 9,
            "status_text": "Live Trade",
            "original_status": 13,
            "original_status_text": "Sell Stop",
            "created": "2026-03-26T14:00:00",
            "modified": "2026-03-26T15:07:54.7",
            "modifiedUtc": "2026-03-26T15:07:54.7",
            "buy_entry_target_1": null,
            "sell_entry_target_1": 286.06,
            "is_closed": 0
        },
        "Product": {
            "id": "4493d5df-d46d-491e-842e-bd8e4354d34f",
            "name": "Alphabet Inc. Cl A",
            "slug": "Alphabet Inc. Cl A"
        },
        "id": "51457e4d-dcb4-461e-b26d-908047c05632",
        "language": "en-gb",
        "ReportType": "Pattern",
        "AssetId": 113264,
        "AssetClassId": 6,
        "Group": {
            "id": "80590d3b-ab95-407f-9034-10c6149eb911",
            "category_id": "80590d3b-ab95-407f-9034-10c6149eb911",
            "name": "Equity",
            "slug": "Equity",
            "Category": {
                "id": "80590d3b-ab95-407f-9034-10c6149eb911",
                "name": "Equity",
                "slug": "Equity"
            }
        },
        "Period": {
            "id": "53149989-5570-4906-a7ac-04a10a0a0a0a",
            "name": "Intraday",
            "slug": "intraday"
        },
        "Phrase": [
            "The Pennant is a short-term continuation pattern that develops after a strong directional move, symbolizing a pause in momentum. It resembles a small symmetrical triangle formed by converging trendlines as volatility temporarily contracts.",
            "The pattern shows that both buyers and sellers are waiting for new direction following an impulsive move.",
            "A breakout in the direction of the prior trend validates the pattern and signals continuation.",
            "Price objectives are often set by adding or subtracting the length of the prior move (the flagpole) from the breakout level."
        ]
    }
]

Request model

Field

Type

Required

Description

StartDate

string, date-time

false

Start date for the retrieval window.

EndDate

string, date-time

false

End date for the retrieval window.

LanguageCode

string

false

Language code. Defaults to en-gb.

AssetClassId

integer

false

Asset class ID.

AssetIds

array of integers

false

Optional list of asset IDs.

IncludeExpired

boolean

false

Whether to include expired reports.

IncludePerformance

boolean

false

Whether to include performance data.

Period

string

false

Period filter. The following values are supported:  intraday and short-term.

Count

integer

false

Item limit. Default 100, maximum 1000.

ReportTypes

array

false

Report type filter. The following items are supported: 0 HumanDriven, 1 AIDriven, and 3 - Pattern.


Response Model

Top-level response object

Field

Type

Description

id

string

Unique identifier of the returned item.

language

string

Language of the phrases in the item.

ReportType

string

Report type. Could be SC - Analyst Trade Ideas, AI - AI Driven Trade Ideas, Pattern - Pattern Trade Ideas

AssetId

integer

Acuity asset identifier.

AssetClassId

integer

Asset class identifier.

Report

object

Core trade-idea payload.

Product

object

Product metadata for the covered asset.

Group

object

Asset group metadata such as Equity or Commodity.

Period

object

Period metadata such as Intraday or Short Term.

Phrase

array of strings

Narrative explanation of the detected pattern.

Report object

The Report object contains the trade setup returned for the pattern.

Field

Type

Description

id

string

Unique report identifier.

group_id

string

Group identifier.

product_id

string

Product identifier.

period_id

string

Period identifier.

direction

integer

Numeric direction code.

action

integer

Numeric action code.

direction_text

string

Human-readable direction, for example Bullish or Bearish.

action_text

string

Human-readable action, for example BUY or SELL.

buy_target_1

number or null

Buy take-profit target when applicable.

sell_target_1

number or null

Sell take-profit target when applicable.

stop

number

Stop-loss level.

expiry

string

Expiry timestamp for the trade idea.

live_time

string

Timestamp when the idea became live.

status

integer

Numeric trade status code.

status_text

string

Human-readable trade status.

original_status

integer

Initial status code before subsequent updates.

original_status_text

string

Human-readable initial status.

created

string

Creation timestamp.

modified

string

Last modification timestamp.

modifiedUtc

string

UTC modification timestamp.

buy_entry_target_1

number or null

Buy entry level when applicable.

sell_entry_target_1

number or null

Sell entry level when applicable.

is_closed

integer

1 when the trade is closed, otherwise 0.

PatternData

object

Nested description of the detected chart pattern.


Status values

Status code

Status text

5

Closed - Profit

6

Closed - Loss

9

Live Trade

13

Sell Stop

15

Buy Stop


PatternData object

The PatternData object describes the detected pattern itself.

Field

Type

Description

id

string

Unique identifier of the detected pattern.

Family

string

Pattern family code.

Granularity

string

Detection timeframe such as 1h, 4h, or 1d.

start_time

string

Timestamp where the pattern begins.

start_price

number

Price level where the pattern begins.

confirmation_time

string

Timestamp where the pattern is confirmed.

confirmation_price

number

Price level used for confirmation.

trade_end_time

string or null

Timestamp when the trade closed, if closed.

trade_end_price

number or null

Price level when the trade closed, if closed.

wait

integer

Maximum number of candles to wait if neither target nor stop is reached.

specific_data

object

Family-specific geometry and indicator fields.


Patterns specific_data field

Pattern type

Family

Fields

Triangles / Wedges

ASC_TRIANGLE_CONT

DESC_TRIANGLE_CONT

SYM_TRIANGLE_BEAR_CONT

SYM_TRIANGLE_BEAR_REV

SYM_TRIANGLE_BULL_CONT

SYM_TRIANGLE_BULL_REV

CONT_WEDGE

REV_WEDGE

support_slope: number

support_intercept: number

resist_slope: number

resist_intercept: number

flag_width: number

Flags / Pennants

FLAG

PENNANT

support_slope: number

support_intercept: number

resist_slope: number

resist_intercept: number

flag_width: number

tip_time: datetime

tip_price: number

Rectangles

RECTANGLE_BEAR_CONT

RECTANGLE_BEAR_REV

RECTANGLE_BULL_CONT

RECTANGLE_BULL_REV

support_price: number

resist_price: number

Double Top or Bottom / Triple Top or Bottom

DT

DB

TT

TB

p1_time: datetime

p1_price: number

p2_time: datetime

p2_price: number

p3_time: datetime

p3_price: number

p4_time: datetime (optional)

p4_price: number (optional)

p5_time: datetime (optional)

p5_price: number (optional)

Head & Shoulders

HS

IHS

l_shoulder_time: datetime

l_shoulder_price: number

l_armpit_time: datetime

l_armpit_price: number

head_time: datetime

head_price: number

r_armpit_time: datetime

r_armpit_price: number

r_shoulder_time: datetime

r_shoulder_price: number


Common Requests

Retrieve supported products list

Endpoint: POST /api/signalcentre/products

Sample request
curl --location "https://api.acuitytrading.com/api/signalcentre/products" --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJwcm9kdWN0IiwiaHR0cDovL3NjaGVtYXMuYWN1aXR5dHJhZGluZy5jb20vd3MvMjy8wOC9pZGVudGl0eS9jbGFpbXMvaXNhZG1pbmlzdHJhdG9yIjoiVHJ1ZSIsImp0aSI6IjgxODFmNTgzLTU3NTktNDg0OS1hZTFjLWZlMWNhN2Q4ZWNiNCIsImlhdCI6MTc3NDM2ODg5MiwibmJmIjoxNzc0MzY4ODkyLCJleHAiOjE3NzU1Nzg0OTIsImlzcyI6IkFjdWl0eSIsImF1ZCI6IkFjdWl0eUF1ZGllbmNlIn0.5_vPvyUI5m_8GA3I_qqJ90aXlMgcZ5AetiieSuGDM00" --header "Content-Type: application/json" --data "{}"
Retrieve all pattern trade ideas for the last 7 days

Endpoint: POST /api/signalcentrereports

Sample request
curl --location "https://api.acuitytrading.com/api/signalcentrereports" --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJwcm9kdWN0IiwiaHR0cDovL3NjaGIsImlzcyI6IkFjdWl0eSIsImF1ZCI6IkFjdWl0eUF1ZGllbmNlIn0.5_vPvyUI5m_8GA3I_qqJ90aXlMgcZ5AetiieSuGDM00" --header "Content-Type: application/json" --data "{
    \"StartDate\": \"2026-03-20T11:52:26+01:00\",
    \"EndDate\": \"2026-03-27T11:52:26+01:00\",
    \"Count\": 100,
    \"ReportTypes\": [3]
}"
Retrieve pattern trade ideas for specific products
Sample request
curl --location "https://api.acuitytrading.com/api/signalcentrereports" --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJwcm9kdWN0IiwiaHR0cDovL3NjaGVtYXMuYWN1aXR5dHJhZGluZy5jb20vd3MvMjAxMy8wOC9pZGVudGl0eS9jbGFpbXMvdXNlcmlkIjoiNTQxIiwiaHR0cDovL3NjaGVtYXMuYWN1aXR5dNjaGVtYXMbmjgxODFmNTgzLTU3NTktNDg0OS1hZTFjLWZlMWNhN2Q4ZWNiNCIsImlhdCI6MTc3NDM2ODg5MiwibmJmIjoxNzc0MzY4ODkyLCJleHAiOjE3NzU1Nzg0OTIsImlzcyI6IkFjdWl0eSIsImF1ZCI6IkFjdWl0eUF1ZGllbmNlIn0.5_vPvyUI5m_8GA3I_qqJ90aXlMgcZ5AetiieSuGDM00" --header "Content-Type: application/json" --data "{
    \"StartDate\": \"2026-03-20T11:56:41+01:00\",
    \"EndDate\": \"2026-03-27T11:56:41+01:00\",
    \"Count\": 100,
    \"ReportTypes\": [3],
    \"AssetIds\": [50, 3]
}"

Streaming API

The purpose of this API is to deliver the Acuity Events in real time after their publication and/or modification.

Documentation

  • Overview: https://api.acuitytrading.com/

Authentication

To authenticate, you need to pass your API key in the server URL when connecting to Acuity API. Example: wss://api.acuitytrading.com/api/streaming?apiKey=YOUR_API_KEY

Common Subscription Parameters

Each subscription in the Streaming API has the following parameters:

{
    "action": "ACTION",
    "topic": "TOPIC"
}

Parameter

Type

Possible Values

"action"

string

subscribe, unsubscribe

"topic"

string

assets, acuityevents, other supported topics (requires additional services)

Subscribe to all signals

Sample request
{
    "action" : "subscribe",
    "topic" : "screports"
}

Subscribe to pattern reports

Sample request
{
    "action": "subscribe",
    "topic": "screports",
    "reportTypes": [3]
}

Subscribe to pattern reports with specific tickers

Sample request
{
    "action": "subscribe",
    "topic": "screports",
    "assetIds": [3, 50],
    “reportTypes”: [3]
}

Expected Message Types in the Response

Message Type

Description

Insert message

This message type is sent when a new event is published.

Update message

This message is sent when event content needs to be updated. Any part of the event can be updated. Find the previously saved event by ID and fully replace its contents. If no event can be found with the ID, simply add the newly received event to your database.