Skip to main content
The signal system detects market events and triggers bound strategies. Instead of running strategies on a fixed schedule, signals let you react to specific conditions — price breakouts, indicator crossovers, volume spikes, and more.

How signals work

The background scheduler periodically evaluates all active signal pools. When a pool’s conditions are satisfied, it triggers the execution of bound strategies with the relevant context.

Signal definitions

A signal defines a single condition to monitor. Signals evaluate properties of market data and return true or false.
ComponentDescription
IndicatorThe data source to evaluate (price, RSI, MACD, volume, factor, etc.)
OperatorComparison operator (>, <, >=, <=, ==, crosses_above, crosses_below)
ThresholdThe target value or reference

Examples

SignalMeaning
RSI(14) < 30RSI drops below 30 (oversold)
price crosses_above EMA(200)Price crosses above the 200-period EMA
volume > 2x avg_volume(24h)Volume spike exceeds 2x the 24-hour average
MACD crosses_above signal_lineBullish MACD crossover

Signal pools

A signal pool groups multiple signals with a set of monitored symbols and defines how the signals combine.
All signals in the pool must fire simultaneously for the trigger to activate. Use AND logic for high-confidence setups that require multiple confirmations.
{
  "name": "Bullish Confluence",
  "logic": "and",
  "symbols": ["BTC", "ETH"],
  "signals": [
    {"indicator": "rsi", "period": 14, "operator": "<", "threshold": 35},
    {"indicator": "price", "operator": "crosses_above", "reference": "ema_50"},
    {"indicator": "volume", "operator": ">", "threshold": "2x_avg"}
  ]
}

Trigger types

Strategies can be triggered in two ways, configured at the binding level:

Signal-triggered

The strategy executes when the bound signal pool fires. The trigger context includes which signals activated and the current values that matched.

Scheduled

The strategy runs on a fixed interval (e.g., every 5 minutes). No signal pool is required — execution happens on the clock.
Signal-triggered strategies receive additional context in the {trigger_context} template variable:
{
  "pool_name": "Bullish Confluence",
  "triggered_signals": [
    {"indicator": "rsi", "value": 28.5, "threshold": 35},
    {"indicator": "price vs ema_50", "value": "crossed_above"}
  ],
  "symbols_triggered": ["BTC"],
  "timestamp": "2025-01-15T14:30:00Z"
}

Creating signals via API

1

Create individual signals

curl -X POST https://api.hyperoru.com/api/signals \
  -H "Content-Type: application/json" \
  -d '{
    "name": "RSI Oversold",
    "indicator": "rsi",
    "period": 14,
    "operator": "less_than",
    "threshold": 30,
    "user_id": "your-user-id"
  }'
2

Create a signal pool

curl -X POST https://api.hyperoru.com/api/signal-pools \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mean Reversion Setup",
    "logic": "and",
    "signal_ids": ["signal-uuid-1", "signal-uuid-2"],
    "symbols": ["BTC", "ETH", "SOL"],
    "user_id": "your-user-id"
  }'
3

Bind the pool to a strategy

curl -X POST https://api.hyperoru.com/api/bindings \
  -H "Content-Type: application/json" \
  -d '{
    "trader_id": "trader-uuid",
    "prompt_id": "prompt-uuid",
    "trigger_type": "signal",
    "signal_pool_id": "pool-uuid"
  }'

AI-assisted signal creation

Use HyperAI to generate signal definitions from natural language:
curl -X POST https://api.hyperoru.com/api/hyper-ai/chat \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Create a signal pool that detects BTC breakouts above resistance with volume confirmation"
  }'
Combine signal-triggered and scheduled strategies for the same trader. Use signals for reactive entries and schedules for periodic portfolio rebalancing.