Add Jupiter alarm
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Jupiter Perps Price Alarm
|
||||
|
||||
A small Java 17 program that listens to Jupiter Perps' on-chain aggregated oracle account through Solana WebSocket `accountSubscribe`.
|
||||
|
||||
It does **not** poll once per second. Every account update observed by the connected RPC node is decoded immediately. The program reconnects automatically, performs an initial/reconnect state fetch, and can connect to multiple independent RPC endpoints for redundancy.
|
||||
|
||||
## Build and test
|
||||
|
||||
```bash
|
||||
gradle classes
|
||||
gradle run --args='--self-test'
|
||||
```
|
||||
|
||||
## Monitor a SOL short liquidation threshold
|
||||
|
||||
```bash
|
||||
gradle run --args='--asset=SOL --target=175.00 --direction=above'
|
||||
```
|
||||
|
||||
For a long position, liquidation is normally below the current price:
|
||||
|
||||
```bash
|
||||
gradle run --args='--asset=SOL --target=120.00 --direction=below'
|
||||
```
|
||||
|
||||
## Use two RPC WebSocket streams
|
||||
|
||||
A single WebSocket/RPC provider is not a durable event log. For better resilience, provide two independent endpoints:
|
||||
|
||||
```bash
|
||||
export SOLANA_WS_URLS='wss://first-provider.example,wss://second-provider.example'
|
||||
gradle run --args='--asset=SOL --target=175 --direction=above'
|
||||
```
|
||||
|
||||
The same URL is converted from `wss://` to `https://` for initial and reconnect state retrieval. This works with the usual Solana RPC endpoint format, including API-key query parameters.
|
||||
|
||||
## Pushover emergency alarm
|
||||
|
||||
```bash
|
||||
export PUSHOVER_APP_TOKEN='...'
|
||||
export PUSHOVER_USER_KEY='...'
|
||||
gradle run --args='--asset=SOL --target=175 --direction=above'
|
||||
```
|
||||
|
||||
The program sends `priority=2`, `retry=30`, `expire=10800`, and `sound=persistent`.
|
||||
|
||||
## Important limitations
|
||||
|
||||
- `processed` is intentionally used for minimum delay, but a processed update may belong to a fork that is later abandoned.
|
||||
- Solana PubSub is not guaranteed delivery. Two independent RPC streams reduce, but do not eliminate, the risk of missing an update.
|
||||
- The alarm reports the Jupiter Perps oracle price. It does not prove that your position was liquidated. For that, also subscribe to your Jupiter position account or relevant program transactions.
|
||||
- This is an alerting aid, not a substitute for placing an on-platform stop-loss or reducing leverage.
|
||||
Reference in New Issue
Block a user