Trading Router

Syntax for NinjaTrader 7/8

Syntax is the set of rules for constructing proper alert messages for sending Tradingview alerts to NinjaTrader 7/8.

A message is constructed by fields. A field is a parameter-value pair connected by "=". Fields are separated by ",". You can put no space or a few spaces after "," to make message clear to read.

A message for NinjaTrader 7/8 must have "token" and "n_signal" fields.

Except for "token", all fields start with "n_", i.e. "n_signal", "n_qty", "n_symbol", "n_sl_pips". This is different as the syntax for MT4/5

Every message must have a token field which is the master token, you can get your master token on your TradingRouter Dashboard


Sample Syntax

Here are some syntax examples:

  • token=master19dd529542d4b79d2bc4,n_signal=buy,n_symbol=EURUSD,n_qty=1
  • token=master19dd529542d4b79d2bc4, n_signal=sell,n_symbol=EURUSD, n_qty=2, n_sl_pips=100
  • token=master19dd529542d4b79d2bc4,n_signal=closelong, n_symbol=EURUSD

Market Orders

Syntax for market orders such as buy and sell

buy

Place a buy order at the market price. Usually this order will be filled immediately.

Valid Alternatives (case-insensitive)
  • long
  • bull
  • bullish


  • n_symbol= is a required parameter, it must be in message
  • n_qty= is a required parameter, it must be in message


buy examples
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=EURUSD, n_qty=1
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=AUDUSD, n_qty=3, n_sl_pips=100
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=EURJPY, n_qty=20, n_sl_pct=3


sell

Place a sell order at the market price. Usually this order will be filled immediately.

Valid Alternatives (case-insensitive)
  • short
  • bear
  • bearish


  • n_symbol= is a required parameter, it must be in message
  • n_qty= is a required parameter, it must be in message


sell examples
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURUSD, n_qty=1
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=AUDUSD, n_qty=3, n_sl_pips=100
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURJPY, n_qty=200, n_sl_pct=3


eaoff

Halts the TradingRouter Strategy. If the Strategy is halted, incoming signals will not be processed.

The Strategy will show "Strategy is halted by eaoff message" on the chart.
check NinjaTrader Strategy has been halted after receiving eaoff command from Tradingview signals

eaoff examples
  • token=master19dd529542d4b79d2bc4,n_signal=eaoff


eaon

Reactivates the TradingRouter Strategy from halt.

eaon examples
  • token=master19dd529542d4b79d2bc4,n_signal=eaon


close all

For NinjaTrader 8, close all positions and delete all pending orders of the account, regardless of symbol.

For NinjaTrader 7, close all positions created by TradingRouter Strategy and delete all pending orders created by TradingRouter Strategy , regardless of symbol. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.

Safety Measure

This command will only work if n_symbol= is the same symbol where TradingRouter Strategy is running on. If TradingRouter Strategy is running on EURUSD, then you should set symbol=EURUSD. Otherwise you will see "n_symbol is not the chart symbol! in the log"


NinjaTrader 7 Strategy safety measure for receiving Tradingview signals

NinjaTrader 8 Strategy safety measure for receiving Tradingview signals


closeall examples
  • token=master19dd529542d4b79d2bc4,n_signal=closeall,n_symbol=EURUSD (note: if TradingRouter Strategy is running on EURUSD chart, then all positions and pending orders of the account will be closed and deleted in NinjaTrader 8; all positions and pending orders created by TradingRouter Strategy will be closed and deleted in NinjaTrader 7.)


closealleaoff

Close all positions and delete all pending orders, regardless of symbol, then halts the TradingRouter Stratgey. If the strategy is halted, incoming signals will not be processed.

For NinjaTrader 8, all positions and all pending orders of the account will be closed or deleted.

For NinjaTrader 7, all positions created by TradingRouter Strategy and all pending orders created by TradingRouter Strategy will be closed or deleted. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.

The Strategy will show "Strategy is halted by eaoff message" on the chart.
NinjaTrader Strategy can be stopped by Tradingview signals


Safety Measure

This command will only work if n_symbol= is the same symbol where TradingRouter Strategy is running on. If TradingRouter Strategy is running on EURUSD, then you should set symbol=EURUSD. Otherwise you will see "n_symbol is not the chart symbol! in the log"


NinjaTrader 7 safety measure preventing Tradingview signals from stopping Strategy by accident

NinjaTrader 8 safety measure preventing Tradingview signals from stopping Strategy by accident


