ALERTFILL — GUIDES & HOW-TOS  ·  ALERTFILL — GUIDES & HOW-TOS  · 
// HOW-TO

AlertFill setup

TradingView alert → order in NinjaTrader, Quantower or MetaTrader 5, in about a second. Setup takes ten minutes; run it on SIM first.

What AlertFill is

You already have alerts on TradingView — a strategy, an indicator, a price level. AlertFill turns those alerts into real orders in NinjaTrader, Quantower or MetaTrader 5. The alert fires, TradingView posts it to your personal AlertFill webhook, and the Tradeaholiks relay pushes it straight down a live connection to a small receiver running inside your platform — which places the order, stop and target attached. No polling, no browser extension, no PC-to-PC networking.

Two safety rules are built in. If your platform is offline when an alert fires, the order queues and is delivered the moment the receiver reconnects — unless it is older than 30 seconds, in which case it is discarded and logged. A stale entry signal never fires into a market that has moved on. Second: everything is visible — every alert shows up in the receiver's activity log and on your account page.

What you'll need

NinjaTrader 8, Quantower or MetaTrader 5 on Windows — one licence covers all three, and you can run them at the same time; a paid TradingView plan (webhook alerts unlock at their Essential tier and up); and an AlertFill key — free 7-day trial or full licence, both on your account page.

Before you start: log in at tradeaholiks.com/account and open the AlertFill tab. No licence yet? Press Start my free 7-day trial — full product, no card. Everything you'll paste below has a Copy button on that tab.

Step 1 — pick your platform and install AlertFill

Where should your orders go? Pick your platform — the install steps below, and the symbols and ready-to-paste alerts in Step 2, switch to match.

Running more than one? Install each — they share one key and every one of them receives every alert. Pick each platform in turn for its steps.

Install the receiver in NinjaTrader

1.Download TAH_AlertFill.zip from your account page's AlertFill tab (the download button under your key). Don't unzip it.

2.In NinjaTrader: Tools → Import → NinjaScript Add-On... and pick the zip. Restart NinjaTrader.

3.Open Control Center → New → TAH AlertFill. The AlertFill window opens.

4.On your account page's AlertFill tab, click Copy next to Your AlertFill key, and paste it into the window's key field.

5.Pick your account from the dropdown — it lists the accounts currently connected in NinjaTrader. Start with a SIM account.

6.Click Start. The status light goes green and your account page flips to RECEIVER CONNECTED. Tick Start automatically when NinjaTrader opens once you're happy with it.

Install the panel in Quantower

1.Download TAH_AlertFill_QT.zip from your account page's AlertFill tab and unzip it. You'll get a folder called TAH_AlertFill_QT.

2.Close Quantower completely. This matters: Quantower keeps a plugin loaded until it restarts, so installing while it's open appears to work and does nothing.

3.Copy that whole folder into your Quantower folder, under Settings\Scripts\plug-ins\ — note the hyphen in plug-ins. Create the folder if it isn't there. You should end up with ...\Settings\Scripts\plug-ins\TAH_AlertFill_QT\TAH_AlertFill_QT.dll.

4.Start Quantower and connect to your broker. Click the Quantower logo (top left) → Trading → TAH AlertFill.

5.Pick your account in the dropdown, then press ENABLE ACCOUNT. Nothing will trade until you do — it's the safety catch, and it's remembered per account. Check the balance it logs is the account you meant. Start with a demo account.

6.Paste your key and press START. The dot goes green and your account page flips to RECEIVER CONNECTED.

START is remembered. If it was running when you closed Quantower, it's running when you open it — automation you have to re-arm every morning isn't automation. What protects you is the per-account permission, which no restart can grant on your behalf.

What's different on Quantower

•No ATM templates — Quantower doesn't have them and doesn't need them: the stop and target attach to the order itself. An atm= in your alert is ignored, and noted in the log so you know.

