Setup Guide
Two setup options — choose the one that fits your situation. If you get stuck, email support@xiznit-bot.com.
- ✓ No VPS needed
- ✓ No domain needed
- ✓ No $1,000 Tradovate deposit
- ✓ No $25/month API fees
- ✓ Single .exe — double-click to start
- ✓ Uses NinjaTrader 8 (FREE)
- ✓ Runs 24/7 without your PC
- ✓ Tradovate, IBKR, or Alpaca
- ⚠ Requires VPS (~$6/month)
- ⚠ Requires domain (~$12/year)
Download NinjaTrader 8 for FREE at ninjatrader.com. Install it and connect your prop firm account.
In NinjaTrader: Tools → Options → Automated Trading Interface → Check "AT Interface enabled".
After purchase, check your email for the download link. Double-click XiznitBot.exe and enter your license key when prompted. The bot starts automatically and opens your dashboard.
✓ NT8 bridge starts automatically
✓ Dashboard opens in your browser
✓ Ready to receive TradingView alerts
Go to Strategies → New Strategy. Enter your ticker (e.g. MNQ1!). Copy the webhook URL and paste it into your TradingView alert.
Create an alert on your strategy. Set the webhook URL to the one from your dashboard. Set the message to {{strategy.alert_message}}.
Create Your VPS Server
Your bot needs a server that runs 24/7. DigitalOcean offers a $6/month cloud server (called a Droplet) that's perfect for Xiznit Bot.
1.1 — Create a DigitalOcean Account
Go to digitalocean.com and sign up. You can use a credit card or PayPal.
1.2 — Create a Droplet
- Click Create in the top right → select Droplets
- Choose the region closest to you
- Under image, select Ubuntu 24.04 LTS
- Under size, choose Basic → $6/month (1GB RAM)
- Under authentication, choose Password and set a strong password
- Click Create Droplet and wait ~60 seconds
- Copy your Droplet's IP address — you'll need it in the next step
1.3 — Connect to Your Server
Click the Console button in DigitalOcean to open a browser terminal. Log in with username root and the password you set.
Tip: Save your IP address and root password somewhere safe. You'll need these every time you manage the bot.
Set Up Your Domain
Xiznit Bot requires a domain name — not just an IP address. This is necessary for secure HTTPS webhooks (required by TradingView) and for Tradovate OAuth to work. A domain costs about $10–15/year.
2.1 — Buy a Domain
Go to namecheap.com and register a domain. Something like mytradingbot.com works great. Once purchased, go to your domain's DNS settings.
2.2 — Point DNS to Your Server
In Namecheap, go to Domain List → Manage → Advanced DNS and add these records:
Replace YOUR_SERVER_IP with the IP address from Step 1. DNS changes take 5–30 minutes to propagate.
2.3 — Install Nginx and SSL on Your Server
In your server console, run these commands one at a time. Replace yourdomain.com with your actual domain.
Install Nginx:
Install Certbot for free SSL:
Create Nginx config for your domain:
Paste this into the editor (replace yourdomain.com with your domain):
Save with Ctrl+X → Y → Enter
Enable the config and restart Nginx:
Issue a free SSL certificate:
Certbot will ask for your email and agree to terms. It automatically configures HTTPS and sets up auto-renewal. When done, your domain will be live at https://yourdomain.com.
⚠ DNS must propagate first. If Certbot fails with "could not resolve domain," wait 15–30 minutes for DNS to fully propagate, then try again.
Once your domain is pointing to your server, open your DigitalOcean console and paste this single command:
The installer will ask you 3 questions:
- 1Your license key — from your purchase email
- 2Your domain name — the domain you pointed to this server
- 3A dashboard password — you choose this
Run the Installer
One command installs everything automatically — Docker, the bot, and all dependencies. Replace YOUR_LICENSE_KEY with the key from your purchase email.
Paste this into your server terminal
The installer will ask you 3 questions: your license key, your domain name, and a dashboard password. It then installs Docker, Nginx, SSL, and the bot automatically — all in about 2–5 minutes.
What you need ready: Your license key (from your purchase email), your domain name (already pointing to this server), and a password you want to use for your dashboard.
When complete, your bot is running 24/7 and will auto-update whenever new versions are released — no action needed on your end.
Verify it's running
You should see xiznit-bot listed with status Up.
Connect Your Broker
Choose your broker below. You only need to set up one. The config file is at /opt/xiznit-bot/config.env on your server.
Tradovate supports futures trading including MNQ, MES, MGC, and all major futures contracts. Perfect for prop firm accounts. Connection is handled via OAuth — no API keys required.
⚠ Tradovate Requires a Funded Account + API Subscription: Before OAuth will connect, Tradovate requires (1) a minimum $1,000 deposit into your Tradovate account, and (2) a $25/month API access fee. Both apply even if you only intend to trade demo/sim accounts through a prop firm — almost all prop firms (Topstep, Apex, MFF, Bulenox, and others) route through a Tradovate demo connection, so this funding and fee are required regardless of whether real money ever touches the Tradovate account itself. This is a Tradovate requirement, not Xiznit's, and it applies to any automated trading software using Tradovate's API — not just Xiznit Bot or Xiznit Copier. Budget for this before starting OAuth setup below, or your bot/copier will not be able to connect.
4.1 — Register Your Tradovate OAuth App
Xiznit Bot connects to Tradovate using OAuth. Before you can connect any accounts, you need to register your own Tradovate OAuth application using your domain from Step 2.
Complete Tradovate's API Access Agreement
- Log into your Tradovate account at trader.tradovate.com
- Go to Application Settings and find the API Access tab
- Complete the self-attestation form and sign the API Terms & Conditions — a one-time step required before any API or OAuth access
- Confirm your account has the $1,000 minimum deposit and active $25/month API subscription
Register Your OAuth Application
- In Application Settings → API Access, choose OAuth Registration
- Fill in the application form — App Name can be anything descriptive, e.g. "My Xiznit Bot"
- Set the Redirect URI to: https://yourdomain.com/oauth/callback (using your own domain from Step 2)
- Submit the form — Tradovate will issue you a Client ID (CID) and Client Secret
- Copy both immediately — the secret may only be shown once
This is a standard Tradovate developer process, available to any individual with a funded account. You do not need Xiznit's vendor/partner status to complete this — it's your own personal OAuth app.
4.2 — Set Broker in Config
Set these values:
Save with Ctrl+X → Y → Enter, then restart:
4.3 — Connect via OAuth
Open your bot dashboard in a browser:
- Go to the Accounts page in the dashboard
- Click Connect Tradovate Account
- Select your trading mode (Demo for prop firm sim, Live for real money)
- You'll be redirected to Tradovate to log in and authorize
- After authorizing, you'll be redirected back and your accounts will appear automatically
All your Tradovate accounts (including prop firm accounts) will be discovered automatically. Tokens refresh every 90 minutes in the background — no manual reconnection needed.
Alpaca supports stocks and crypto. Paper trading is completely free with no deposit required — perfect for testing your strategy before going live.
- Go to alpaca.markets and create a free account
- Click Paper Trading in the left sidebar
- Click Your API Keys on the right side
- Click Generate New Key
- Copy your API Key ID and Secret Key — the secret is only shown once
- For live trading, switch to Live Trading and repeat
Add Keys to Config
Save with Ctrl+X → Y → Enter, then restart:
Set Up TradingView Alerts
Configure TradingView to send your strategy signals directly to your bot. Each strategy you create in the bot dashboard gets its own unique webhook URL.
5.1 — Your Webhook URL Format
Every strategy has a unique webhook URL in this format:
Find your exact webhook URL on the Strategies page of your bot dashboard at https://yourdomain.com.
5.2 — Create a TradingView Alert
- Open TradingView and load your strategy on a chart
- Click the Alert button (clock icon) in the top toolbar
- Set the Condition to your strategy signal
- Under Actions, check Webhook URL
- Paste your webhook URL from the dashboard
- Under Message, paste the JSON payload (see examples below)
- Click Create
TradingView requires HTTPS for webhook URLs. This is why the domain + SSL setup in Step 2 is required — a raw IP address will not work.
5.3 — Accepted JSON Payloads
All payloads must be sent as valid JSON to your webhook URL. The bot accepts the following fields:
Entry — Buy / Long
Entry — Sell / Short
Exit — Take Profit / Stop Loss / Trail Stop
Partial TP Exit (TP1, TP2, TP3)
Flat / Close All
Accepted exit reasons: sl, tp, trail_stop, eod_flatten, blackout, weekend_gap, max_duration
Accepted signal field: You can use either "action" or "signal" as the field name
Accepted ticker field: You can use either "ticker" or "symbol" as the field name
💡 Use the 🔍 Validator in your dashboard sidebar to test any payload before going live.
5.4 — Exit Alert Payload
For TP or SL exits, use a separate alert with alert() function calls only:
Verify & Test
6.1 — Check Bot Health
Open a browser and go to:
You should see: {"status":"online","bot":"Xiznit-Trading-Bot"} — this confirms your bot is live.
6.2 — Access Your Dashboard
Open your full bot dashboard at:
From the dashboard you can manage accounts, create strategies, view trade logs, journal, and analytics.
6.3 — Send a Test Webhook
Replace yourdomain.com and your-strategy-name with your actual values:
6.4 — View Live Logs
JSON Field Reference
Only "ticker" and "action" are required. All other fields are optional depending on your strategy.
| Field | Type | Required | Description |
|---|---|---|---|
| "ticker" | string | YES | Trading symbol (e.g. MNQ1!, AAPL, BTCUSDT) |
| "action" | string | YES | Trade action: buy, sell, exit, update_sl |
| "price" | number | optional | Current price. Use {{close}} in TradingView. |
| "qty" | number | optional | Number of shares/contracts. |
| "sl" | number | optional | Stop loss price. Also used with update_sl action. |
| "tp1" | number | optional | Take profit 1 price level. |
| "tp1_qty" | number | optional | Contracts to close at TP1. |
| "tp2" | number | optional | Take profit 2 price level. |
| "tp2_qty" | number | optional | Contracts to close at TP2. |
| "tp3" | number | optional | Take profit 3 price level. |
| "tp3_qty" | number | optional | Contracts to close at TP3. |
| "tp" | string | optional | Exit TP level: "TP1", "TP2", or "TP3". Used with exit action. |
| "reason" | string | optional | Close reason: eod_flatten, sl, max_duration, weekend_gap, blackout |
| "strategy" | string | optional | Strategy name for logging. |
| "comment" | string | optional | Label logged but not acted on. |
| "interval" | string | optional | Timeframe label (e.g. "15m", "1h"). Logged only. |
Commands Reference
Troubleshooting
Bot won't start
Check your license key is correct in config.env. Run docker logs xiznit-bot to see the error message.
Dashboard asking for a password
The bot dashboard is password-protected. Your default dashboard password is xiznit2026. You can change this anytime in the Settings page of your dashboard. This password was not included in the original setup email — we apologize for the confusion.
Webhook fires but no order is placed
Use the 🔍 Validator tool in your bot dashboard sidebar to test your payload without placing real orders. This will show you exactly how the bot parses your signal and flag any issues. Common problems: missing ticker field, unrecognized action value, or tp sent as a dict instead of a string.
Exit signals not closing positions
Make sure your exit payload uses a recognized reason value: sl, tp, trail_stop, eod_flatten, blackout, weekend_gap, or max_duration. If your tp field is a JSON object like {"TP1": 23535.0} — this is now supported and will be normalized automatically.
SSL certificate failed
Your DNS likely hasn't propagated yet. Wait 15–30 minutes after updating your Namecheap DNS records, then run the Certbot command again.
Tradovate OAuth not connecting
Make sure your domain is live and HTTPS is working before attempting OAuth. Tradovate requires a valid HTTPS callback URL. Check that https://yourdomain.com/health loads successfully first. Also confirm your Tradovate account has the $1,000 minimum deposit and an active $25/month API subscription — without both, Tradovate will not authorize API/OAuth access even for demo accounts.
Orders not executing
Check your broker settings in config.env. Make sure TRADING_MODE matches your account type (demo for prop firm sim, live for real money). For Tradovate, verify your OAuth connection is active on the Accounts page.
TradingView alerts not firing
Confirm your webhook URL uses https:// — TradingView requires HTTPS. Check that the strategy name in the URL exactly matches the strategy name in your dashboard. Verify your JSON payload is valid using jsonlint.com.
Invalid license key error
Email support@xiznit-bot.com with your license key and order confirmation. We'll verify it within 24 hours.
Bot stopped unexpectedly
Run docker compose up -d to restart. The restart: always setting means this should happen automatically after server reboots.
Download the PDF Guide
Prefer a printable version? Download the complete setup guide as a PDF.
↓ Download PDF Guide