closealleaoff examples
  • token=master19dd529542d4b79d2bc4,n_signal=closealleaoff,n_symbol=EURUSD (note: if TradingRouter Strategy is running on EURUSD chart, then all positions and pending orders of the account will be closed and deleted in NinjaTrader 8; all positions and pending orders created by TradingRouter Strategy will be closed and deleted in NinjaTrader 7.)


close

Close all positions of the specified symbol.

For NinjaTrader 8, it closes all positions of the specific symbol of the account.

For NinjaTrader 7, it closes all positions of the specific symbol of TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.



close examples
  • token=master19dd529542d4b79d2bc4,n_signal=closelong,n_symbol=EURUSD


closebuy

Close all positions of the specified symbol and open a new long position of the specified symbol.

For NinjaTrader 8, it closes all positions of the specific symbol of the account.

For NinjaTrader 7, it closes all positions of the specific symbol of TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.



closebuy examples
  • token=master19dd529542d4b79d2bc4,n_signal=closebuy, n_symbol=EURUSD, n_qty=5


closesell

Close all positions of the specified symbol and open a new short position of the specified symbol.

For NinjaTrader 8, it closes all positions of the specific symbol of the account.

For NinjaTrader 7, it closes all positions of the specific symbol of TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.



closesell examples
  • token=master19dd529542d4b79d2bc4,n_signal=closesell, n_symbol=EURUSD, n_qty=5


Pending Orders

Syntax for pending orders such as buy limit, sell limit, buy stop and sell stop

buylimit

Place a buy limit order below the current market price.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required


buylimit examples
  • token=master19dd529542d4b79d2bc4, n_signal=buylimit, n_symbol=EURUSD, n_price_exact=1.023, n_qty=1
  • token=master19dd529542d4b79d2bc4, n_signal=buylimit, n_symbol=AUDUSD, n_price_pct=1, n_qty=200, n_sl_pips=100


selllimit

Place a sell limit order above the current market price.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required


selllimit examples
  • token=master19dd529542d4b79d2bc4, n_signal=selllimit, n_symbol=EURUSD, n_price_exact=1.231, n_qty=1
  • token=master19dd529542d4b79d2bc4, n_signal=selllimit, n_symbol=AUDUSD, n_price_pct=1, n_qty=200, n_sl_pips=100


buystop

Place a buy stop order above the current market price.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required


buystop examples
  • token=master19dd529542d4b79d2bc4, n_signal=buystop, n_symbol=EURUSD, n_price_exact=1.231, n_qty=1
  • token=master19dd529542d4b79d2bc4, n_signal=buystop, n_symbol=AUDUSD, n_price_pct=1, n_qty=200, n_sl_pips=100


sellstop

Place a sell stop order below the current market price.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required


sellstop examples
  • token=master19dd529542d4b79d2bc4, n_signal=sellstop, n_symbol=EURUSD, n_price_exact=1.0123, n_qty=1
  • token=master19dd529542d4b79d2bc4, n_signal=sellstop, n_symbol=AUDUSD, n_price_pct=1, n_qty=200, n_sl_pips=100


Price Parameter (for Pending Order)

Price parameter is used to determine the entry price of pending order. It has the following 3 parameters

    1. n_price_pips=
    2. n_price_pct=
    3. n_price_exact=

These 3 parameters has priorities: n_price_pips= > n_price_pct= > n_price_exact=

You can only put one of the 3 price parameters in your message. If you put more than one price parameters in the message, the highest priority paramter in the message will be used. For example if you put n_price_pct= and n_price_exact= in the message, only n_price_pct= will be used because n_price_pct= has higher priority than n_price_exact= and n_price_pct= is the highest priority parameter in your message.



1. n_price_pips=

n_price_pips= set the entry price to some pips away from current market price

n_price_pips= examples
  • token=master19dd529542d4b79d2bc4, n_signal=buylimit, n_symbol=EURUSD, n_price_pips=300, n_qty=1 (note: create a buylimit order for 1 quantity of EURUSD, the entry price is 300 below current market price )
  • token=master19dd529542d4b79d2bc4, n_signal=buystop, n_symbol=EURUSD, n_price_pips=200, n_sl_pips=100, n_qty=2 (note: create a buystop order for 2 quantity of EURUSD, the entry price is 200 above current market price, the stop loss is 100 pips )


2. n_price_pct=

n_price_pct= set the entry price to some percentage away from current market price