•Symbols sort themselves out. MNQ is enough — the front contract is worked out for you. Some data feeds rename the big contracts (on CQG the E-mini Nasdaq is ENQ, not NQ); that's handled. If a symbol won't resolve, open DIAGNOSTICS → LIST ROOTS to see what your feed calls it.

•Everything else is identical — same key, same webhook URL, same alert syntax in Step 2.

Install the Expert Advisor in MetaTrader 5

1.Download TAH_AlertFill_MT5.zip from your account page's AlertFill tab and unzip it. You'll get AlertFill.mq5.

2.In MetaTrader 5: File → Open Data Folder, go into MQL5\Experts, and drop AlertFill.mq5 in there.

3.Tools → Options → Expert Advisors tab. Tick Allow WebRequest for listed URL and add this address exactly: https://hooks.tradeaholiks.com

4.Press F4 to open MetaEditor, find AlertFill under Experts, open it and press F7 to compile. You want 0 errors.

5.Back in MetaTrader, drag AlertFill from the Navigator onto one chart — any symbol, any timeframe. It handles every symbol; a second copy would fill every alert twice.

6.On the Common tab tick Allow Algo Trading. On the Inputs tab paste your key, and leave Demo only set to true until you've watched it work. Press OK, then check the Algo Trading button in the toolbar is green.

The panel on the chart shows ● CONNECTED within a couple of seconds, and your account page flips to RECEIVER CONNECTED.

The WebRequest line (step 3) is not optional. MetaTrader blocks all outbound network access until that address is on the list, and the socket the EA uses needs the same entry as WebRequest. Skip it and the EA looks like it has a dead internet connection rather than a permissions problem — the log will show error 5272.

What's different on MetaTrader 5

•q= is in lots, not contracts. q=0.01 is a micro lot. Sending q=1 out of NinjaTrader habit is a full standard lot — which is why Max lots is a hard ceiling in the inputs that no alert can talk its way past.

•A tick is not a pip. On 5-digit pricing one tick is 0.00001, so sl=200ticks is a 20 pip stop. Multiply your pips by 10.

•Broker symbol names. Most brokers add a suffix — EURUSD.r, EURUSD.a, EURUSDm. Put just the suffix (e.g. .r) in the Broker symbol suffix input, with no quotes, and keep writing plain EURUSD in your alerts. For names that don't follow a pattern use the overrides box: GOLD=XAUUSD,US100=NAS100.

•No ATM templates — MetaTrader has no equivalent. The stop and target attach to the position itself. An atm= in your alert is ignored and noted in the log.

•Hedging and netting accounts both work. On a hedging account a second buy opens a second position; on a netting account the existing one grows. Both are correct — the EA says which kind it's on in its first log line.

•Position sizing can be fixed lots, a % of equity, or a fixed cash risk. The two risk modes need a stop in the alert to size against; without one the EA falls back to fixed lots and says so.

•Everything else is identical — same key, same webhook URL, same alert syntax in Step 2.

Step 2 — write your alert message

Every message follows one formula — an action, a symbol, then any options, all on one line separated by spaces:

action  symbol  [options in any order]

The two required parts

FieldWhat you can type
actionREQUIREDThe first word of the message. buy or long to go long · sell or short to go short · close, flat, flatten or exit to get out (add q= for a partial close) · update or modify to move the stop/target on an open position · reverse or flip to close and enter the opposite way.
symbolREQUIRED*The instrument, written the way your platform expects it — see Symbols for your platform just below. *A bare flatten with no symbol closes everything.

Symbols, options and ready-to-paste alerts — NinjaTrader

All optional, any order. Always name=value with no spaces around the =. This shows the platform you picked in Step 1 — futures and forex genuinely differ here, so you only see what applies to you.

Symbols are named as NinjaTrader names them, contract month included: NQ 09-26, ES 09-26. Or set a mapping once in the receiver (NQ=NQ 09-26) and type just NQ — one field to change at rollover.

