Help
exchange keys · statement exports · faq
Everything you need to get trades in and read what comes out. Stuck anyway? Write to us, a human answers.
Connect an exchange (read-only key)
We store the key encrypted and check with the exchange that it cannot trade or withdraw. Restrict it to our IP 94.130.231.65 and it is useless anywhere else.
Bybit — create a read-only API key~3 min
Before you start
- A Bybit account with 2FA (Google Authenticator) switched on — Bybit will not let you create a key without it.
- Our server IP, to paste in step 7:
94.130.231.65.
- Open bybit.com in a browser and log in. On a phone use the website, not the app.
- Top right, click your profile picture, then click API. You land on API Management.
- Click the yellow button Create New Key. Choose System-generated API Keys. The page Create New Key opens.
- API Key Usage: select API Transaction (not Connect to Third-Party Applications).
- Name for the API key: type rawpnl.
- API Key Permissions: select Read-Only.
- Right below, select 'Only IPs with permissions granted are allowed to access the OpenAPI' and paste
94.130.231.65in the grey box under it. Do not pick No IP restriction — Bybit deletes such keys after 3 months. - In the permissions table, row Unified Trading → type Contract: tick Orders and Positions. Row USDC Contracts: tick USDC Derivatives Trading if you trade USDC-margined contracts (it cannot hurt). Row SPOT: tick Trade only if you trade spot — under Read-Only it only lets us read your spot order history.
- Leave everything else empty: Earn, Fiat trading, Assets (Wallet, Exchange), Others. The Unified Trading box on the left will show as half-ticked — that is fine.
- Scroll down and click Submit. Enter your 2FA code.
- Bybit shows two long strings: API Key and Secret Key. Copy both now — the secret is shown only once. If you lose it, delete the key and make a new one.
- Come back to rawpnl → Connections. Exchange: Bybit. Market: Perpetual futures (USDT) for derivatives, Spot for spot. Paste the key and the secret, click Verify & connect.
- rawpnl asks Bybit what the key can do. If it can trade or withdraw, we refuse it and tell you which box to untick.
Common mistakes
- Choosing Read-Write instead of Read-Only — we refuse the key.
- Choosing No IP restriction — the key works, but Bybit expires it after 3 months and you have to redo this.
- Forgetting Orders and Positions under Contract — the key connects but nothing imports.
- Copying the key with a space at the end — paste it again.
Binance — create a read-only API key~4 min
Before you start
- A verified Binance account with 2FA switched on.
- Our server IP for step 6:
94.130.231.65. On Binance this is mandatory for futures keys.
- Open binance.com and log in. Top right, click your profile icon, then Account, then API Management.
- Click Create API. Choose System generated. Click Next.
- Label: type rawpnl. Click Next. Complete the security verification (email + 2FA).
- Your new key appears. Click Edit restrictions on the right.
- Keep Enable Reading ticked. Make sure Enable Spot & Margin Trading is NOT ticked and Enable Withdrawals is NOT ticked.
- IP access restrictions: choose Restrict access to trusted IPs only (Recommended), paste
94.130.231.65, click Confirm. - Only if you trade USDT-M futures: tick Enable Futures. Binance cannot make a futures key read-only, so the IP restriction from step 6 is what protects you — we refuse futures keys without it.
- Click Save. Complete the verification again.
- Copy API Key and Secret Key. The secret is shown only once.
- Come back to rawpnl → Connections. Exchange: Binance. Market: Perpetual futures (USDT) or Spot. For Spot also type the symbols you traded, e.g. BTC/USDT, ETH/USDT — Binance only lets us read spot history one symbol at a time. Click Verify & connect.
Common mistakes
- Leaving Enable Spot & Margin Trading ticked — we refuse the key.
- Skipping the IP restriction on a futures key — we refuse the key.
- Spot without a symbol list — nothing imports; add the symbols.
OKX — create a read-only API key~3 min
Before you start
- An OKX account with 2FA switched on.
- Our server IP for step 8:
94.130.231.65. - A passphrase you invent yourself (8–32 characters, with a lowercase, an uppercase, a number and a special character) — you will paste it into rawpnl together with the key.
- Open okx.com and log in. Top right, click your profile picture. In the account menu bar click API and connections (the page is okx.com/account/my-api). Leave Account: Main account as it is.
- Click the green button Create API key. The page Create API keys opens.
- Basic info → API key name: type rawpnl.
- Account: leave Main account.
- Used for: keep API trading selected (not Linking third-party app).
- Permissions: Read is already ticked and greyed out — that is all we need. Leave Withdraw, Earn, Transfer and Trade EMPTY.
- Security → Trusted IP addresses: switch the toggle ON.
- In the IP box that appears, paste
94.130.231.65. - Passphrase: invent one that meets the 5 rules shown under the box (8–32 characters, lowercase, uppercase, number, special character). Write it down: OKX never shows it again and rawpnl needs it.
- On the left, in API keys drafts, click Submit all.
- On the new key, click Show credentials and complete the security verification (2FA). OKX then shows API key and Secret key. Copy both now — the secret is shown only once. Your passphrase is the one you typed in step 9.
- Come back to rawpnl → Connections. Exchange: OKX. Market: Perpetual futures or Spot. Paste the key, the secret and your passphrase. Click Verify & connect.
- rawpnl asks OKX what the key may do. If it can trade or withdraw, we refuse it and tell you which box to untick.
Common mistakes
- Forgetting the passphrase — OKX cannot recover it; delete the key and make a new one.
- Ticking Trade — we refuse the key.
- OKX Europe and OKX US run separate API servers — we detect yours automatically, nothing to choose.
- Not switching Trusted IP addresses on — the key still works, but a leaked key would work for anyone.
- OKX only serves 3 months of trade history through its API; older trades need a statement import.
Kraken — create a read-only API key~3 min
Before you start
- A Kraken account verified at least to Intermediate (buletin + selfie, a few minutes).
- Our server IP for step 6:
94.130.231.65.
- Open kraken.com (or pro.kraken.com) and log in. Top right, click the profile icon, then Settings, then Connections and API. (Direct link: kraken.com/u/security/api.)
- Click Create API key. Name: type rawpnl.
- Permissions → Funds permissions: leave everything EMPTY, including Query.
- Orders and trades: tick Query open orders & trades and Query closed orders & trades. Leave Create & modify orders and Cancel & close orders EMPTY.
- Data: tick Query ledger entries (optional, helps with fees). Leave Query affiliate participants and Export data empty.
- IP address restriction: switch On and paste
94.130.231.65in the box that appears. Leave WebSocket interface, Key expiration, Query start date, Query end date and Custom nonce window Off. - Click Generate key. Kraken shows API key and Private key — copy both now.
- Come back to rawpnl → Connections. Exchange: Kraken, Market: Spot. Paste the key and the private key, click Verify & connect.
- rawpnl checks the key cannot create orders (it asks Kraken to VALIDATE an order without placing one; a read-only key is refused, which is what we want).
Common mistakes
- Ticking Create & modify orders — we refuse the key.
- Kraken Futures is a separate platform with its own keys — choose Market: Perpetual futures only for a Kraken Futures key.
- Landing on Kraken Prop from a referral link — that is a paid evaluation product, not needed; pick Exchange trading.
KuCoin — create a read-only API key~3 min
Before you start
- A KuCoin account with 2FA switched on.
- Our server IP for step 7:
94.130.231.65. - A passphrase you invent yourself — you will paste it into rawpnl together with the key.
- Open kucoin.com and log in. Top right, click your profile picture, then API Management.
- Click Create API. The page Create API opens; keep the tab API-Based Trading (not Link Third-Party Apps).
- API Name: type rawpnl.
- API Passphrase: invent one. Write it down — KuCoin never shows it again and rawpnl needs it. (If you lose it, you create a new key.)
- API Restrictions: General is already selected — KuCoin describes it as read-only access to account information, statements and order details. That is all we need.
- Leave every other restriction EMPTY: Spot Trading, Margin Trading, KuCoin Earn, Futures Trading, Withdrawal, Unified Account, Allow Flexible Transfers.
- IP Restrictions: select Restrict to Trusted IPs Only (Recommended), not Unrestricted. In the box that appears, paste
94.130.231.65and click Add. - Click Next at the bottom and complete the security verification (email code + 2FA). KuCoin shows API Key and API Secret — copy both now, the secret is shown only once.
- Come back to rawpnl → Connections. Exchange: KuCoin, Market: Perpetual futures or Spot. Paste the key, the secret and your passphrase. Click Verify & connect.
- rawpnl asks KuCoin what the key may do. If it can trade or withdraw, we refuse it and tell you which restriction to remove.
Common mistakes
- Selecting Spot Trading or Futures Trading — we refuse the key.
- Forgetting the passphrase — delete the key and make a new one.
- Futures and spot are separate connections: add the same key twice with a different Market.
MEXC — create a read-only API key~3 min
Before you start
- A MEXC account with 2FA switched on.
- Our server IP for step 8:
94.130.231.65. On MEXC this matters most: MEXC does not let us verify what a key may do, so the IP link is your protection — and keys without an IP expire after 90 days. - The list of symbols you traded (MEXC only returns trades per symbol).
- Open mexc.com and log in. Top right, click your profile picture, then API Management.
- Click Create New API Key. The form Manage API / Create New API Key opens with three blocks: Spot, Futures, P2P.
- Spot → Account: tick View Account Details. Leave Edit Account Info empty.
- Spot → Trade: tick View Order Details. Leave Trade EMPTY.
- Spot → Withdraw and Transfer: leave all four boxes empty (View Deposit/Withdrawal Details, Withdraw, Read transfer information, Transfer).
- Futures → Account: tick View Account Details. Futures → Trade: tick View Order Details, leave Order Placing EMPTY.
- P2P: leave all three boxes empty.
- Notes (Required): type rawpnl. Link IP Address: paste
94.130.231.65. - API Usage: keep Open API selected. Tick I have read and agree to the Risk Reminders for API Users. Click Create and complete the security verification.
- MEXC shows Access Key and Secret Key. Copy both now — the secret is shown only once.
- Come back to rawpnl → Connections. Exchange: MEXC, Market: Perpetual futures or Spot. In Symbols type the pairs you traded, e.g. BTC/USDT, ETH/USDT. Paste the key and the secret, click Verify & connect.
Common mistakes
- Ticking Trade (Spot) or Order Placing (Futures) — that makes a trading key; we cannot detect it on MEXC, so check twice.
- Skipping the symbols list — nothing imports, MEXC only serves trades per symbol.
- Skipping the IP link — the key expires after 90 days and a leaked key would work for anyone.
Hyperliquid — just your wallet address~1 min
Before you start
- The address of the wallet you trade with on Hyperliquid (0x…). No key, no secret: Hyperliquid data is public on-chain.
- Open app.hyperliquid.xyz and connect your wallet as usual.
- Top right, click your address (or the wallet icon) and choose Copy address. It looks like 0x followed by 40 characters.
- Come back to rawpnl → Connections. Exchange: Hyperliquid (wallet address). Market: Perpetual futures (or Spot). Paste the address in the Wallet address box. Click Verify & connect.
- That is all. rawpnl reads your fills from Hyperliquid's public API — it can never do anything with your wallet.
Common mistakes
- Pasting an exchange deposit address or a sub-account's address by mistake — use the address you trade from.
- Hyperliquid serves the 10 000 most recent fills; very active accounts get the newest ones.
Import a statement (no key needed)
MetaTrader, cTrader or any broker with a CSV export. Format detected automatically; profit, commission and swap taken exactly as the broker reports them.
MetaTrader 5 — export your history~2 min
Before you start
- MetaTrader 5 for Windows, or the MT5 web terminal in a browser, logged in to the account you want to journal. The Mac app and the phone app cannot export — use the web terminal (next guide) or your broker's client area instead.
- In MT5, look at the bottom panel called Toolbox. If you do not see it, press Ctrl+T.
- Click the History tab of the Toolbox.
- Right-click anywhere inside the list. Click Custom Period (or All History if you see it).
- Pick the range: All history is best the first time. Click OK.
- Right-click again inside the list → Report → Open HTML. (Some versions say Save as Report.)
- A report opens in your browser. Press Ctrl+S (Cmd+S on Mac) and save it as an .html file, or use the file MT5 already saved.
- In rawpnl → Import, drag the .html file onto the box. Leave Times in the file are in on Auto — MetaTrader reports are in your broker's time and we convert them.
Common mistakes
- Exporting the Deals or Orders tab as CSV — use the HTML report, it has everything.
- Choosing a short period — you can always re-import; only new trades are added.
MetaTrader 5 on a Mac or phone — use the web terminal~3 min
Before you start
- Your MT5 login, password and server name (in the Mac/phone app: Accounts).
- The Mac app and the phone app have no export. Open the MT5 web terminal instead: your brokers Web Terminal' link, or trade.mql5.com/trade.
- Log in with the same Login, Password and Server as in the app.
- At the bottom, the Toolbox panel. If it is hidden, menu View → Toolbox. Click the History tab.
- Right-click inside the list → choose All History (or a custom period).
- Right-click again → Export (some brokers label it Report). Pick HTML if offered, otherwise CSV.
- In rawpnl → Import, drag the downloaded file onto the box. Leave Times in the file are in on Auto.
Common mistakes
- Trying to export from the Mac or iPhone app — the History tab there only displays; it has no export.
- Exporting a short period — you can always re-import; only new trades are added.
FTMO — export your Trading Journal~2 min
Before you start
- Your FTMO Client Area login. Works for challenge, verification and funded accounts.
- Log in to the FTMO Client Area (ftmo.com → Client Area).
- Left menu: Accounts Overview. Under the account you want, click MetriX.
- Scroll down to the section Trading Journal.
- On the right, click the blue Export button. If it has a dropdown, choose CSV.
- In rawpnl → Import, drag the downloaded .csv onto the box. We recognise FTMO's columns (Ticket, Open, Type, Volume, Symbol, Price, Close, Commissions, Swap, Profit) and their MT5 server time automatically.
Common mistakes
- Exporting from the MT5 app instead — the Client Area journal is the easy way for FTMO.
- The Excel option also works, but save it as CSV first.
MetaTrader 4 — export your statement~2 min
Before you start
- MetaTrader 4 on your computer, logged in.
- In MT4, open the bottom panel Terminal (press Ctrl+T if hidden).
- Click the Account History tab.
- Right-click inside the list → All History.
- Right-click again → Save as Detailed Report. Choose where to save the .htm file.
- In rawpnl → Import, drag the .htm file onto the box. Keep Auto for the time zone.
Common mistakes
- Save as Report (not Detailed) also works, but Detailed includes commissions and swaps — prefer it.
cTrader — export your history~2 min
Before you start
- cTrader desktop or web, logged in.
- At the bottom of cTrader, click the History tab.
- Set the date range with the calendar at the top of the tab.
- Click the small export icon (arrow) on the right of the tab → Export to CSV (or Export to Excel).
- In rawpnl → Import, drag the .csv file onto the box. Columns like Position ID, Symbol, Direction, Volume, Opening Time, Entry Price, Closing Time, Closing Price, Commission, Swap, Net are recognised automatically.
Common mistakes
- Exporting Positions (open) instead of History (closed) — only closed trades can be journaled.
Any other broker — a CSV with one row per trade~5 min
Before you start
- An export of your CLOSED trades from the platform, or a spreadsheet you fill in.
- Export closed trades as CSV. One row = one trade.
- Make sure these columns exist (names can differ, we match common ones): symbol, type or side (buy/sell), open time, close time, open price, close price, volume, profit. Optional: ticket/id, commission, swap.
- In rawpnl → Import, drag the .csv onto the box. If a column is missing we tell you exactly which one.
Common mistakes
- Dates without a year, or two different date formats in one file — pick one format.
- Profit in a currency column with the symbol inside (e.g. $12.30) — fine, we strip symbols.
How far back each exchange lets us read
The exchange API sets the limit, not us. Set "Import history" on the connection up to this number; after that, new trades sync on their own every few minutes. Older history than the limit can still come in through a statement or CSV import.
| Exchange | Max history via API | Then |
|---|---|---|
| Bybit | 2 years | automatic sync |
| Binance | 2 years | automatic sync |
| OKX | 90 days | automatic sync · beta |
| Kraken | 2 years | automatic sync · beta |
| KuCoin | 1 year | automatic sync · beta |
| MEXC | 90 days | automatic sync · beta |
| Hyperliquid (wallet address) | 2 years | automatic sync |
How every number is computed
- A trade
- One round trip on one symbol: from the fill that takes the position from flat to open, to the fill that brings it back to flat. Partial entries and exits are merged into that one trade (entry and exit are size-weighted averages). Hedged positions on the same symbol are followed per side.
- Net PnL
- Realised profit from the exchange, minus every fee on every fill, minus funding paid (plus funding received) while the position was open. What actually changed in your balance, nothing else.
- PnL %
- Net PnL divided by the position's notional at entry (entry price × size). Leverage does not change it: it measures the move you captured, not the margin you posted.
- Win rate
- Winning trades divided by closed trades. A trade is a win only if net PnL is above zero; break-even and fee-only losses count as losses.
- Profit factor
- Sum of all winning trades' net PnL divided by the absolute sum of all losing trades' net PnL. Above 1 means the wins pay for the losses.
- Expectancy (R)
- Average R multiple across trades that have a stop recorded. R = net PnL divided by the amount you would have lost at the stop. Shown as a dash until you record stops.
- Average trade
- Net PnL divided by the number of closed trades.
- Max drawdown
- The largest fall of the equity curve from a peak to the following trough, in money, on the closed-trade curve ordered by close time.
- Daily calendar
- Trades are assigned to the day they closed, in your time zone. Colour depth is that day's net PnL relative to your biggest day.
- Hour × weekday
- Keyed on the time the trade was opened, in your time zone; each cell shows trades, net PnL and win rate.
- Fee drag
- Fees plus funding as a share of gross profit. Above 30 % usually means the trades are too small or too frequent for the venue.
- Streaks
- Consecutive wins or losses by close time, across all symbols.
Reading the statement
- Why is my win rate lower than I thought?
- Break-even trades count as losses and fees are subtracted. Most journals flatter you here; we do not.
- What is an orphan close?
- A closing fill whose opening fill happened before the import window. It is shown, flagged and excluded from every statistic. Increase the history range on the connection to capture the opening fills.
- Where does the R multiple come from?
- From the stop you record on a trade (one field). Without a stop, distributions fall back to net PnL.
- My hours look wrong.
- Times are shown in your time zone (Account → Time zone). Statement imports also carry the broker's own zone; MetaTrader reports are usually GMT+2/+3.
- Can I share my results?
- Account → Public track record. Amounts hidden unless you choose otherwise; sources labelled exchange-verified or uploaded.
- How do I delete everything?
- Account → Delete account. Immediate and irreversible; export first if you want a copy.