n_price_pct= examples
  • token=master19dd529542d4b79d2bc4, n_signal=buylimit, n_symbol=EURUSD, n_price_pct=2, n_qty=1 (note: create a buylimit order for 1 quantity of EURUSD, the entry price is 2% below current market price )
  • token=master19dd529542d4b79d2bc4, n_signal=selllimit, n_symbol=EURUSD, n_n_price_pct=3, sl_pips=100, n_qty=2 (note: create a selllimit order for 2 quantity of EURUSD, the entry price is 3% above current market price, the stop loss is 100 pips )


3. n_price_exact=

n_price_exact= set the entry price to a specific price

Note: This parameter is not recommended because the entry price may be invalid due to the discrepancy in quotes between TradingView and NinjaTrader. For example, your quote in Tradingview is $10000, but the quote at NinjaTrader is $9998, if you make a buylimit order and set n_price_exact=9999, the entry price is above current market price and is invalid for buylimit order at NinjaTrader.

n_price_exact= examples
  • token=master19dd529542d4b79d2bc4, n_signal=buylimit, n_symbol=EURUSD, n_price_exact=1.0012, n_qty=1 (note: create a buylimit order for 1 quantity of EURUSD, the entry price is 1.0012 )
  • token=master19dd529542d4b79d2bc4, n_signal=selllimit, n_symbol=EURUSD, n_price_exact=1.2342, n_sl_pips=100, n_qty=2 (note: create a selllimit order for 2 quantity of EURUSD, the entry price is 1.2342, the stop loss is 100 pips )


cancellong

delete all buylimit and buystop pending orders of the specified symbol.

For NinjaTrader 8, it deletes all buylimit and buystop pending orders of the account of the specified symbol

For NinjaTrader 7, it deletes all buylimit and buystop pending orders of the specified symbol created by TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.



cancellong examples
  • token=master19dd529542d4b79d2bc4,n_signal=cancellong,n_symbol=EURUSD


cancelshort

delete all selllimit and sellstop pending orders of the specified symbol.

For NinjaTrader 8, it deletes all buylimit and buystop pending orders of the account of the specified symbol

For NinjaTrader 7, it deletes all buylimit and buystop pending orders of the specified symbol created by TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.



cancelshort examples
  • token=master19dd529542d4b79d2bc4,n_signal=cancelshort,n_symbol=EURUSD


cancellongbuylimit

delete all buylimit and buystop pending orders of the specified symbol and place a buy limit order below the current market price.

For NinjaTrader 8, it deletes all buylimit and buystop pending orders of the account of the specified symbol

For NinjaTrader 7, it deletes all buylimit and buystop pending orders of the specified symbol created by TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required

cancellongbuylimit examples
  • token=master19dd529542d4b79d2bc4,n_signal=cancellongbuylimit,n_symbol=EURUSD,n_price_pct=1, n_qty=3, n_sl_pips=100


cancellongbuystop

delete all buylimit and buystop pending orders of the specified symbol and place a buy stop order above the current market price.

For NinjaTrader 8, it deletes all buylimit and buystop pending orders of the account of the specified symbol

For NinjaTrader 7, it deletes all buylimit and buystop pending orders of the specified symbol created by TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required

cancellongbuystop examples
  • token=master19dd529542d4b79d2bc4,n_signal=cancellongbuystop,n_symbol=EURUSD,n_price_pct=1, n_qty=3, n_sl_pips=100


cancelshortselllimit

delete all sell limit and sell stop pending orders of the specified symbol and place a sell limit order above the current market price.

For NinjaTrader 8, it deletes all buylimit and buystop pending orders of the account of the specified symbol

For NinjaTrader 7, it deletes all buylimit and buystop pending orders of the specified symbol created by TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required

cancelshortselllimit examples
  • token=master19dd529542d4b79d2bc4,n_signal=cancelshortselllimit,n_symbol=EURUSD,n_price_pct=1, n_qty=0.3, n_sl_pips=100


cancelshortsellstop

delete all sell limit and sell stop pending orders of the specified symbol and place a sell stop order below the current market price.

For NinjaTrader 8, it deletes all buylimit and buystop pending orders of the account of the specified symbol

For NinjaTrader 7, it deletes all buylimit and buystop pending orders of the specified symbol created by TradingRouter Strategy. You are recommended to close all positions and pending orders before apply TradingRouter Strategy on NinjaTrader 7.

  • n_symbol= is a required parameter, it must be in message
  • Price Parameter is required
  • n_qty= is required

cancelshortsellstop examples
  • token=master19dd529542d4b79d2bc4,n_signal=cancelshortsellstop,n_symbol=EURUSD,n_price_pct=1, n_qty=3, n_sl_pips=100


Stop Loss Parameter