OptionWhat it doesExamples
q=How many contracts. Left out, the receiver's default is used. Always capped by its max-quantity setting.q=1  q=3
sl=Stop loss — a price, or a distance in ticks (t) or points (p), measured from your actual fill.sl=20890.25  sl=40t  sl=10p
tp=Take profit — same three formats.tp=21050  tp=80t
account=Send this alert to a named account instead of the one selected in the receiver.account=Sim101
atm=Run under an ATM template — the ATM then owns the stop and target, so sl=/tp= are ignored. Names with spaces need quotes.atm=Scalp  atm="Morning Scalp"

Ready to paste

You wantMessage
Market buy, 1 contractbuy NQ 09-26 q=1
Buy with a bracket in ticksbuy NQ 09-26 q=1 sl=40t tp=80t
Sell with exact pricessell ES 09-26 q=2 sl=6410.25 tp=6395
Buy under an ATM templatelong NQ 09-26 atm="Morning Scalp"
Stop to breakevenupdate NQ 09-26 sl=be
Take partial profitclose NQ 09-26 q=1
Close everythingflatten

Symbols sort themselves out. MNQ is enough — the front contract is worked out for you. Some feeds rename the big contracts (on CQG the E-mini Nasdaq is ENQ); that's handled. DIAGNOSTICS → LIST ROOTS shows what your feed calls things.

OptionWhat it doesExamples
q=How many contracts. Left out, the panel's default is used, capped by its max-quantity setting.q=1  q=3
sl=Stop loss — a price, or a distance in ticks (t) or points (p), measured from your actual fill. The stop attaches to the order itself.sl=20890.25  sl=40t
tp=Take profit — same three formats.tp=80t  tp=10p

No atm= — Quantower has no ATM templates and doesn't need them. No account= — the panel trades the account you enabled. Both are ignored and noted in the log if they appear.

Ready to paste

You wantMessage
Market buy, 1 contractbuy MNQ q=1
Buy with a bracket in ticksbuy MNQ q=1 sl=40t tp=80t
Stop to breakevenupdate MNQ sl=be
Reverse the positionreverse MNQ sl=40t
Close everythingflatten

Symbols are written plainly — EURUSD, XAUUSD, NAS100. Most brokers add a suffix (EURUSD.r); put just the suffix in the EA's Broker symbol suffix input and keep your alerts clean. Odd names go in the overrides box: GOLD=XAUUSD.

OptionWhat it doesExamples
q=How many lots. 0.01 is a micro lot. Always capped by the EA's Max lots.q=0.01  q=0.5
risk=Size off a percent of equity instead of a fixed lot. Needs a stop in the same alert. The % is optional — this field is always a percentage.risk=1%  risk=0.5
riskcash=Size off a fixed amount of account currency. Needs a stop in the same alert.riskcash=50
sl=Stop loss — a price, or a distance in pips, percent, ticks or points. Measured from your actual fill.sl=1.0850  sl=20pips  sl=1%
tp=Take profit — same formats.tp=40pips  tp=2%

No atm= and no account= — MetaTrader has neither. Both are ignored and noted in the log.

What a pip is here. A pip is 10 points on 5-digit and 3-digit pricing (EURUSD, USDJPY) and 1 point everywhere else — so gold and the indices fall back to points, which is how those are quoted anyway. The EA logs the exact pip size for your chart's symbol when it starts. ticks and points still work if you prefer them: on a 5-digit EURUSD, sl=20pips and sl=200ticks are the same stop.

Ready to paste

You wantMessage
Market buy, one micro lotbuy EURUSD q=0.01
Buy, 20 pip stop, 40 pip targetbuy EURUSD q=0.01 sl=20pips tp=40pips
Risk 1% of equity on this tradebuy EURUSD risk=1% sl=20pips tp=40pips
Risk a flat $50sell GBPUSD riskcash=50 sl=25pips
Percent-based stop on an indexbuy NAS100 q=0.1 sl=1% tp=2%
Sell with exact pricessell EURUSD q=0.02 sl=1.0900 tp=1.0800
Stop to breakevenupdate EURUSD sl=be
Close half of a 0.02 positionclose EURUSD q=0.01
Reverse, same size, fresh stopreverse EURUSD sl=20pips
Close everythingflatten

