ZagTrader Plugin for Amibroker - ZagTrader

ZagTrader ZagTrader is a specialized Financial Technology company and service provider that provides its clients in the brokerage, investment banking, capital markets, and asset management with sophisticated solutions to run their business effectively.
Block 12, F06, Dubai Knowledge Park Dubai, UAE
Phone: +971 4 433 4385
Welcome to ZagTrader Play Do not show this again.

ZagTrader Plugin for Amibroker

Amibroker is known for its powerful technical analysis and the high accuracy of its automatic buy/sell signals. ZagTrader created a bridge that integrates with its own Order Management Platform and can generate and route orders based on the buy/sell signals received via Amibroker providing a STP seamless, reliable connectivity with the ZagTrader Engine.

ZagTrader empowers and enables access to a reliable infrastructure that can bridge AmiBroker’s sophisticated award winning technology, bridging the software with ZagTrader.

Features

  • Instant conversion of trading signals into trades for multiple users.
  • Multi Market, Multi Asset Class, Multi Currency
  • Institutional Grade Trading Technology
  • High Frequency Trading with Smart Order Routing
  • Powerful Charting & Technical Indicators
  • Global Data Feed
  • Ultra-light Weight Multi-Threaded Architecture
  • Advanced Research Tools
  • KYC / AML with Advanced Risk Management
  • Automation of Client Onboarding
  • Fully White Labeled

Some of What’s Available

  • Desktop, Tablet and Mobile applications with 2 Factor Authentication to enable traders to constantly monitor and manage trading flow in a fully secure manner.
  • Fully integrated with ZagTrader Front/Middle/Back office systems and enabled for integration with existing external systems or 3rd party modules.
  • Trade workflow with user limit, approval and authority matrixes built in to the platform.

Advantages

  • High Performance
  • On Demand Reports Production with Dynamic Reporting
  • Easily Integrated
  • Highly Scalable
  • Trade Neutrally on Multiple Routing Networks

Technical Part

ZagTrader Plugin

It is an interface between AmiBroker and ZagTrader Platform. This bridge automates most of the tasks associated with placing Buy/Sell orders.

Advantage Breakdown

The present scenario: Technical Analysts analyze one or two charts at a time and have to keep monitoring for when a buy/sell signal is generated. Once you see this signal based on your indicators, you would have to place the trade on the trading platform. All of this could mean loss of precious time/opportunities which could eventually decide on whether you are a successful trader/investor or not.