Stop loss has the following 3 parameters

  1. n_sl_pips=
  2. n_sl_pct=
  3. n_sl_price=

These 3 parameters has priorities: n_sl_pips= > n_sl_pct= > n_sl_price=

You can only put one of the 3 stop loss parameters in your message. If you put more than one stop loss parameters in the message, the highest priority paramter in the message will be used. For example if you put n_sl_pct= and n_sl_price= in the message, only n_sl_pct= will be used because n_sl_pct= has higher priority than n_sl_price= and n_sl_pct= is the highest priority parameter in your message.



1. n_sl_pips=

n_sl_pips= set the stop loss pips away from the open price of the order. If n_sl_pips=100, then the stop loss is 100 pips away from the open price of the order.

n_sl_pips= examples
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURUSD, n_qty=1, n_sl_pips=100
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=AUDUSD, n_qty=2, n_sl_pips=150


2. n_sl_pct=

n_sl_pct= set the stop loss percentage away from the open price of the order. If n_sl_pips=1, then the stop loss is 1 percent away from the open price of the order. For example, if BTCUSD is at $20000, you buy with "n_sl_pct=0.1", then the stop loss is 0.1% away, at $19980.

n_sl_pct= examples
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURUSD, n_qty=1, n_sl_pct=1
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=AUDUSD, n_qty=2, n_sl_pct=2


3. n_sl_price=

n_sl_price= set exact price for stop loss. If n_sl_price=1.1234, then the stop loss set at 1.1234.

n_sl_price= examples
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURUSD, n_qty=0.1, n_sl_price=1.3012
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=AUDUSD, n_qty=0.2, n_sl_price=0.6045


Note: This parameter is not recommended because the stop loss may be invalid due to the discrepancy in quotes between TradingView and NinjaTrader, and also due to slippage. For example, your quote in Tradingview is $10000, but the quote at NinjaTrader is $9999, if you make a market buy order and set sl_price=9999, the stop loss is invalid at NinjaTrader. Another example, your quote in Tradingview is $10000, and the quote at NinjaTrader is also $10000, you make a market buy order and set sl_price=9999, but when the order is filled, the open price is $9998 due to slippage, then the stop loss is invalid.



Take Profit Parameter

Take profit has the following 3 parameters

  1. n_tp_pips=
  2. n_tp_pct=
  3. n_tp_price=

These 3 parameters has priorities: n_tp_pips= > n_tp_pct= > n_tp_price=

You can only put one of the 3 take profit parameters in your message. If you put more than one take profit parameters in the message, the highest priority paramter in the message will be used. For example if you put n_tp_pct= and n_tp_price= in the message, only n_tp_pct= will be used because n_tp_pct= has higher priority than n_tp_price= and n_tp_pct= is the highest priority parameter in your message.



1. n_tp_pips=

n_tp_pips= set the take profit pips away from the open price of the order. If n_tp_pips=100, then the take profit is 100 pips away from the open price of the order.

n_tp_pips= examples
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURUSD, n_qty=1, n_tp_pips=100
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=AUDUSD, n_qty=2, n_tp_pips=150


2. n_tp_pct=

n_tp_pct= set the take profit percentage away from the open price of the order. If n_tp_pips=1, then the take profit is 1 percent away from the open price of the order. For example, if BTCUSD is at $20000, you buy with "n_tp_pct=0.1", then the take profit is 0.1% away, at $20020.

n_tp_pct= examples
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURUSD, n_qty=1, n_tp_pct=0.1
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=AUDUSD, n_qty=2, n_tp_pct=20


Note:

  • tp_pct= should be less than 100 for sell order



3. n_tp_price=

n_tp_price= set exact price for take profit. If n_tp_price=1.1234, then the take profit is set at 1.1234.

n_tp_price= examples
  • token=master19dd529542d4b79d2bc4, n_signal=sell, n_symbol=EURUSD, n_qty=0.1, n_tp_price=1.0012
  • token=master19dd529542d4b79d2bc4, n_signal=buy, n_symbol=AUDUSD, n_qty=0.2, n_tp_price=0.9045


Note: This parameter is not recommended because the take profit may be invalid due to the discrepancy in quotes between TradingView and NinjaTrader, and also due to slippage. For example, your quote in Tradingview is $10000, but the quote at NinjaTrader is $10001, if you make a market buy order and set tp_price=10001, the take profit is invalid at NinjaTrader. Another example, your quote in Tradingview is $10000, and the quote at NinjaTrader is also $10000, you make a market buy order and set tp_price=10001, but when the order is filled, the open price is $10002 due to slippage, then the take profit is invalid.