GET
/indicator/trianglesymmetricalbullish
TRIANGLESYMMETRICALBULLISH
Category: Pattern Recognition - Advanced
Triangle Symmetrical Bullish Pattern
Common parameters
All indicator requests share these parameters. See Single Indicator for details.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
exchange | string | Yes | — | Exchange identifier, e.g. binance, bybit. |
symbol | string | Yes | — | Trading pair, e.g. BTCUSDT. |
timeframe | string | Yes | — | Candle interval: 1m, 5m, 15m, 1h, 4h, 1d, 1w. |
results | integer | No | 1 | Number of historical values. Use max for all available. |
backtrack | integer | No | 0 | Candles to skip from most recent. |
Indicator parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
lookback | integer | No | 5 | Bars left for pivot detection. |
lookforward | integer | No | 5 | Bars right for pivot detection. |
deviationATR | number | No | 1 | Minimum retracement required to form a valid structural swing, expressed as a multiple of ATR. |
deviationType | string | No | atr | Type of deviation filter to use: 'atr' (Average True Range) or 'percent'. |
source | string | No | wick | Whether to use 'wick' (high/low) or 'body' (open/close) prices for pivot detection. |
heikinashi | boolean | No | True | Set to true to calculate pivots based on smoothed Heikin-Ashi candles rather than raw market prices. |
atrPeriod | integer | No | 14 | The lookback period used for the Average True Range (ATR) calculation. |
touches | integer | No | 3 | Minimum number of high/low pairs required to form the pattern. |
minDescentATR | number | No | 0 | Minimum required downward slope between the descending top touches, normalized by ATR. |
minAscentATR | number | No | 0 | Minimum required upward slope between the ascending bottom touches, normalized by ATR. |
Example
curl -G https://v2.taapi.io/indicator/trianglesymmetricalbullish \ -H "Authorization: Bearer YOUR_API_KEY" \ --data-urlencode "exchange=binance" \ --data-urlencode "symbol=BTCUSDT" \ --data-urlencode "timeframe=1h" \ --data-urlencode "lookback=5" \ --data-urlencode "lookforward=5" \ --data-urlencode "deviationATR=1" \ --data-urlencode "deviationType=atr" \ --data-urlencode "source=wick" \ --data-urlencode "heikinashi=True" \ --data-urlencode "atrPeriod=14" \ --data-urlencode "touches=3" \ --data-urlencode "minDescentATR=0" \ --data-urlencode "minAscentATR=0"
const res = await fetch(
'https://v2.taapi.io/indicator/trianglesymmetricalbullish?exchange=binance&symbol=BTCUSDT&timeframe=1h',
{ headers: { Authorization: 'Bearer YOUR_API_KEY' } }
);
const data = await res.json();
import requests
resp = requests.get(
'https://v2.taapi.io/indicator/trianglesymmetricalbullish',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'exchange': 'binance', 'symbol': 'BTCUSDT', 'timeframe': '1h'}
)
print(resp.json())
Response
Results are always wrapped in arrays, even when only one value is returned.
200 OK
{
"pattern_pivot_timestamps": [1708300800],
"pattern_pivot_prices": [0.0],
"support_left_timestamp": [1708300800],
"support_left_price": [0.0],
"support_right_timestamp": [1708300800],
"support_right_price": [0.0],
"resistance_left_timestamp": [1708300800],
"resistance_left_price": [0.0],
"resistance_right_timestamp": [1708300800],
"resistance_right_price": [0.0],
"breakout_occurred": [0.0],
"is_confirmed": [0.0],
"breakout_timestamp": [1708300800],
"breakout_price": [0.0],
"projection_price": [0.0],
"direction": [0.0],
"status": [0.0],
"status_reason": [0.0],
"pattern_index": [0.0],
"timestamp": [1708300800]
}
Errors
Response
{
"pattern_pivot_timestamps": [1708300800],
"pattern_pivot_prices": [0.0],
"support_left_timestamp": [1708300800],
"support_left_price": [0.0],
"support_right_timestamp": [1708300800],
"support_right_price": [0.0],
"resistance_left_timestamp": [1708300800],
"resistance_left_price": [0.0],
"resistance_right_timestamp": [1708300800],
"resistance_right_price": [0.0],
"breakout_occurred": [0.0],
"is_confirmed": [0.0],
"breakout_timestamp": [1708300800],
"breakout_price": [0.0],
"projection_price": [0.0],
"direction": [0.0],
"status": [0.0],
"status_reason": [0.0],
"pattern_index": [0.0],
"timestamp": [1708300800]
}Data is being fetched. Retry after 1–2 seconds.
Response
{ "pending": true, "key": "ta:binance:BTCUSDT:1h:trianglesymmetricalbullish:..." }Response
{ "error": "Missing required: exchange, symbol, timeframe" }Response
{ "error": "Invalid or missing API key." }Response
{ "error": "Rate limit exceeded. Your plan allows 30 requests per 15 seconds." }