From a Pine strategy alert, put {{strategy.order.alert_message}} in the alert box and let your script build the line (it goes in the Message box in Step 3).

Managing a trade that's already on

Adding to a position just works — send another buy and it stacks, each entry bringing its own bracket. update measures ticks/points from your position's average price, cancels AlertFill's existing exit orders on that instrument and places one fresh bracket sized to the whole position; leave sl= or tp= out to keep that level as it is, and sl=be parks the stop at breakeven. close q=N takes profit on part of the position and re-sizes the bracket to what's left. reverse flattens, then enters the opposite way at the same size (or q= for a different size) with a new bracket from sl=/tp= if given. Note: update manages brackets placed by AlertFill — a trade running under an ATM template is owned by the ATM, so adjust that in NinjaTrader.

TradingView placeholders work anywhere in the message — e.g. q={{strategy.order.contracts}} — TradingView fills them in before sending. JSON-style messages are also accepted ({"action":"buy","symbol":"NQ 09-26","qty":1}) if your strategy already produces them.

How ATM templates are chosen (NinjaTrader)

Three levels, first one wins: 1) atm= named in the alert · 2) the ATM template currently selected in Chart Trader on that instrument's open chart · 3) the default ATM set in the AlertFill window. When an ATM runs the trade, the ATM owns the stop and target — any sl=/tp= in the alert is ignored. No ATM anywhere? AlertFill places its own bracket from sl=/tp=.

Step 3 — point a TradingView alert at it

1.On your account page's AlertFill tab, click Copy next to TradingView webhook URL.

2.In TradingView, create an alert as usual (or edit an existing one).

3.In the alert dialog, open the Notifications tab, tick Webhook URL, and paste the copied URL.

4.In the Message box, write the order — for example: buy NQ 09-26 q=1 sl=40t tp=80t buy MNQ q=1 sl=40t tp=80t buy EURUSD q=0.01 sl=20pips tp=40pips — written the way Step 2 shows.

5.Save the alert. When it fires, the order appears in your platform about a second later — in every one of them, if you're running more than one. Watch the first few on SIM.

Prop-firm accounts

Most futures prop firms allow automation in some form, but each firm sets its own rules — some require you at the screen, some restrict fully unattended trading, some care only about results. Check your firm's rulebook (our PropFirm Browser is a good place to start) before running AlertFill on a funded account, and prove any strategy on SIM or an eval first. The 30-second stale rule protects you from the classic automation blow-up — a pile of delayed alerts firing into a moved market after a disconnect.

If something's off

No order arrived: check the receiver window is started (green status) and your account page says RECEIVER CONNECTED; then check the alert actually fired in TradingView (its alert log) and that the webhook URL is the full copied one — copy it again, don't retype. "ignored (couldn't parse)" in the log: the message must start with buy/sell/long/short/close — check for typos in the first word. ATM error in the log: the template name in atm= must match a saved ATM template exactly; names with spaces need quotes. Order marked discarded on the account page: it arrived more than 30 seconds old (receiver was offline) — that's the safety net doing its job. Still stuck? The contact page.

MetaTrader 5 in particular

The panel never says CONNECTED, or the log shows error 5272: https://hooks.tradeaholiks.com isn't on the allow-list — Tools → Options → Expert Advisors, and check it's typed exactly, with no trailing slash. "no such symbol": the log prints what it tried and what your prefix/suffix inputs are set to. Most brokers add a suffix — check the exact spelling with Ctrl+U in MetaTrader, then put just the suffix (e.g. .r) in the input, no quotes. "exists but has no price yet": the symbol is fine, the market is shut or it hasn't ticked since being added to Market Watch. The stop looks ten times too far or too near: ticks aren't pips — on 5-digit pricing multiply your pips by 10. Nothing trades and the log says REFUSED: either Demo only is on and this is a live account, or the Algo Trading button isn't green.