If you have a technical strategy which can be put down in paper – For example; assume you have a simple strategy to buy/sell on the moving average crossover. This strategy can be very easily put on AmiBroker using AFL (AmiBroker Formula Language. Once you have created the AFL, you can backtest it on AmiBroker and if you are convinced that the strategy is profitable, you can take it live. You can also use the screener to find out which among the hundreds of scrips available are generating you a buy/sell signal based on your formula. At the same time, you can run the formula on as many scrips as you wish. You can also run multiple formulae on multiple scripts at the same time, which is humanly impossible to track. What I have described till now is what makes AmiBroker a very powerful tool to use.

What the trading plugin does is that it takes AmiBroker a step more advanced and initiates an order on ZagTrader. So, for example, if you were running the moving average formula on 10 different scrips and 2 scrips gave a buy signal, you would automatically send orders to the trading platform with your preset order size for the 2 scrips. You have to two ways to send this order, which would then get placed on the exchange. Check our videos on how it works.

This process of placing an order as described above is fully-automated, which means that there has to be a process to define a kind template to place the order. Once you are completely confident on the system and your strategy, this process can be made completely automated.

Featuring

  • Individual Buy, Sell, Short and Cover
  • Multi User Buy, Sell, Short and Cover
  • Integrated logs and Order Panel
  • All ZagTrader features and capabilities (Risk Management, Algos, Order Management, Accounting…)

Installation

Prerequisites:
  • .Net Framework 4.7.2 - Windows 10 have this by default
  • AmiBroker
  • ZagTrader Plugin Installer that can be fetched from the ZagTrader website.
  • ZagTrader Account
  • Data Feed Subscription with any provider
Install the ZagTrader Plugin for AmiBroker.
  • On the first run for AmiBroker a pop up will appear where you should fill in your username, password, user type and server for ZagTrader.
  • When filled in correctly you will receive a “Logged in successfully” message which confirms the connectivity with ZagTrader
  • AmiBroker will launch and you are set to go.

Available Functionality Modes:

  • Regular Single User Mode
  • Broad Strategies Mode (Multi Users Mode)

Regular Single User Mode

This is the basic order placement process for a single user. You can place (buy, sell, cover or short) orders for a single user by calling the functions list:

  • ZagBuy
  • ZagSell
  • ZagShort
  • ZagCover

You will have to set the user ID as per defined in the ZagTrader platform to send the orders via the ZagTrader OMS to the specified market.

Example:

						user_ID = ParamStr("user_id","xxxxxxxxxxxxxxxxxxx");
						MySymbol = ParamStr("Symbol","BANKNIFTY18DECFUT");
						qty = Param("Quatity",10,0,50000,1);
						placeordertype = ParamList("Place Order On","Realtime|CandleCompletion",0);
						ZagBuy(MySymbol , user_id, qty , Close[0]) ;
				

We have prepared a full example that comes with installing the ZagTrader plugin called “ButtonsExample”

Multi Users Mode

Broad Strategies Mode (Multi Users Mode)

With this mode you will be able to place multiple orders for multiple users based on the same signal you have received from AmiBroker. For this mode we have another set of functions

  • ZagStrategyBuy.
  • ZagStrategySell.
  • ZagStrategyShort.
  • ZagStrategyCover.
Example:

						SPeriod = 3;
						LPeriod = 7;
						placeordertype = ParamList("Place Order On","CandleCompletion|Realtime",0);
						Statergy_Name = ParamStr("Name Of Brod Strategy","Intra")  ;


						Buy = Cross(EMA(C,SPeriod),EMA(C,LPeriod));
						Sell = Cross(EMA(C,LPeriod),EMA(C,SPeriod));

						PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
						PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
						PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
						PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
						PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
						PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

						Plot(EMA(C,SPeriod),"EMA-7",colorRed,styleLine);
						Plot(EMA(C,LPeriod),"EMA-21",colorblue,styleLine);


						tn = TimeNum();
						dn = DateNum();
						DateCond = dn == LastValue(dn);// check if it is last day of array
						SetOption("NoDefaultColumns", True );

						if(placeordertype == "Realtime")
						{
							
							tn = TimeNum();
						    dn = DateNum();
						    DateCond = tn == LastValue(tn);// check if it is last day of array
						    Buy = Buy  AND DateCond;
						    Sell = Sell  AND DateCond; 
						    Last_Occurred_SellSig = LastValue(Sell);
						    Last_Occurred_BuySig = LastValue(Buy);
						    AlgoNum = LastValue( TimeNum()); 
						    AddColumn( DateTime(), "Date", formatDateTime );

							If ( Last_Occurred_BuySig )
							{
							     AlgoBuy = 1 ; 
							     ZagStrategyBuy(Statergy_Name);
							}

							If ( Last_Occurred_SellSig )
							{
							    AlgoSell = 1 ;
							   ZagStrategySell(Statergy_Name);
							}
								
							AlgoSell = lastvalue(Ref(Sell,-1));
						}

						if(placeordertype == "CandleCompletion")
						{
							AlgoNum = LastValue( TimeNum());
							AlgoBuy =   lastvalue(Ref(Buy,-1));
							AlgoSell =  lastvalue(Ref(Sell,-1));
							
							if  ( AlgoBuy )  
							{ 
							ZagStrategyBuy(Statergy_Name);
							} 
							if ( AlgoSell )  
							{ 
							  ZagStrategySell(Statergy_Name);
							} 
								
						}
				

We have prepared a full example that comes with installing the ZagTrader plugin called “BrodStrategiesExample”

Multi Users Mode