Smart Money API
API intelijen tingkat profesional yang mengagregasi data derivatif, metrik on-chain, dan aktivitas dompet paus menjadi satu skor kepercayaan untuk bot trading Anda.
https://api.smartmoneyapi.com/v1Prinsip desain
Empat ide membentuk setiap endpoint dan setiap skor yang dikembalikan API ini. Mereka juga merupakan batasan jujur dari apa yang dijanjikan — dan tidak dijanjikan.
Strategi-pertama, bukan sinyal-pertama. Ini bukan umpan sinyal beli/jual. Anda membawa strategi dan entri; API memberi tahu apakah struktur pasar sekitar — posisi derivatif, pendanaan, open interest, likuidasi, aliran on-chain, dan konsensus paus — setuju dengan trade yang sudah ingin Anda lakukan.
Skor kepercayaan, bukan prediksi biner. Setiap jawaban membawa nilai bertingkat confidence (TINGGI / SEDANG / RENDAH) dan composite dari -1.0 hingga +1.0. Tidak ada jaminan dan tidak ada panggilan oracle — Anda mendapatkan pembacaan terkalibrasi tentang kesepakatan, dengan alasan di baliknya, sehingga Anda dapat menyesuaikan ukuran proporsional dengan keyakinan.
Dukungan keputusan, bukan nasihat eksekusi. API mengembalikan rekomendasi KONFIRMASI / KURANGI / LEWATI dan pengali ukuran untuk Anda logika untuk bertindak. Ini tidak pernah menempatkan pesanan, dan tidak ada di sini yang merupakan nasihat keuangan. Anda tetap bertanggung jawab atas risiko, ukuran, dan eksekusi.
Metrik hidup, bukan jaminan tetap. Tingkat kemenangan, statistik rezim, dan angka akurasi dihitung dari sampel bergulir dan bergerak saat pasar bergerak. Kami mempublikasikannya dengan jujur, termasuk saat mereka biasa-biasa saja. Perlakukan setiap metrik sebagai observasi saat ini, bukan janji tentang masa depan.
Untuk siapa API ini
API ini dibangun untuk pengembang bot, algo, dan agen-AI kripto yang sudah memiliki sinyal long/short — dari strategi TA, model ML, pipa Freqtrade, alert TradingView, atau agen LLM — dan ingin keputusan KONFIRMASI / KURANGI / LEWATI cepat sebelum mengalokasikan modal.
Loop khas: strategi Anda memicu "long BTC" → Anda memanggil GET /v1/confirm?symbol=BTC&direction=long → Anda mengonfirmasi, mengurangi, atau melewatkan entri dan menyesuaikan ukuran dengan size_mult. Satu panggilan, respons JSON latensi rendah tunggal, tidak ada infrastruktur tambahan.
Ini bukan generator sinyal mandiri, produk charting, atau tempat eksekusi. Jika Anda tidak memiliki sinyal sendiri untuk digate, mulailah dengan halaman kinerja untuk melihat bagaimana skor berperilaku sebelum menghubungkannya ke bot live.
Mendapatkan akses
1 — Daftar. Buat akun gratis di signup (email/kata sandi atau Google). Tidak perlu kartu kredit untuk tier gratis.
2 — Buka dashboard Anda. Anda dashboard menunjukkan kunci API, paket saat ini, dan penggunaan live terhadap kuota harian Anda.
3 — Salin kunci API Anda. Kunci diawali sm_. Sertakan sebagai X-API-Key header pada setiap permintaan (lihat Autentikasi). Tingkatkan kapan saja di halaman harga untuk meningkatkan batasan dan membuka lebih banyak simbol dan endpoint.
Spesifikasi, SDK & Buku Resep
Semua yang Anda butuhkan untuk mengintegrasikan dengan cepat, baik Anda menulis kode sendiri atau menyerahkannya ke agen coding.
| Sumber Daya | Apa itu |
|---|---|
| Buku Resep | Resep salin-tempel untuk integrasi paling umum — konfirmasi sebelum masuk, gerbang sinyal Freqtrade, ukuran berdasarkan pengali, tangani 402/429, dan sambungkan ke agen coding. |
| Spesifikasi OpenAPI | Definisi OpenAPI yang dapat dibaca mesin dari setiap endpoint. Impor ke Postman/Insomnia, buat klien, atau berikan ke LLM. Di github.com/tashiardit/smartmoneyapi-docs. |
| Klien Python | Pustaka klien Python resmi di github.com/tashiardit/smartmoneyapi-python. |
| /llms.txt | Ringkasan API dalam teks biasa yang ramah LLM. Arahkan Claude, Codex, atau Cursor ke sana (lihat Agen Coding). |
Mulai cepat dalam 2 menit
Langkah 1 — URL Dasar. Setiap endpoint berada di bawah:
Langkah 2 — Dapatkan kunci API Anda. Daftar gratis (tanpa kartu kredit diperlukan) dan salin kunci Anda dari dashboard. Gunakan sebagai X-API-Key header pada setiap permintaan.
Langkah 3 — Panggilan pertama Anda. Tempelkan ini ke terminal Anda dan ganti sm_your_key dengan kunci dari dashboard Anda:
Respons yang diharapkan:
"ts": 1710940821,
"symbol": "BTC",
"direction": "long",
"composite": 0.74,
"confidence": "HIGH",
"action": "CONFIRM",
"size_mult": 1.5,
"deriv_score": 0.81,
"onchain_score": 0.68,
"whale_score": 0.73,
"reasons": ["Tingkat pendanaan positif di semua venue", "Paus: 67% konsensus long"]
}
Ketika confidence adalah HIGH atau MEDIUM dan action adalah CONFIRM, skalakan ukuran posisi Anda dengan size_mult. Itulah seluruh lingkaran integrasi. Lihat Kolom Respons untuk referensi lengkap kolom.
Autentikasi
Semua permintaan memerlukan kunci API yang diberikan sebagai X-API-Key header HTTP.
Kunci API Anda tersedia dari dashboard setelah mendaftar. Jaga kerahasiaan kunci Anda — jangan tampilkan di kode klien atau repositori publik.
/v1/ws/ticket dengan X-API-Key header, lalu hubungkan dengan tiket yang dikembalikan. Lihat Autentikasi WebSocket (tiket).Masuk dengan Google (Firebase Auth)
Pengguna dapat mengautentikasi menggunakan akun Google mereka melalui Firebase Authentication. Setelah berhasil masuk dengan Google di klien, tukarkan token ID Firebase untuk sesi API yang terhubung. Sistem secara otomatis menyinkronkan identitas Google Anda dengan sistem kunci API.
Badan Permintaan
| Kolom | Tipe | Deskripsi |
|---|---|---|
| id_tokenwajib | string | Token ID Firebase yang diperoleh setelah masuk dengan Google di klien |
Contoh Respons
"api_key": "sm_your_linked_key",
"uid": "firebase_uid_abc123",
"email": "[email protected]",
"plan": "trader",
"synced": true
}
Batas Laju
| Paket | Panggilan/Hari | Batas Ledakan | Penundaan Data |
|---|---|---|---|
| Gratis | 50 | 2/menit | 60 detik |
| Trader | 1,000 | 20/menit | Real-time |
| Pro | 5,000 | 60/menit | Real-time |
| Enterprise | 100,000 | 400/menit | Real-time |
Header batas kecepatan disertakan dalam setiap respons: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
URL Dasar
Semua endpoint di bawah ini relatif terhadap URL dasar ini. Semua respons adalah JSON dengan Content-Type: application/json.
Kesalahan
Kesalahan menggunakan kode status HTTP standar dan badan JSON yang konsisten. Selalu cabangkan berdasarkan kode status, bukan teks respons. Tiga yang paling sering Anda temui:
| Status | Kode | Arti & tindakan yang harus dilakukan |
|---|---|---|
| 401 | unauthorized | Kunci API tidak ada atau tidak valid. Periksa X-API-Key header ada dan benar. |
| 402 | payment_required | Endpoint atau simbol memerlukan paket yang lebih tinggi daripada yang dimiliki kunci Anda (misalnya, kunci gratis yang memanggil WebSocket firehose). Upgrade atau kembali ke endpoint publik. |
| 429 | rate_limit_exceeded | Batas harian atau ledakan tercapai. Mundur dan coba lagi setelah X-RateLimit-Reset; jangan memaksa. |
Setiap kesalahan mengembalikan bentuk yang sama:
"error": "rate_limit_exceeded",
"message": "Batas harian 100 panggilan tercapai. Direset pada 00:00 UTC.",
"status": 429
}
Untuk daftar lengkap kode status (400 / 403 / 500 / 503 dan lainnya), lihat Kode Kesalahan. Integrasi yang kuat memperlakukan 5xx dan 429 sebagai sementara (coba lagi dengan backoff) dan 401/402/403 sebagai terminal (perbaiki kunci atau paket).
Praktik keamanan terbaik
Kirim kunci dalam header, bukan URL. Selalu kirim X-API-Key sebagai header HTTP. Kunci dalam string kueri (?key=) dicatat oleh proxy, load balancer, dan riwayat browser — autentikasi ?key= legacy tidak lagi diterima di endpoint WebSocket karena alasan ini.
Simpan kunci di sisi server. Jangan pernah menyematkan kunci API di JavaScript sisi klien, bundel aplikasi seluler, atau repositori publik. Muat dari variabel lingkungan atau manajer rahasia. Jika kunci bocor, putar.
Putar kunci secara berkala. Buat ulang kunci Anda dari dashboard sesuai jadwal dan segera jika Anda curiga ada paparan. Kunci lama berhenti bekerja saat kunci baru diterbitkan.
Gunakan tiket untuk soket browser. Untuk aliran real-time dari browser, tukar kunci Anda dengan tiket sekali pakai alih-alih terhubung dengan kunci mentah — lihat Autentikasi WebSocket (tiket).
Penggunaan dengan agen pengkodean / LLM
Membangun dengan Claude Code, Codex, Cursor, atau agen pengkodean LLM? Anda dapat memberikan semua yang diperlukan agen untuk menyambungkan API ini dengan benar sekaligus. Dua referensi yang dapat dibaca mesin diterbitkan:
| Sumber Daya | URL |
|---|---|
| Ringkasan LLM | https://smartmoneyapi.com/llms.txt |
| Spesifikasi OpenAPI | github.com/tashiardit/smartmoneyapi-docs |
Arahkan agen Anda ke /llms.txt file (konvensi llms.txt) untuk ikhtisar singkat, lalu spesifikasi OpenAPI untuk bentuk permintaan/respons yang tepat. Satu baris perintah yang berfungsi baik:
Baca https://smartmoneyapi.com/llms.txt dan spesifikasi OpenAPI di
github.com/tashiardit/smartmoneyapi-docs, lalu tambahkan pemeriksaan pra-perdagangan
ke bot saya yang memanggil GET /v1/confirm dan melewati entri
kecuali aksi adalah CONFIRM.
Lihat Buku Resep untuk resep agen pengkodean yang sudah dikerjakan.
Endpoint
GET /confirm
Endpoint inti. Mengembalikan skor kepercayaan komposit dan rekomendasi aksi untuk arah perdagangan tertentu. Panggil ini sebelum memasuki posisi apa pun.
Cakupan, dalam istilah sederhana. /confirm saat ini mencakup BTC, ETH dan SOL — simbol dengan riwayat yang cukup untuk dikonfirmasi dengan jujur. Pemeriksa derivatif secara terpisah memantau ~519 pasar derivatif untuk data pendanaan, OI, dan likuidasi, dan pelacakan paus mencakup 600+ dompet. Pro membuka kunci pemeriksa penuh, ekspor, dan cakupan pasar yang lebih luas; /confirm dukungan simbol diperluas saat setiap pasar mengumpulkan rekam jejak yang andal.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolwajib | string | Simbol aset. Salah satu: BTC, ETH, SOL (Trader+) |
| directionwajib | string | Arah perdagangan: long atau short |
| sourceopsional | string | Label untuk sumber sinyal Anda (dicatat untuk analitik). Maks 32 karakter. |
Contoh Permintaan
"https://api.smartmoneyapi.com/v1/confirm?symbol=BTC&direction=long"
Contoh Respons
"ts": 1710940821,
"symbol": "BTC",
"direction": "long",
"composite": 0.74,
"confidence": "TINGGI",
"action": "KONFIRMASI_PENUH",
"size_mult": 1.5,
deriv_score: 0.81,
onchain_score: 0.68,
whale_score: 0.73,
x_score: 0.0,
faktor: {
derivatif: { skor: 0.81, bobot: 0.40, terbobot: 0.324 },
onchain: { skor: 0.68, bobot: 0.35, terbobot: 0.238, sumber: coinmetrics, tersedia: True },
paus: { skor: 0.73, bobot: 0.25, faktor_kadaluarsa: 1.0, terbobot: 0.183 }
},
penyesuaian: { kesepakatan: 0.0, trend: 0.0, berita_makro: 0.0 },
bobot: { derivatif: 0.40, onchain: 0.35, whale_intel: 0.25 },
cakupan: { derivatif: True, paus: True, onchain: True },
alasan: [
Tingkat pendanaan positif di semua venue,
LSR mendukung long: 1.42,
Paus: 67% konsensus long,
MVRV di atas 1.0 — on-chain bullish
]
}
Transparan oleh desain. Setiap respons membawa factors objek yang menunjukkan skor × bobot = terbobot kontribusi, sebuah adjustments objek untuk penyesuaian pasca-filter, weights yang digunakan, dan sebuah coverage peta. Kaki on-chain menggunakan data Coin Metrics gratis nyata (MVRV / aliran-pertukaran / alamat-aktif) saat tidak ada kunci Glassnode yang ditetapkan. Ini adalah pertemuan multi-faktor skor — dukungan keputusan, bukan jaminan tingkat kemenangan.
Simbol yang tidak dilacak adalah jujur. Simbol di luar alam semesta derivatif/paus yang dilacak mengembalikan "confidence":"NO_DATA" / "action":"NO_DATA_SKIP" dengan "unsupported":true — bukanlah hasil yang dibuat-buat LOW.
Kolom Respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
| ts | integer | Stempel waktu Unix dari perhitungan |
| simbol | string | Simbol aset (BTC/ETH/SOL) |
| arah | string | Arah yang diminta (long/short) |
| komposit | float | Skor pertemuan komposit dari -1.0 (ekstrem kontra) hingga +1.0 (konfirmasi kuat). Bukan tingkat kemenangan. |
| base_composite | float | Komposit sebelum penyesuaian pasca-filter diterapkan |
| keyakinan | string | HIGH / MEDIUM / LOW / VETO / NO_DATA |
| tindakan | string | CONFIRM_FULL / CONFIRM_REDUCED / CONFIRM_MINIMAL / VETO_SKIP / NO_DATA_SKIP |
| size_mult | float | Pengganda ukuran posisi yang disarankan (mis. 0.0 – 1.5) |
| tidak_didukung | bool | true ketika simbol berada di luar cakupan (dipasangkan dengan NO_DATA) |
| deriv_score | float | Sub-skor derivatif (-1 hingga 1) |
| onchain_score | float | Sub-skor on-chain (-1 hingga 1) |
| whale_score | float | Sub-skor konsensus paus (-1 hingga 1) |
| x_score | float | Sub-skor X/sentimen-sosial (-1 hingga 1); 0 saat tidak digunakan |
| faktor | objek | Pembagian per kaki: score × weight = weighted untuk derivatif / onchain / paus / x_sentiment (onchain mencakup source) |
| penyesuaian | objek | Penyesuaian pasca-filter bertanda (kesepakatan, trend, rsi_1h, berita_makro, momentum, waktu_hari, peluruhan_streak) |
| bobot | objek | Set bobot yang benar-benar digunakan untuk evaluasi ini |
| cakupan | objek | {derivatives, whale, onchain} — kaki mana yang memiliki data nyata |
| alasan | array | String penjelasan yang dapat dibaca manusia untuk skor |
GET /snapshot
Mengembalikan snapshot pasar lengkap termasuk semua sub-skor, metrik mentah, dan nilai indikator untuk simbol tertentu. Berguna untuk dasbor dan pencatatan.
GET /onchain
Mengembalikan metrik on-chain mentah: MVRV, SOPR, aliran bersih exchange, rasio realized cap, dan klasifikasi posisi siklus.
GET /v1/derivatives/*
Screener derivatif lintas exchange untuk 500+ simbol: heatmap funding-rate, peringkat open-interest, dan deteksi sinyal long/short-ratio. 10 baris teratas bersifat publik; screener lengkap memerlukan Trader atau Pro. Endpoint: /v1/derivatives/screener, /v1/derivatives/funding, /v1/derivatives/oi, /v1/derivatives/signals.
GET /v1/options/*
Analitik opsi BTC & ETH sumber Deribit (publik, tanpa autentikasi): rasio put/call, max pain, dan open interest per strike. Endpoint: /v1/options/summary, /v1/options/pcr, /v1/options/oi.
GET /v1/etf/*
Aliran bersih harian ETF BTC & ETH spot dan rincian per-dana (publik). Endpoint: /v1/etf/flows, /v1/etf/funds.
GET /v1/historical/*
Data historis funding, open interest, long/short ratio (Binance), dan OHLCV (CoinGecko) untuk backtesting. Endpoint: /v1/historical/funding, /v1/historical/oi, /v1/historical/lsr, /v1/historical/ohlcv.
GET /v1/dex/*
Pasangan trending berbasis DexScreener, pencarian token, dan detail pasangan (publik, tanpa autentikasi). Endpoint: /v1/dex/trending, /v1/dex/search, /v1/dex/token, /v1/dex/pair.
GET /v1/news/*
Intelijen berita: berita kebijakan/geopolitik/kripto yang diklasifikasikan ke dalam kategori dampak, plus Fear & Greed (publik, tanpa autentikasi). Endpoint: /v1/news/trump, /v1/news/general, /v1/news/impact, /v1/news/fear-greed.
GET /whales
Mengembalikan data konsensus dompet paus: pembagian long/short, total eksposur notional, 10 posisi teratas (hanya Pro), dan jumlah dompet.
GET /signals
Mengembalikan aliran sinyal HIGH/MEDIUM terbaru di semua aset yang dipantau. Berguna untuk pemindaian peluang.
GET /v1/strategies/*
Rekam jejak transparan dan hanya-baca untuk strategi trading otomatis yang dieksekusi berdasarkan sinyal Smart Money — termasuk deriv40 Strategi SmartMoney Copytrade (account=9). Semua endpoint menerima parameter ?account=<id> query dan mengembalikan JSON. Tidak diperlukan autentikasi (rekam jejak publik).
Endpoint
GET /v1/strategies/stats?account=9— metrik utama:total_trades,win_rate,profit_factor,total_pnl_usdt,account_growth_percent,initial_equity,current_equity,max_drawdown_portfolio,max_drawdown_trade.GET /v1/strategies/equity?account=9— kurva ekuitas untuk charting:{ initial_equity, curve: [{ time, equity }] }.GET /v1/strategies/trades?account=9&limit=500— ledger trade tertutup: array (atau{trades:[…]}) darisymbol,direction,entry_price,exit_price,pnl_usdt,pnl_percent,pnl_percent_net.GET /v1/strategies/active?account=9— posisi yang saat ini terbuka: array (atau{positions:[…]}) darisymbol,side/direction,entry_price,unrealized_pnl.GET /v1/strategies/signals— rincian tipe sinyal yang memberi makan strategi (jumlah / menang / win_rate / avg_pnl per tipe sinyal).
Kinerja masa lalu tidak menjamin hasil di masa depan. Angka di-backfill selama satu rezim ~3 bulan plus trade live dan ditampilkan sebelum biaya jika dicatat.
GET /export
Unduh data sinyal historis sebagai CSV untuk backtesting. Parameter: symbol, from (unix ts), to (unix ts).
GET /health
Pemeriksaan kesehatan sistem. Mengembalikan kesegaran data untuk setiap sumber dan status API secara keseluruhan. Tidak diperlukan autentikasi.
"status": "ok",
"uptime_s": 1209600,
"sources": {
"bybit": { "lag_s": 42, "ok": true },
"binance": { "lag_s": 38, "ok": true },
"hyperliquid": { "lag_s": 61, "ok": true },
"onchain": { "lag_s": 290, "ok": true }
}
}
GET /usage
Mengembalikan statistik penggunaan API Anda saat ini: panggilan hari ini, total bulanan, batas kuota, dan waktu reset.
POST /webhooks
Daftarkan URL HTTPS untuk menerima push event bertanda real-time saat sinyal terpicu di aset yang Anda pantau. Pengiriman membawa header X-SmartMoney-Event dan tanda tangan HMAC-SHA256 di X-SmartMoney-Signature, dan akan diulang hingga 3× dengan backoff.
Bodi Permintaan
| Field | Tipe | Deskripsi |
|---|---|---|
| urlrequired | string | Endpoint HTTPS untuk POST event (harus dimulai dengan https://) |
| eventsrequired | array | Nama event, misalnya ["HIGH","MEDIUM","VETO"] atau ["*"] |
| symbolsrequired | array | Simbol untuk filter, misalnya ["BTC","ETH"] atau ["*"] |
| secretrequired | string | Secret penandatanganan Anda, ≥ 16 karakter (disimpan dalam bentuk hash) |
Memverifikasi tanda tangan
Kunci HMAC adalah hex digest SHA-256 dari secret yang terdaftar. Hitung HMAC-SHA256 dari bodi permintaan mentah dengan kunci tersebut dan bandingkan (constant-time) dengan X-SmartMoney-Signature. Lihat Panduan Implementasi Webhook.
Kecerdasan
GET /analysis
Mengembalikan klasifikasi rezim pasar berbasis AI dengan deteksi konflik sinyal. Menganalisis kesepakatan lintas-sinyal, mengidentifikasi divergensi antara data derivatif, on-chain, dan data paus, serta menghasilkan ringkasan bahasa alami dengan faktor risiko ke depan dan rekomendasi berorientasi waktu.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolwajib | string | Simbol aset: BTC, ETH, atau SOL |
Contoh Respons
"ts": 1710940821,
"symbol": "BTC",
"regime": "late_cycle_divergence",
"regime_label": "Siklus Akhir — Divergensi Sinyal",
"summary": "BTC berada dalam fase siklus bull akhir dengan kekuatan on-chain yang bertentangan dengan overekstensi derivatif. Paus mengurangi eksposur sementara LSR ritel naik.",
"signal_conflicts": [
"Skor paus bearish sementara skor onchain bullish",
"Tingkat pendanaan pada level tertinggi 3 bulan — risiko squeeze potensial"
],
"risk_factors": ["Pendanaan tinggi", "Divergensi OI", "Pengurangan paus"],
"recommendation": "Kurangi eksposur long, perketat stop. Hindari long baru di atas harga saat ini.",
"time_horizon": "4h–12h"
}
GET /liquidations
Mengembalikan dua pandangan komplementer: (1) proyeksi leverage levels — perkiraan di mana kluster likuidasi berada; dan (2) sebuah realized_heatmap — REAL dieksekusi intensitas likuidasi paksa (harga × waktu), diagregasi langsung dari feed WebSocket bursa publik: Binance, OKX, Bybit, Bitget, BitMEX. Heatmap hadir ketika aliran memiliki data untuk simbol (tidak ada di pasar yang sangat tenang atau baru saja dimulai).
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolopsional | string | Simbol aset (default BTC). Heatmap nyata mencakup simbol perp yang aktif diperdagangkan. |
Contoh Respons
"symbol": "BTC",
"cascade_risk": "TINGGI",
"nearest_long_liq_pct": -3.2,
"nearest_short_liq_pct": 4.1,
// Likuidasi REAL yang dieksekusi — langsung dari 5 bursa
"realized_heatmap": {
"window_minutes": 240, "price_min": 91000.0, "price_max": 99000.0,
"clusters": [ { "price": 93250.0, "notional": 4820000.0, "count": 37, "dominant_side": "long" } ],
"by_side": { "long": 6100000.0, "short": 2400000.0 },
"totals": { "total_notional": 8500000.0, "count": 214 },
"exchanges": { "binance": 120, "okx": 40, "bybit": 34, "bitget": 12, "bitmex": 8 }
}
}
cascade_risk, jarak terdekat, dan total/berdasarkan sisi yang direalisasikan. Paket Pro: proyeksi penuh levels ditambah realized_heatmap (matriks, kluster per-harga, hitungan per-bursa). Proyeksi memperkirakan "di mana stop berada"; heatmap yang direalisasikan menunjukkan "apa yang benar-benar dilikuidasi."GET /liquidations/heatmap
Publik heatmap likuidasi tingkat harga. Mengembalikan matriks harga × waktu gaya Coinglass dari REAL dieksekusi likuidasi paksa, dikelompokkan berdasarkan harga di mana setiap likuidasi tercatat — diagregasi langsung dari feed WebSocket bursa publik: Binance, OKX, Bybit, Bitget, BitMEX. Array clusters adalah output praktis: kelompok harga yang diurutkan berdasarkan notional yang dilikuidasi, masing-masing diberi tag dengan sisi dominannya. Data tergantung pada aliran langsung — simbol yang sangat sepi atau gateway yang baru dimulai mengembalikan struktur kosong yang terbentuk dengan baik ditambah note. Level yang ditampilkan hanya likuidasi nyata, tidak pernah perkiraan.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolopsional | string | Simbol aset (default BTC). |
| window_minutesopsional | int | Jendela waktu mundur dalam menit (default 240, dibatasi antara 5–1440). |
| price_bucketsopsional | int | Jumlah bucket harga (default 50, dibatasi antara 5–100). |
Contoh Respons
"symbol": "BTC", "window_minutes": 240, "price_buckets": 50,
"price_min": 91000.0, "price_max": 99000.0, "price_bucket_size": 160.0,
"price_levels": [ 91080.0, 91240.0, … ], "time_buckets": [ … ],
"matrix": [ [ … ] ], "long_matrix": [ [ … ] ], "short_matrix": [ [ … ] ],
"clusters": [
{ "price": 93250.0, "notional": 4820000.0, "long_notional": 4100000.0,
"short_notional": 720000.0, "count": 37, "dominant_side": "long" }
],
"by_side": { "long": 6100000.0, "short": 2400000.0 },
"totals": { "long_liq_notional": 6100000.0, "short_liq_notional": 2400000.0, "total_notional": 8500000.0, "count": 214 },
"exchanges": { "binance": 120, "okx": 40, "bybit": 34, "bitget": 12, "bitmex": 8 },
"generated_at": 1710940200, "public": true
}
totals.count adalah 0, clusters kosong, dan sebuah note field menjelaskan mengapa. Ini adalah catatan likuidasi yang dieksekusi — bukan prediksi. Untuk estimasi proyeksi "di mana stop-loss berada", gunakan endpoint terautentikasi /liquidations endpoint.GET /liquidations/onchain
Dieksekusi likuidasi pinjaman DeFi on-chain ditangkap langsung dari node lokal kami sendiri BSC + Avalanche full nodes — independen dari bot trading apa pun. Mencakup Venus/Cream dan Moolah di BSC, serta AAVE V3/V2, Benqi, BankerJoe, Granary, dan Vinium di Avalanche. Tingkat Pro juga mengembalikan at_risk posisi (tergantung bot, mungkin tidak ada).
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| chainopsional | string | bsc atau avax. Abaikan untuk semua chain. |
| limitopsional | integer | Maksimal baris (default 100, maksimal 500). Terbaru pertama. |
Contoh Respons
"chain": "bsc", "count": 2,
"liquidations": [
{ "chain": "bsc", "protocol": "Venus", "borrower": "0x2be6…8dfa",
"debt_symbol": "DAI", "repay_usd": 426.15,
"collateral_symbol": "WBNB", "tx_hash": "0x718c…7c0e", "block": 89170816, "ts": 1710940200 }
],
"summary": {
"window_hours": 24, "enabled": true,
"by_protocol": { "bsc:Venus": { "count": 61, repay_usd_known: 148230.55 } },
nodes: { bsc: { reachable: True, head_block: 89173010, events_total: 61 } }
}
}
GET /smart-stop
Menghitung level stop-loss cerdas berdasarkan heatmap likuidasi saat ini, pita volatilitas, dan struktur pasar. Memberikan rekomendasi stop bertingkat dan saran take-profit yang disesuaikan dengan harga masuk dan toleransi risiko Anda.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolrequired | string | Simbol aset: BTC, ETH, atau SOL |
| directionrequired | string | Arah posisi: long atau short |
| entry_priceoptional | float | Harga masuk Anda. Default ke harga pasar saat ini jika tidak diisi. |
| risk_pctoptional | float | Risiko maksimum yang dapat diterima sebagai % dari akun. Default: 2.0 |
Contoh Respons
"symbol": "BTC",
"direction": "long",
"entry_price": 96420,
"stops": {
"tight": { "price": 95100, "note": "Di bawah struktur 1 jam. Terbaik untuk scalping." },
"recommended": { "price": 93800, "note": "Di bawah kluster likuidasi besar di $94K. Stop standar untuk swing." },
"wide": { "price": 91200, "note": "Di bawah zona permintaan 4 jam. Stop untuk posisi trading." }
},
"avoid_zones": [
{ "low": 94200, "high": 94800, "reason": "Kluster likuidasi padat — risiko slippage tinggi" }
],
"take_profit_suggestions": [
{ "tp1": 98500, "tp2": 101000, "tp3": 104200 }
]
}
recommended stop. Paket Pro: Ketiga tier stop, avoid_zones, dan saran take-profit lengkap.GET /funding-arb
Mengidentifikasi peluang arbitrase tingkat funding lintas bursa secara real-time. Mengembalikan peluang yang diurutkan dengan perkiraan hasil tahunan, pasangan bursa optimal, dan tindakan lindung nilai yang diperlukan untuk menangkap spread.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| min_spreadoptional | float | Spread tingkat funding minimum yang akan dimasukkan (dalam desimal). Default: 0.01 |
| symboloptional | string | Filter untuk aset tertentu. Kosongkan untuk memindai semua aset yang didukung. |
Contoh Respons
"ts": 1710940821,
"opportunities": [
{
"symbol": "BTC",
"spread": 0.032,
"apr": 84.2,
"long_exchange": "hyperliquid",
"short_exchange": "bybit",
"action": "Long HYPE / Short BYBIT",
"estimated_profit_8h_usd": 26.4
}
]
}
Varian publik gratis Tanpa auth
Endpoint publik tanpa kunci mengembalikan 10 peluang teratas dengan screener lintas bursa langsung, ideal untuk embedding atau pengecekan cepat. Tidak termasuk riwayat spread per simbol dan field berat, serta disajikan dari cache 120 detik. Ketika tidak ada spread funding lintas bursa dalam jangka waktu kesegaran, mengembalikan opportunities array kosong dengan note — tidak pernah data palsu.
"opportunities": [
{
"symbol": "OGN",
"spread_pct": 0.297667,
"annualized_apr": 325.95,
"long_exchange": "bybit",
"short_exchange": "hyperliquid",
"estimated_profit_per_10k": 29.77,
"risk_notes": "Spread rendah — pastikan biaya tidak menghabiskan margin arbitrase."
}
],
"scanned_symbols": 222,
"ts": 1783268753,
"public": true,
"limited": true
}
"GET" "/smart-money/flow"
"Indeks arah terimbang kualitas" "indeks arah paus" "per simbol, dinilai" -100 "(uang paus cenderung short) hingga" +100 "(cenderung long). Dibangun dari ribuan dompet paus Hyperliquid yang dilacak — masing-masing diberi bobot berdasarkan tingkat kemenangan historis dan PnL serta diperbarui berdasarkan kebaruan. Ini adalah" "indeks posisi, bukan sinyal beli/jual atau prediksi harga." "Simbol dengan sedikit dompet kontributor diberi label" thin "dan dinilai dengan jujur. Halaman live:" "smart-money-flow.html".
"Parameter"
| "Parameter" | "Tipe" | "Deskripsi" |
|---|---|---|
| "symbol""opsional" | "string" | "Simbol tunggal (contoh:" BTC"). Abaikan untuk mendapatkan semua simbol yang dilacak diurutkan berdasarkan |skor|." |
| "window_hours""opsional" | "int" | "Jendela penilaian, dibatasi hingga" 1..168". Default" 24. |
"Contoh Respons"
"symbols": [
{
"symbol": "SPX",
"score": -90.93,
"direction": "strong_short",
"n_wallets": 26,
"long_usd": 184200.0, "short_usd": 2410000.0,
"quality_weighted": true,
"sample_quality": "rich",
"top_contributors": [ { "wallet": "0x31ca…974b", "direction": "short", "value_usd": 5338.25, "weight": 0.4948 } ]
}
],
"window_hours": 24,
"quality_weighted": true,
"ts": 1783270000,
"note": "Indeks posisi arah paus terimbang kualitas (-100..+100). Bukan prediksi harga atau sinyal beli/jual."
}
top_contributors". Bobot dompet dibatasi hingga" [0.25,1.0]"; PnL adalah proksi belum direalisasi dari snapshot posisi terbaru.""GET" "/v1/whales/crowding"
"Gabungan" "konteks posisi & kepadatan paus" "per simbol, digabungkan dari" "Hyperliquid + GMX v2 + Jupiter Perps"". Mengembalikan notional kotor/bersih, skew arah, jumlah dompet & venue, konsentrasi posisi (bagian top-3 + HHI), leverage rata-rata tertimbang, dan" "ember kedekatan likuidasi" "(notional $ yang berada dalam 5% dan 10% dari perkiraan harga likuidasinya, dibagi long/short). Ini adalah" "konteks, bukan sinyal arah." "Bidang yang tidak dapat diturunkan adalah" null "dan dirender sebagai" — "— misalnya" lev_wavg/crowding_index "ketika tidak ada posisi yang memiliki leverage. Jarak likuidasi adalah perkiraan margin terisolasi ("pct_to_liq ≈ 1/lev + upnl/notional − mmr, mmr = 0.01), "bukan" "harga likuidasi yang dilaporkan bursa."
"Parameter"
| "Parameter" | "Tipe" | "Deskripsi" |
|---|---|---|
| "min_notional""opsional" | "float" | "Notional kotor gabungan minimum (USD) agar simbol dapat dimasukkan. Default:" 1000000. |
"Contoh Permintaan"
"Contoh Respons"
"ok": true, "ts": 1783423500, min_notional: 1000000, n_symbols: 92,
symbols: [
{
symbol: BTC,
gross_usd: 2447900000.0, net_usd: -51000000.0, skew: -0.021,
n_whales: 414, n_venues: 3,
venues: {
hl: { gross: 1900000000.0, net: -40000000.0, n_whales: 272 },
gmx: { gross: 320000000.0, net: -6000000.0, n_whales: 59 },
jupiter: { gross: 227900000.0, net: -5000000.0, n_whales: 83 }
},
conc_top3: 0.159, hhi: 0.011, lev_wavg: 19.1,
liq_within_5pct: { long: 621700000.0, short: 665600000.0 },
liq_within_10pct: { long: 840000000.0, short: 910000000.0 },
crowding_index: 0.003
}
],
caveats: [ Jarak likuidasi adalah estimasi margin terisolasi, bukan dilaporkan oleh bursa. ]
}
skew adalah net/gross ∈ [-1,1]; crowding_index = |skew|·conc_top3·min(lev/20,1). Hanya venue yang benar-benar ada yang muncul di venues. Posisi tanpa leverage dikeluarkan dari bucket likuidasi daripada diasumsikan. Panggilan anonim menerima 10 simbol teratas berdasarkan gross (dengan gated: true); Trader+ menerima daftar lengkap.GET /v1/options/gex
Dealer gamma exposure (GEX) analitik untuk BTC & ETH, dihitung secara real-time dari rantai opsi publik Deribit (tanpa auth). Mengembalikan GEX dealer bersih per strike (konvensi dealer-short SpotGamma), level gamma-flip (strike di mana GEX bersih kumulatif melewati nol), struktur jangka IV (volatilitas tersirat ATM berdasarkan hari-jatuh-tempo), dan skew IV front-expiry (proxy 25Δ risk reversal). Rezim GEX adalah positive (dealer long gamma → menekan volatilitas) atau negative (menguatkan volatilitas). Mandiri penuh — dihitung ulang setiap panggilan, tidak bergantung pada DB yang disimpan.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolopsional | string | BTC atau ETH saja. Default: BTC. |
Contoh Permintaan
Contoh Respons
"symbol": "BTC", "available": true, "spot": 63203.0,
"net_gex": 18240000.0, "regime": "positive",
"gamma_flip": 64919.82, "gamma_flip_pct": 2.72,
"call_gex": 31200000.0, "put_gex": -12960000.0,
"by_strike": [
{ "strike": 60000, "net_gex": -2100000.0 },
{ "strike": 65000, "net_gex": 4800000.0 }
],
"term_structure": [
{ "expiry": "8JUL26", "dte": 0.76, "atm_iv": 62.1 },
{ "expiry": "27MAR26", "dte": 14.2, "atm_iv": 58.4 }
],
"skew": {
"expiry": "8JUL26", "dte": 0.76,
"put_iv": 69.69, "atm_iv": 62.1, "call_iv": 55.34,
"risk_reversal": 14.35, "bias": "downside_fear"
}
}
available: false dengan panel kosong — tidak pernah memalsukan GEX. Skew IV menggunakan proxy strike tetap ±10% untuk 25Δ (25-delta sebenarnya memerlukan penyelesaian delta per strike); cukup untuk tampilan, didokumentasikan sebagai perkiraan.GET /v1/liquidations/simulate
Interaktif uji stres kaskade likuidasi. Dengan asumsi pergerakan harga hipotetis, mengembalikan estimasi posisi leverage yang akan dilikuidasi, volume paksa berdasarkan level harga / sisi / bursa, dan pembacaan kedalaman kaskade. Pergerakan ke bawah melikuidasi long yang harga likuidasinya berada di/atas target; pergerakan ke atas melikuidasi short yang harga likuidasinya berada di/bawahnya. Dua metode independen digabungkan: harga likuidasi tepat dari paus Hyperliquid yang dilacak nyata leverage/masuk, ditambah klaster band OI statistik per bursa (leverage kerumunan disimpulkan dari pendanaan). Semuanya diberi label jelas estimated: true — tidak dapat mengetahui margin per-akun, cross vs isolated, margin tambahan, atau ADL.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolopsional | string | Simbol aset. Default: BTC. |
| move_pctopsional | float | Pergerakan harga hipotetis dalam persen (negatif = turun, positif = naik). Default: -5. |
Contoh Permintaan
Contoh Respons
"ok": true, "estimated": true, "symbol": "BTC",
"ref_price": 63000.0, "move_pct": -5.0, "target_price": 59850.0,
"triggered_notional_usd": 380000000.0,
"cascade_depth": 0.029, "cascade_bucket": "low",
"by_exchange": { "hyperliquid": 260000000.0, "binance": 80000000.0, "bybit": 40000000.0 },
"by_side": { "long": 380000000.0, "short": 0.0 },
"clusters": [
{ "price": 60100.0, "side": "long", "notional_usd": 42000000.0, "whale_usd": 18000000.0, "oi_usd": 24000000.0 }
],
"whale_positions_used": 272, "exchanges": 3,
"realized_context": { "available": true, "coverage_hours": 17.8, "by_side_24h": { "long": 6100000.0, "short": 2400000.0 } },
"methodology": { "disclaimer": "Estimasi — tidak dapat mengetahui margin per-akun, cross vs isolated, margin tambahan, atau ADL." }
}
ok: true, empty: true dengan pesan bahasa Inggris sederhana, bukan bar palsu. realized_context adalah sampel muda yang berkembang dari aliran likuidasi paksa langsung, muncul hanya sebagai konteks — tidak pernah membuat proyeksi "terwujud."GET /v1/wallet/{addr}/profile
Profil lintas tempat profil dompet dibangun sepenuhnya dari snapshot posisi paus yang dilacak langsung. Untuk paus Hyperliquid yang dilacak, mengembalikan posisi terbuka saat ini, deret waktu PnL tidak terealisasi / eksposur / jumlah posisi deret waktu, garis waktu aktivitas garis waktu aktivitas (direkonstruksi dengan membandingkan snapshot berturut-turut), label papan peringkat HL yang diterjemahkan, dan ringkasan buku terbuka. Halaman langsung: wallet-profiler.html.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| addrdiperlukan | string | Alamat dompet (segmen jalur), misalnya /v1/wallet/0x3bcae23e…/profile. |
| daysopsional | integer | Jendela waktu mundur untuk deret & garis waktu. Default: 30. |
Contoh Permintaan
Contoh Respons
"ok": true, "wallet": "0x3bcae23e…", "tracked": true,
"first_seen_ts": 1782827733, "latest_snapshot_ts": 1783418468, "as_of": 1783418468,
"hyperliquid": {
"label": { "name": "Andre is back", "score": 74,
"window_pnl_usd": 1307000, win_rate_pct: 71, trades: 42 },
positions: [
{ venue: hyperliquid, symbol: ETH, direction: short,
size: 1200.0, entry_px: 1800.0, unrealized_pnl: 34800.0,
leverage: 20.0, value_usd: 2160000.0 }
],
series: [ { ts: 1783330000, unrealized_pnl: 42000.0, exposure_usd: 18400000.0, positions: 5 } ],
timeline: [ { ts: 1783400000, event: flip, symbol: ETH,
direction: short, from_direction: long, value_usd: 2160000.0 } ],
summary: {
open_positions: 5, in_profit: 3, in_loss: 2, longs: 0, shorts: 5,
total_unrealized_pnl: -12000.0, total_exposure_usd: 21000000.0, blended_leverage: 19.9,
window_days: 30, snapshots_in_window: 474,
realized_pnl: None, realized_pnl_note: Tidak dapat diturunkan — hanya snapshot terbuka yang terlihat, tidak pernah termasuk penutupan posisi.
}
}
}
pnl adalah mark-to-market unrealized milik HL sendiri, value_usd adalah open notional. Realized P&L per round-trip tidak tersedia (kami hanya melihat snapshot terbuka, tidak pernah termasuk penutupan posisi) dan ditampilkan sebagai null / —; event CLOSE pada timeline tidak mengandung klaim P&L. Alamat yang valid tetapi tidak terlacak akan mengembalikan tracked: false dengan catatan; alamat tidak valid mengembalikan ok: false, error: "invalid_address" (HTTP 400). Label HL-leaderboard adalah posisi jendela HL sendiri saat ditemukan, bukan dihitung oleh kami.GET /flows
Mengembalikan data aliran modal lintas aset yang menunjukkan pola rotasi antara BTC, ETH, dan SOL di berbagai jendela waktu. Berguna untuk mengidentifikasi aset mana yang mengakumulasi modal dan yang didistribusikan pada momen tertentu.
Contoh Respons
ts: 1710940821,
flows: {
BTC: { 1h: 142000000, 4h: 380000000, 12h: -90000000, 24h: 220000000 },
ETH: { 1h: -38000000, 4h: -110000000, 12h: 55000000, 24h: -80000000 },
SOL: { 1h: 12000000, 4h: 29000000, 12h: 18000000, 24h: 44000000 }
},
rotations_detected: [
Modal berotasi dari ETH ke BTC dalam jendela 4h,
Akumulasi SOL konsisten di semua jendela
]
}
GET /whale-events
Mengembalikan perubahan posisi paus signifikan — pembukaan, penutupan, dan pembalikan arah — yang terdeteksi di dompet dan alamat on-chain yang dilacak dalam jendela look-back yang ditentukan.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolopsional | string | Filter berdasarkan aset. Kosongkan untuk semua aset yang dipantau. |
| significanceopsional | string | Filter berdasarkan signifikansi event: high, medium, atau all. Default: all |
| hoursopsional | integer | Jendela look-back dalam jam. Default: 24 |
Contoh Respons
symbol: BTC,
summary: {
flips_to_long: 3,
flips_to_short: 1,
new_opens: 7,
closes: 2
},
events: [
{
jenis: flip_long,
dompet: 0xWhale...a4f2,
arah: long,
size_usd: 4200000,
ts: 1710938400
}
]
}
summary objek saja. Rencana Pro: Lengkap events umpan dengan identifikasi dompet, ukuran, dan stempel waktu.GET /regimes/history
Mengembalikan data klasifikasi rezim historis untuk aset tertentu. Gunakan ini untuk menguji kembali bagaimana jenis rezim tertentu telah berkinerja secara historis, berapa lama setiap jenis rezim biasanya bertahan, dan bagaimana transisi rezim berkembang dari waktu ke waktu.
Parameter
| Parameter | Jenis | Deskripsi |
|---|---|---|
| simbolopsional | string | Simbol aset. Default: BTC |
| rezimopsional | string | Filter ke jenis rezim tertentu, misalnya late_cycle_divergence. Abaikan untuk semua rezim. |
| hariopsional | integer | Jendela look-back dalam hari. Default: 30. Maksimum: 365 |
Contoh Respons
simbol: BTC,
rezim_saat_ini: late_cycle_divergence,
ringkasan_rezim: {
late_cycle_divergence: { kejadian: 4, rata_rata_durasi_jam: 38, rata_rata_pengembalian_persen: -2.1 },
akumulasi: { kejadian: 6, rata_rata_durasi_jam: 72, rata_rata_pengembalian_persen: 5.4 },
breakout: { kejadian: 3, rata_rata_durasi_jam: 18, rata_rata_pengembalian_persen: 9.
Contoh Respons
status_keseluruhan: ok,
ts: 1710940821,
bursa: {
bybit: { status: ok, latensi_ms: 42, tingkat_kesalahan_1j: 0.0, umur_data_terakhir_dtk: 18 },
binance: { status: ok, latensi_ms: 38, tingkat_kesalahan_1j: 0.0, umur_data_terakhir_dtk: 22 },
hyperliquid: { status: degraded, latensi_ms: 310, tingkat_kesalahan_1j: 0.04, umur_data_terakhir_dtk: 95 },
okx: { status: ok, latensi_ms: 55, tingkat_kesalahan_1j: 0.0, umur_data_terakhir_dtk: 30 }
}
}
GET /sentiment
Mengembalikan indeks Fear & Greed (0-100) real-time yang dihitung dari sentimen derivatif, aktivitas paus, volatilitas, dan sinyal sosial. Termasuk rincian komponen dan riwayat 24 jam untuk analisis tren.
Parameter
| Parameter | Jenis | Deskripsi |
|---|---|---|
| simbolopsional | string | Simbol aset. Default: BTC |
Contoh Respons
"symbol": "BTC",
"score": 72,
"label": "Greed",
"components": {
"volatility": 65,
"momentum": 78,
"derivatives": 70,
"whale_activity": 75,
"social": 68
},
"history_24h": [
{ "ts": 1710940800, "score": 68, "label": "Greed" },
{ "ts": 1710937200, "score": 65, "label": "Greed" }
],
"ts": 1710940821
}
Integrasi
GET /tradingview/setup
Mengembalikan pengaturan integrasi TradingView yang dipersonalisasi: URL webhook, rahasia untuk validasi, dan indikator Pine Script siap pakai yang terhubung langsung ke Smart Money API. Salin-tempel Pine Script ke TradingView untuk menampilkan sinyal kami di grafik apa pun.
Contoh Respons
"webhook_url": "https://api.smartmoneyapi.com/v1/tradingview/webhook",
"webhook_secret": "tvs_a1b2c3...",
"pine_scripts": {
"composite_indicator": "// Smart Money Composite v1\n//@version=5\nindicator(...)...",
"whale_activity": "// Whale Activity Overlay v1\n...",
"funding_dashboard": "// Funding Rate + LSR Dashboard v1\n..."
}
}
POST /tradingview/webhook
Menerima alert TradingView, memprosesnya melalui /confirm, dan mengembalikan konfirmasi. TradingView tidak dapat mengirim header kustom, jadi autentikasi dengan menyertakan webhook Anda secret di badan JSON (endpoint ini tidak menggunakan X-API-Key). Respons membungkus konfirmasi dan menambahkan level teratas action dari CONFIRMED (daemon confidence HIGH/MEDIUM) atau VETOED.
Badan Permintaan
"secret": "your_webhook_secret",
"symbol": "BTC",
"direction": "long",
"timeframe": "1h",
"strategy": "EMA crossover",
"price": 67500.0
}
Diperlukan: secret, symbol, direction (long|short). Opsional: source, timeframe, strategy, price.
Personalisasi
GET /preferences
Mengembalikan pengaturan personalisasi saat ini termasuk parameter perdagangan default, profil risiko, watchlist, dan preferensi notifikasi.
Perbarui preferensi dengan mengirim badan JSON dengan subset dari field di bawah. Field yang tidak disertakan mempertahankan nilai saat ini.
Field Preferensi
| Field | Tipe | Deskripsi |
|---|---|---|
| default_trade_size_usd | float | Ukuran posisi default dalam USD untuk perhitungan Kelly dan smart-stop |
| risk_tolerance | string | conservative, moderate, atau aggressive |
| default_risk_pct | float | Risiko default per perdagangan sebagai % dari akun. Digunakan oleh /smart-stop ketika risk_pct dihilangkan |
| watchlist | array | Daftar terurut simbol aset, misalnya ["BTC","ETH","SOL"] |
| notification_email | string | Alamat email untuk pengiriman alert |
| timezone | string | String IANA timezone, misalnya America/New_York |
"default_trade_size_usd": 5000,
"risk_tolerance": "moderate",
"default_risk_pct": 1.5,
"watchlist": ["BTC", "ETH", "SOL"]
}
GET /watchlist
Mengembalikan snapshot status konfirmasi dan metrik risiko utama untuk semua simbol dalam watchlist yang Anda konfigurasi. Memberikan gambaran multi-aset tanpa perlu memanggil /confirm secara terpisah untuk setiap simbol.
Contoh Respons
"ts": 1710940821,
"watchlist": [
{
"symbol": "BTC",
"confidence": "HIGH",
"action": "CONFIRM",
"regime": "accumulation",
"cascade_risk": "LOW"
},
{
"symbol": "ETH",
"confidence": "MEDIUM",
"action": "REDUCE",
"regime": "late_cycle_divergence",
"cascade_risk": "HIGH"
},
{
"symbol": "SOL",
"confidence": "HIGH",
"action": "CONFIRM",
"regime": "breakout",
"cascade_risk": "MEDIUM"
}
]
}
Streaming Real-Time (Live Swaps)
Stream DEX swaps ≥ $500 terdeteksi secara real-time dari node BSC dan Avalanche kami. Dua transport tersedia: aliran Server-Sent Events (SSE) publik untuk klien gratis/browser, dan firehose WebSocket latensi rendah untuk tier berbayar. Acara disiarkan dalam hitungan detik setelah dimasukkan dalam blok.
Aliran SSE Publik (Gratis)
Tidak diperlukan autentikasi. Dukungan asli EventSource di semua browser modern. Server mengirimkan swap acara dan heartbeat berkala untuk menjaga koneksi tetap hidup.
es.addEventListener("swap", e => {
const swap = JSON.parse(e.data);
console.log(swap.chain, swap.pair, swap.amount_usd);
});
WebSocket Firehose (Berbayar)
Autentikasi (disarankan): jangan pernah menaruh kunci jangka panjang Anda di URL — itu akan dicatat oleh proxy dan disimpan dalam riwayat browser. Sebagai gantinya, POST kunci Anda ke /v1/ws/ticket menggunakan header X-API-Key yang aman, lalu buka soket dengan tiket sekali pakai yang dikembalikan ticket (valid ~60s, digunakan sekali). Klien sisi server yang dapat mengatur header dapat langsung meneruskan X-API-Key pada handshake. Kunci tier gratis menerima 402 payment_required respons. Sebuah hello frame dikirim saat terhubung dengan tier Anda dan ambang siaran.
const r = await fetch("https://api.smartmoneyapi.com/v1/ws/ticket", {
method: "POST", headers: { "X-API-Key": "sm_xxx" }
});
const { ticket } = await r.json();
// 2. Buka soket dengan tiket sekali pakai
const ws = new WebSocket(`wss://api.smartmoneyapi.com/v1/ws/live-swaps?ticket=${ticket}`);
ws.onmessage = e => {
const swap = JSON.parse(e.data);
if (swap.type === "swap") console.log(swap);
};
Autentikasi WebSocket (tiket)
Mengapa: jangan pernah menaruh kunci API Anda di URL WebSocket — string kueri dicatat oleh proxy, load balancer, dan disimpan dalam riwayat browser. Sebagai gantinya, tukar kunci Anda dengan tiket jangka pendek, sekali pakai tiket melalui POST terautentikasi normal, lalu terhubung dengan tiket tersebut.
Alur: POST ke /v1/ws/ticket dengan header X-API-Key Anda → terima { "ticket": "…", "expires_in": 60 }. Kemudian buka wss://api.smartmoneyapi.com/v1/ws/live-swaps?ticket=<ticket>. Tiket ini sekali pakai dan kedaluwarsa dalam ~60 detik. Klien sisi server yang dapat mengatur header permintaan dapat langsung meneruskan X-API-Key langsung pada jabat tangan WebSocket — tidak perlu tiket.
Mencetak tiket sekali pakai untuk jabat tangan WebSocket yang terautentikasi. Autentikasi dengan X-API-Key header (kunci Anda tidak pernah meninggalkan header permintaan). Tiket yang dikembalikan dapat ditukarkan sekali pada /v1/ws/live-swaps sebelum kedaluwarsa.
"https://api.smartmoneyapi.com/v1/ws/ticket"
Contoh Respons
"ticket": "wst_9f3c1a8e4b2d…",
"expires_in": 60
}
Kolom Respons
| Kolom | Type | Deskripsi |
|---|---|---|
| tiket | string | Token sekali pakai untuk ditambahkan sebagai ?ticket= pada URL WebSocket. Ditebus sekali, lalu dinonaktifkan. |
| expires_in | number | Detik hingga tiket kedaluwarsa (~60). Buat tiket baru setiap kali mencoba koneksi. |
Catatan: autentikasi ?key= query-param lama tidak lagi diterima pada endpoint WebSocket karena alasan keamanan. Gunakan tiket (klien browser) atau X-API-Key header handshake (klien sisi server).
Snapshot REST
Mengembalikan N swap terakhir yang disiarkan dari buffer bergulir. Berguna untuk tampilan pertama di dashboard sebelum koneksi stream terbuka. Juga tersedia: /v1/live-swaps/status untuk statistik penyiar.
Skema Acara
| Field | Type | Deskripsi |
|---|---|---|
| chain | string | bsc atau avalanche |
| dex | string | Nama router (misalnya pancakeswap_v2, traderjoe) atau unknown_dex |
| swapper | string | Alamat 0x lengkap dari dompet yang melakukan swap |
| swapper_short | string | Bentuk singkatan untuk tampilan (contoh: 0xb300…028d) |
| swapper_url | string | Tautan langsung ke swapper di block explorer jaringan |
| tx_hash | string | Hash transaksi |
| explorer_url | string | Tautan langsung ke transaksi di BscScan/Snowtrace |
| token_in | string | Simbol token yang dijual (contoh: USDT) |
| token_out | string | Simbol token yang dibeli |
| amount_usd | number | Nilai USD dari swap (minimum: $500) |
| pair | string | Label pasangan yang diformat (contoh: USDT → USDC) |
| block | number | Nomor blok tempat swap ditambang |
| timestamp | number | Detik epoch Unix |
| significance | string | low / medium / high / critical berdasarkan ukuran USD |
| seq | number | Nomor urutan broadcast monotonik — gunakan untuk deteksi celah |
POST /alerts/conditions
Buat aturan alert khusus yang terpicu saat metrik tertentu melewati ambang batas. Alert dikirim melalui webhook, email, atau feed notifikasi dashboard sesuai preferensi Anda.
Mengembalikan daftar semua kondisi alert yang telah dikonfigurasi beserta ID, definisi, dan status terkini.
Menghapus permanen kondisi alert berdasarkan ID.
Mengembalikan peristiwa pemicu alert terkini beserta timestamp, kondisi yang cocok, dan nilai metrik saat pemicuan.
Buat Alert — Request Body
| Field | Type | Deskripsi |
|---|---|---|
| namerequired | string | Label yang mudah dibaca untuk peringatan ini (maks 64 karakter) |
| metricwajib | string | Metrik yang akan dipantau. Lihat tabel metrik yang tersedia di bawah. |
| symbolopsional | string | Konteks aset. Diperlukan untuk metrik yang berhubungan dengan simbol seperti funding_rate. |
| operatorwajib | string | Operator perbandingan: gt, lt, eq, crosses_above, crosses_below |
| thresholdwajib | float | Nilai numerik untuk membandingkan metrik |
| deliveryopsional | string | Saluran pengiriman, misalnya telegram (default) atau webhook |
| cooldown_minutesopsional | integer | Menit minimum antara pemicu ulang (default 60) |
Daftar metrik dan operator yang valid dapat dilihat di GET /v1/alerts/conditions sebagai available_metrics dan available_operators.
Metrik yang Tersedia
| Metrik | Deskripsi |
|---|---|
| funding_rate | Tingkat pendanaan saat ini untuk simbol (dalam desimal) |
| global_lsr | Rasio long/short global untuk simbol |
| long_pct | Persentase akun yang net long untuk simbol |
| top_trader_lsr | Rasio long/short top-trader untuk simbol |
| taker_ratio | Rasio beli/jual taker untuk simbol |
| mvrv | Rasio Nilai Pasar terhadap Nilai Realisasi (BTC/ETH) |
| sopr | Rasio Keuntungan Output yang Dihabiskan (BTC/ETH) |
| exchange_net_flow | Sinyal aliran bersih on-chain exchange |
| accumulation | Sinyal akumulasi on-chain |
| whale_long_pct | Persentase dompet whale yang dilacak memegang posisi long untuk simbol |
| whale_n_wallets | Jumlah dompet whale yang dilacak dengan posisi dalam simbol |
| composite_long | Skor komposit untuk simbol yang ditanyakan dalam arah long |
| composite_short | Skor komposit untuk simbol yang ditanyakan dalam arah short |
| funding_spread | Spread pendanaan lintas venue untuk simbol |
"name": "BTC funding rate spike",
"metric": "funding_rate",
"symbol": "BTC",
"operator": "gt",
"threshold": 0.05
}
GET /kelly
Mengembalikan rekomendasi ukuran posisi Kelly Criterion yang dikalibrasi ke kinerja sinyal historis untuk simbol, tingkat kepercayaan, dan arah yang diberikan. Mendasarkan ukuran posisi pada tingkat kemenangan empiris untuk menghindari over-leveraging.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolwajib | string | Simbol aset: BTC, ETH, atau SOL |
| confidenceopsional | string | Tingkat kepercayaan sinyal yang akan dimodelkan: HIGH, MEDIUM, atau LOW. Default: HIGH |
| directionopsional | string | Arah perdagangan: long atau short. Default: long |
| account_sizeopsional | float | Ukuran akun dalam USD untuk menghitung suggested_size_usd. Default: 10000 |
Contoh Respons
"symbol": "BTC",
"confidence": "HIGH",
"direction": "long",
"win_rate": 0.68,
"avg_reward_risk_ratio": 2.1,
"kelly_fraction": 0.36,
"half_kelly": 0.18,
"suggested_size_usd": 1800,
"samples": 142,
"note": "Half-Kelly direkomendasikan untuk trading langsung untuk memperhitungkan kesalahan estimasi."
}
GET /performance
Mengembalikan statistik akurasi historis untuk sinyal yang dikeluarkan oleh API, dibagi berdasarkan tingkat kepercayaan. Berguna untuk memahami keandalan sinyal sebelum mengalokasikan modal.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| symbolopsional | string | Filter berdasarkan aset. Abaikan untuk statistik agregat di semua simbol. |
| daysopsional | integer | Jendela look-back dalam hari. Default: 30 |
Contoh Respons
"symbol": "BTC",
"period_days": 30,
"by_confidence": {
"HIGH": { "win_rate": 0.71, "samples": 58, "avg_return_pct": 3.4 },
"MEDIUM": { "win_rate": 0.54, "samples": 84, "avg_return_pct": 1.2 }
}
}
Statistik & Sinyal
GET /v1/stats
Statistik kinerja jujur seluruh situs bersumber dari smart_money_confirm hasil panggilan berbeda. Mengembalikan tingkat kemenangan di tingkat kepercayaan TINGGI dan SEDANG, akurasi keseluruhan, faktor profit, dan rincian per simbol. Semua angka adalah in-sample selama jendela penilaian; konsultasikan calibration.html untuk konteks dan metodologi forward-holdout.
Contoh Respons
"high_winrate": 0.714,
"high_winrate_n": 14,
"medium_winrate": 0.530,
"medium_winrate_n": 34,
"overall_accuracy": 0.613,
"overall_accuracy_n": 48,
"profit_factor": 1.77,
"avg_win_pct": 4.2,
"winrate_horizon": "24h",
"winrate_basis": "distinct confirm calls, 24h resolved outcomes",
"winrate_by_symbol": {
"BTC": { "win_rate": 0.68, "n": 22 },
"ETH": { "win_rate": 0.55, "n": 18 },
"SOL": { "win_rate": 0.60, "n": 8 }
},
"forward_holdout": {
"win_rate": 0.59,
"high_win_rate": 0.70,
"high_n": 10,
"is_distinct_from_insample": false
}
}
forward_holdout adalah satu-satunya angka yang diperoleh dari data yang belum pernah dilihat oleh scorer — pantau pertumbuhannya dari waktu ke waktu. Lihat calibration.html untuk metodologi lengkap dan batas in-sample / forward-test.GET /v1/signals/performance
Pelacakan hasil sinyal di berbagai horizon resolusi (4h, 12h, 24h, 72h). Mengembalikan tingkat hit per horizon, jumlah sinyal total, dan rincian berdasarkan jenis sinyal.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| daysopsional | integer | Jendela look-back dalam hari. Default: 30 |
| signal_typeopsional | string | Filter berdasarkan jenis, misalnya smart_money_confirm atau regime_flip. Abaikan untuk semua jenis. |
| symbolopsional | string | Filter berdasarkan simbol aset, misalnya BTC. Abaikan untuk agregat di semua simbol. |
Contoh Respons
"signal_type": "smart_money_confirm",
"symbol": "BTC",
"days": 30,
"total_signals": 48,
horizons: {
4h: { hit_rate: 0.65, resolved: 46 },
12h: { hit_rate: 0.61, resolved: 44 },
24h: { hit_rate: 0.58, resolved: 40 },
72h: { hit_rate: 0.54, resolved: 32 }
},
type_breakdown: {
smart_money_confirm: { count: 35, hit_rate_24h: 0.61 },
regime_flip: { count: 13, hit_rate_24h: 0.47 }
}
}
GET /v1/signals/recent
Feed sinyal HIGH dan MEDIUM yang baru diterbitkan di semua simbol yang dipantau. Setiap entri mencakup jenis sinyal, tingkat kepercayaan, arah, dan status resolusi jika tersedia.
Contoh Respons
signals: [
{
id: 1042,
symbol: BTC,
direction: long,
signal_type: smart_money_confirm,
confidence: HIGH,
composite: 0.74,
ts: 1710940821,
resolved: true,
outcome_24h: win
}
],
count: 50
}
GET /v1/signals/{id}/outcome
Hasil resolusi untuk satu sinyal berdasarkan ID numeriknya. Mengembalikan hit/miss pada setiap horizon resolusi (4h, 12h, 24h, 72h) beserta harga pada saat sinyal dan saat resolusi.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
| idrequired | integer | Signal ID (path segment), e.g. /v1/signals/1042/outcome |
Contoh Respons
id: 1042,
symbol: BTC,
direction: long,
confidence: HIGH,
entry_price: 63200.0,
ts: 1710940821,
outcomes: {
4h: { result: win, price: 64100.0, pct: 1.41 },
12h: { result: win, price: 65200.0, pct: 3.16 },
24h: { result: win, price: 65800.0, pct: 4.11 },
72h: { result: pending, price: null, pct: null }
}
}
GET /v1/confirm-winrate
Breakdown win-rate sinyal konfirmasi untuk kunci API pengguna yang terautentikasi. Mengembalikan win-rate panggilan berbeda pada setiap tingkat kepercayaan, faktor profit, dan angka per simbol. Memerlukan header yang valid. X-API-Key header.
Contoh Permintaan
"https://api.smartmoneyapi.com/v1/confirm-winrate"
Contoh Respons
high_winrate: 0.714,
high_n: 14,
medium_winrate: 0.530,
medium_n: 34,
overall_accuracy: 0.613,
overall_n: 48,
profit_factor: 1.77,
winrate_horizon: 24h,
by_symbol: {
BTC: { win_rate: 0.68, n: 22 },
ETH: { win_rate: 0.55, n: 18 }
}
}
Shadow Gate
Sebuah ledger keputusan pribadi yang tidak dapat diubah dan hanya dapat ditambahkan. Kirimkan keputusan trading Anda sebelum atau setelah mengeksekusinya; sistem menghitung skor konfirmasi terhadap mesin Smart Money dan menambahkan baris permanen. Gunakan untuk membangun rekam jejak yang jujur dan memiliki timestamp seberapa baik sinyal API selaras dengan entri Anda — sepenuhnya independen dari pool tingkat kemenangan global. Respons tier Free dan Trader memiliki bidang bukti dihilangkan; Pro mengembalikan rincian lengkap. Penundaan tier berlaku untuk data tier Free.
Kirim keputusan. Idempoten pada Idempotency-Key header permintaan — mengirim ulang kunci yang sama mengembalikan baris yang ada tanpa membuat duplikat. Sistem segera memanggil mesin konfirmasi dan menambahkan hasilnya sebagai baris ledger yang tidak dapat diubah.
Request Body
| Field | Type | Description |
|---|---|---|
| symbolrequired | string | Simbol aset, misalnya BTC |
| siderequired | string | Arah trade: long atau short |
| strategy_idoptional | string | Label strategi yang ditentukan pemanggil (maks 64 karakter). Disimpan apa adanya untuk pengelompokan dan penyaringan. |
Example Request
-H "X-API-Key: sm_your_key" \
-H "Idempotency-Key: my-signal-20260701-001" \
-H "Content-Type: application/json" \
-d '{"symbol":"BTC","side":"long","strategy_id":"ema_crossover"}' \
"https://api.smartmoneyapi.com/v1/shadow-gate/decisions"
Example Response
"id": 318,
"symbol": "BTC",
"side": "long",
"strategy_id": "ema_crossover",
"decision": "CONFIRM",
"confidence": "HIGH",
"composite": 0.74,
"size_mult": 1.5,
"ts": 1710940821,
"resolved": false
}
factors / adjustments bidang bukti. Pro mengembalikan rincian konfirmasi lengkap. Penundaan tier berlaku untuk Free — baris ditulis segera tetapi skor konfirmasi mungkin mencerminkan data cache hingga 60 detik yang lalu.Daftar keputusan shadow-gate Anda sendiri, terbaru pertama. Terbatas pemilik — hanya keputusan yang dikirim oleh kunci API Anda yang dikembalikan.
Parameters
| Parameter | Type | Description |
|---|---|---|
| limitoptional | integer | Jumlah maksimum baris yang dikembalikan. Default: 50, maks: 200 |
| cursoroptional | string | Kursor paginasi buram dari next_cursor bidang respons sebelumnya. Abaikan untuk halaman pertama. |
Example Response
"decisions": [
{ "id": 318, "symbol": "BTC", "side": "long", "decision": "CONFIRM", "confidence": "HIGH", "composite": 0.74, "size_mult": 1.5, "ts": 1710940821, "resolved": false },
{ "id": 317, "symbol": "ETH", "side": short, keputusan: SKIP, keyakinan: LOW, komposit: -0.12, size_mult: 0.0, ts: 1710937000, terselesaikan: True }
],
jumlah: 2,
next_cursor: None
}
Keputusan tunggal berdasarkan ID, termasuk bukti konfirmasi lengkap untuk tier Pro. Respons tier Free dan Trader memiliki factors dan adjustments dihilangkan. Mengembalikan 403 jika keputusan tersebut milik kunci API yang berbeda.
Contoh Respons (Pro)
id: 318,
symbol: BTC,
side: long,
strategy_id: ema_crossover,
keputusan: CONFIRM,
keyakinan: HIGH,
komposit: 0.74,
size_mult: 1.5,
faktor: {
derivatives: { skor: 0.81, bobot: 0.40, terbobot: 0.324 },
onchain: { skor: 0.68, bobot: 0.35, terbobot: 0.238 },
whale: { skor: 0.73, bobot: 0.25, terbobot: 0.183 }
},
ts: 1710940821,
terselesaikan: False,
hasil: None
}
Selesaikan hasil keputusan secara manual. Panggil ini setelah menutup perdagangan untuk mencatat hasil akhir terhadap baris buku besar. Setelah terselesaikan, baris tersebut tidak dapat diubah lagi.
Badan Permintaan
| Field | Tipe | Deskripsi |
|---|---|---|
| hasilwajib | string | Hasil perdagangan: win atau loss |
| exit_priceopsional | float | Harga keluar untuk perdagangan. Disimpan sebagai referensi; digunakan untuk menghitung % P&L jika disediakan. |
| pnl_pctopsional | float | P&L terealisasi sebagai persentase dari ukuran posisi, misalnya 3.5 atau -1.2 |
Contoh Respons
id: 318,
terselesaikan: True,
hasil: win,
exit_price: 65800.0,
pnl_pct: 4.1,
resolved_at: 1711027200
}
Kode Error
| Status | Kode | Deskripsi |
|---|---|---|
| 400 | invalid_params | Parameter kueri tidak ada atau tidak valid |
| 401 | unauthorized | Kunci API tidak ada atau tidak valid |
| 403 | plan_restriction | Endpoint tidak tersedia dalam paket Anda saat ini |
| 429 | rate_limit_exceeded | Batas harian atau burst tercapai |
| 500 | internal_error | Error server — periksa /health untuk status sumber |
| 503 | data_stale | Sumber data tidak tersedia; dikembalikan dengan data terakhir yang diketahui |
Contoh Kode
Python
r = requests.get(
"https://api.smartmoneyapi.com/v1/confirm",
params={"symbol": "BTC", "direction": "long"},
headers={X-API-Key: sm_your_key}
)
data = r.json()
print(data["confidence"]) # HIGH / MEDIUM
print(data["size_mult"]) # 1.5 / 1.0
API_KEY = "sm_your_key"
BASE_URL = "https://api.smartmoneyapi.com/v1"
def confirm_trade(symbol, direction):
resp = requests.get(
f"{BASE_URL}/confirm",
params={"symbol": symbol, "direction": direction},
headers={"X-API-Key": API_KEY},
timeout=5
)
resp.raise_for_status()
return resp.json()
# Dalam loop trading Anda:
signal = confirm_trade("BTC", "long")
if signal["confidence"] not in ["HIGH", "MEDIUM"]:
print("Melewatkan — kepercayaan tidak cukup")
else:
size = base_size * signal["size_mult"]
place_order(symbol, direction, size)
JavaScript / Node.js
async function confirmTrade(symbol, direction) {
const params = new URLSearchParams({ symbol, direction });
const res = await fetch(
`https://api.smartmoneyapi.com/v1/confirm?${params}`,
{ headers: { 'X-API-Key': API_KEY } }
);
if (!res.ok) throw new Error(`API error: ${res.status}`);
return res.json();
}
// Penggunaan
confirmTrade('BTC', 'long')..then(data => {
console.log(data.confidence, data.size_mult);
});
cURL
curl -X GET \
-H "X-API-Key: sm_your_key" \
"https://api.smartmoneyapi.com/v1/confirm?symbol=BTC&direction=long"
# Dapatkan data whale
curl -X GET \
-H "X-API-Key: sm_your_key" \
"https://api.smartmoneyapi.com/v1/whales?symbol=BTC"
# Cek penggunaan
curl -X GET \
-H X-API-Key: sm_your_key \
https://api.smartmoneyapi.com/v1/usage
Integrasi Freqtrade
Tambahkan konfirmasi Smart Money ke strategi Freqtrade apa pun dengan mengganti confirm_trade_entry metode.
from freqtrade.strategy import IStrategy
class SmartMoneyStrategy(IStrategy):
SM_API_KEY = "sm_your_key"
SM_BASE = "https://api.smartmoneyapi.com/v1"
def confirm_trade_entry(self, pair, order_type,
amount, rate, time_in_force,
current_time, entry_tag, **kwargs):
symbol = pair.split("/")[0]
if symbol not in ["BTC", "ETH", "SOL"]:
return True # Lewati pemeriksaan untuk yang tidak didukung
try:
r = requests.get(
f"{self.SM_BASE}/confirm",
params={"symbol": symbol, "direction": "long"},
headers={"X-API-Key": self.SM_API_KEY},
timeout=3
).json()
return r.get("confidence") in ["HIGH", "MEDIUM"]
except:
return True # Buka gagal pada kesalahan API
CCXT + Smart Money
exchange = ccxt.bybit({
"apiKey": "YOUR_BYBIT_KEY",
"secret": "YOUR_BYBIT_SECRET"
})
SM_KEY = "sm_your_key"
def smart_trade(symbol, side, amount):
# Periksa konfirmasi terlebih dahulu
conf = requests.get(
"https://api.smartmoneyapi.com/v1/confirm",
params={"symbol": symbol, "direction": side},
headers={"X-API-Key": SM_KEY}
).json()
if conf["confidence"] not in ["HIGH", "MEDIUM"]:
print(f"Skipping {symbol} {side} — insufficient confidence.")
return None
adj_amount = amount * conf["size_mult"]
order = exchange.create_market_order(
f"{symbol}/USDT", side, adj_amount
)
print(f"Order placed: {adj_amount} {symbol} {side}")
return order
Periksa halaman status API untuk informasi kesehatan waktu nyata, atau gunakan formulir kontak kami.