Skip to main content

Quickstart Guide

This guide will walk you through setting up your PriceSignal account and creating your first price alert.
Prerequisites: You’ll need a Telegram account to receive notifications. Don’t have one? Download Telegram from telegram.org.

Authentication Setup

1

Create Your Account

Navigate to the PriceSignal dashboard and sign up with your email or social login.The platform uses secure authentication to protect your alert configurations and notification settings.
2

Connect Telegram

To receive price alerts, you need to connect your Telegram account:
  1. Start a chat with the PriceSignal bot: @PriceSignalBot
  2. Send the /start command with your user ID
  3. The bot will confirm your connection
/start YOUR_USER_ID
Your user ID is displayed in the dashboard under Settings → Notifications. Copy it exactly as shown.
3

Verify Connection

Return to the PriceSignal dashboard. You should see your Telegram connection status change to “Connected” with your username displayed.
If the connection fails, make sure you copied the complete user ID and sent it to the correct bot.

Creating Your First Price Alert

Let’s create a price alert that notifies you when Bitcoin’s RSI (Relative Strength Index) indicates oversold conditions.
1

Open the Create Rule Dialog

From the dashboard, click the “Create Rule” button. This opens the rule configuration drawer.
2

Configure Basic Settings

Fill in the basic information:
  • Name: “BTC Oversold Alert”
  • Description: “Notify when Bitcoin RSI drops below 30”
  • Trading Pair: Select “BTCUSDT” from the dropdown
Example from create-rule.tsx:187
<FormField control={createRuleForm.control} name='name'
  render={({field}) => (
    <FormItem>
      <FormLabel>Name</FormLabel>
      <Input {...field} type='text' placeholder='[rule name]' />
      <FormMessage/>
    </FormItem>
  )}
/>
3

Add Alert Condition

Click “Add condition” and configure:
  • Condition Type: Technical Indicator
  • Indicator: RSI
  • Period: 14 (standard RSI period)
  • Direction: Below
  • Threshold: 30
This translates to: “When RSI(14) goes below 30”
{
  conditionType: "TECHNICAL_INDICATOR",
  indicator: "RSI",
  period: 14,
  direction: "Below",
  threshold: 30
}
4

Submit Your Rule

Click “Submit” to create the rule. The system will:
  1. Validate your condition parameters
  2. Store the rule in the database
  3. Add it to the real-time rule cache
  4. Start monitoring Bitcoin prices
PriceRuleMutations.cs:54
dbContext.PriceRules.Add(priceRule);
await dbContext.SaveChangesAsync();
ruleCache.AddOrUpdateRule(priceRule);

Understanding Notification Flow

Once your rule is active, here’s what happens when conditions are met:
1

Price Evaluation

The rule engine continuously evaluates incoming price data against your conditions. Technical indicators are calculated in real-time from the TimescaleDB time-series data.
2

Rule Trigger

When conditions match, the rule triggers and logs the event:
PriceRule.cs:28
public void Trigger(decimal price)
{
    LastTriggeredPrice = price;
    LastTriggeredAt = DateTime.UtcNow;
    if (Events.Count != 0) return;
    AddEvent(new PriceRuleTriggeredEvent(this));
    ActivationLogs.Add(new PriceRuleTriggerLog(this));
}
3

Message Publishing

The notification is published to NATS JetStream on the notifications.telegram subject:
TelegramNotificationChannel.cs:35
await _pubSub.PublishAsync("notifications.telegram", 
  new Messageinput(chatId.Value, message));
4

Telegram Delivery

The Telegram bot consumes the message and sends it to your chat:
telegram-bot/main.go:78
c.Consume(func(msg jetstream.Msg) {
    var notification Notification
    json.Unmarshal(msg.Data(), &notification)
    
    telegramMsg := tgbotapi.NewMessage(
      notification.ChatID, 
      notification.Message
    )
    bot.Send(telegramMsg)
    msg.Ack()
})

Advanced Rule Examples

Price Percentage Change Alert

Get notified when Ethereum moves more than 5% in any direction:
{
  name: "ETH 5% Move",
  symbol: "ETHUSDT",
  conditions: [{
    conditionType: "PRICE_PERCENTAGE",
    value: 5.0
  }]
}

Multi-Condition Rule

Combine multiple indicators for sophisticated alerts:
{
  name: "BTC Bullish Crossover",
  symbol: "BTCUSDT",
  conditions: [
    {
      conditionType: "TECHNICAL_INDICATOR",
      indicator: "RSI",
      period: 14,
      direction: "Above",
      threshold: 50
    },
    {
      conditionType: "TECHNICAL_INDICATOR",
      indicator: "EMA",
      period: 12,
      direction: "Above",
      threshold: 50000
    }
  ]
}
Multi-condition rules trigger only when ALL conditions are satisfied simultaneously.

Managing Your Rules

Toggle Rules On/Off

Temporarily disable a rule without deleting it:
mutation TogglePriceRule($id: UUID!) {
  togglePriceRule(id: $id) {
    id
    isEnabled
  }
}

Update Existing Rules

Modify conditions or thresholds as market conditions change:
mutation UpdatePriceRule($input: PriceRuleInput!) {
  updatePriceRule(input: $input) {
    id
    name
    conditions {
      conditionType
      value
    }
  }
}

Delete Rules

Remove rules you no longer need:
mutation DeletePriceRule($id: UUID!) {
  deletePriceRule(id: $id) {
    id
    name
  }
}
Deleting a rule is permanent and cannot be undone. Consider toggling it off instead if you might need it later.

Real-Time Price Subscriptions

Subscribe to live price updates via GraphQL subscriptions:
subscription OnPriceUpdated($symbol: String!) {
  onPriceUpdated(symbol: $symbol) {
    symbol
    close
    high
    low
    open
    volume
  }
}
React Implementation
const { data } = useSubscription(PRICE_SUBSCRIPTION, {
  variables: { symbol: "BTCUSDT" }
});

return (
  <div>
    <h2>BTC/USDT: ${data?.onPriceUpdated?.close}</h2>
  </div>
);

Troubleshooting

Not Receiving Notifications

1

Check Telegram Connection

Verify your Telegram connection status in Settings. If disconnected, repeat the setup process.
2

Verify Rule is Enabled

Ensure the rule toggle is in the “On” position (green).
3

Check Condition Logic

Review your condition thresholds. If they’re too extreme, they may never trigger.
4

Review Activation History

Check the rule’s activation log to see if it has triggered before but notifications failed.

Rule Not Triggering

Rules have a cooldown period after triggering to prevent notification spam. Check the LastTriggeredAt timestamp in the rule details.

Next Steps

System Architecture

Learn how PriceSignal works under the hood

API Reference

Explore the complete GraphQL API

Build docs developers (and LLMs) love