Windicator app for professional traders

Windicator is a powerful android based, clutter free charting & trading app for professional traders. It can connect to any broker API and allow you to trade in cryptocurrency and stocks market. Windicator is created by traders, for traders, it is not meant to be yet another watchlist app.

Overview

This application comes with a default basic trend follow algorithm (1023). It is like an indicator for you to  figure out prevailing market trends. It must never be mistaken as a buy/sell advice from our side, A users is solely responsibility for profit/loss in trades done using this Indicator.

Once started, app continuously runs in background until stopped by user. While it runs, it keeps executing algorithm, alerts and auto-trade for all the back-filled symbols . It does not care whether they are set to displayed on chart or not, it happens on every tick arrival.

If a server side API have only data feed but no trading interface, then you can do still do Paper trading. APIs that have trading support, any symbol can be manually set to send paper trading or real trades.

windicator trading app

 

Device requirements

  1. Android 5 and newer
  2. OpenGLES_v2 support
  3. Currently ARM cpu only support ( No intel)

Features

  1. Timeframe support
  2. Algorithmic signals
  3. Standard indicators
  4. Auto/manual trading
  5. Paper trading and alerts

Supported exchange/brokers

  1. Coinbase Pro
  2. Binance

Stability status

Note that, app is currently in Beta stage and may have bugs and incomplete features, kindly report us if you find any issues. If you have the access to broker/data feed API and want to implement their support under Windicator, please send a feature request.

Download APK

PDF Manual

 

Golden rule of a Simple Trading System

A Simple trading system is first and most important founding stone for survival in any-ones trading career. Its opposite a Complex trading system leads to loss of focus – which is a sure shot way to lose everything. Value of a simple system can never be overemphasized, unfortunately this is overlooked and quickly forgotten. A graduating trader would be learning new skills and tempted to follow more complex system utilized by so called “gurus”, not understanding those rules are for that guru, here its worth mentioning countless traders have destroyed their life by blindly following techniques from gurus.

By the term “Simple trading system” here I don’t mean something stupid or discovered by a newbie. A Simple trading system is one which is based on strong principles, time tested, evolved from your experience but most importantly free from any complexities, things that leads to too much pressure buildup on the mind, clogs the perception, things that lead to luck factor play, require intuition or form a gray areas in decision making.

It’s necessary to understand that damage done by any trading system that are more Complex in nature are numerous, first – you tend to forget them, and because mind is tired always trying to keep them in front, you also forget other more important items like news, crucial dates, chart events etc, you become unable to perform simple chart observation, cannot judge simple trends, because a loaded mind is not powerful and agile enough. You may regularly find yourself in situations not able to decide what to do and end up in frustration.

Depending on how many rules you can remember and apply without failing in live markets is your – Simple trading system. A veteran or someone with superb memory, one who lives in present state of mind can incorporate 20 variables to watch and adjust his thought process quickly, but think before copying anything like that, is going to help you?

A simple trading system can be mixture of 3-4 items, as an example below.

  1. Take entry only when indicators or algorithm gives signal
  2. What times in trading session you take those signal or ignore
  3. What does trading data from exchange portal say ?

So like that based on above simple rules you can quickly reject or take a trade without having to regret or frustrate. Once you have successfully developed your simple trading system, stick to that and don’t change them frequently.

Windicator update links

At any time if you see errors like plugin update required or incompatible bridge version, then use these links to update your copy, they contain newest build.

Current release 20190916

Stable release 20190711

How to install AmiBroker Plugin

  1. Copy librtWindicator.dll file in “C:\Program Files (x86)\AmiBroker\Plugins\
  2. Copy amibroker.conf in “C:\Program Files (x86)\AmiBroker\
  3. For our strategy, use AFL file windicator.afl on charts
  4. For custom strategy, include windicator-1.afl on your AFL.

How to install Order bridge (Robo)

  1. Create a folder in a safe place
  2. Copy libVaca.dll inside that folder
  3. Copy Windicator.exe inside also in same folder.
  4. Set from windows Windicator.exe “run as administrator”
  5. You also need to set your AmiBroker “run as administrator”
  6. Now double-click on Windicator.exe just to ensure it’s working
  7. Make sure any one of the premium strategy ( eg Smart trend follow ) is subscribed in your account at https://apps.randomticks.com/, otherwise robo will not work
  8. Add required columns in nest trader, for details refer setup guide

Make sure Plugin can connect to server

  1. Unless plugin connects to our server,
  2. You won’t see any buy/sell signals
  3. You won’t be able to use bridge functionality
  4. Take a look at status line on top-left side in charts.

Last stable 20190628 (Changed DLL, AFL )

 

Correlation coefficient stock vs NIFTY – 5min table

Correlation coefficient or mathematically speaking auto-correlation tells the strength of positive or negative relationship of the price movement between two instruments, this comparison is valid for Index-component, or stock-commodity for almost everything.

A positively high value of coefficient means stock tends to rise if the index goes up whereas a high negative value means stock loses value if index goes up, in either case, a near zero value means, there is not much relationship exist between the two instruments.

Below is the list of some commonly traded stocks Correlation coefficient;

Relationship wrt NIFTY, timeframe=300s

ASIANPAINT-EQ 0.0906 30/05/2019 19/06/2019
AUROPHARMA-EQ 0.0580 30/05/2019 19/06/2019
AXISBANK-EQ 0.0796 30/05/2019 19/06/2019
BAJFINANCE-EQ 0.3252 30/05/2019 19/06/2019
BANKNIFTY 3.0738 30/05/2019 19/06/2019
BHARTIARTL-EQ 0.0263 30/05/2019 19/06/2019
BIOCON-EQ 0.0199 30/05/2019 19/06/2019
BPCL-EQ 0.0359 30/05/2019 19/06/2019
DABUR-EQ 0.0163 30/05/2019 19/06/2019
DRREDDY-EQ 0.1857 30/05/2019 19/06/2019
GODREJCP-EQ 0.0495 30/05/2019 19/06/2019
GRASIM-EQ 0.0695 30/05/2019 19/06/2019
HCLTECH-EQ 0.0761 30/05/2019 19/06/2019
HDFCBANK-EQ 0.1588 30/05/2019 19/06/2019
HINDUNILVR-EQ 0.1104 30/05/2019 19/06/2019
IBULHSGFIN-EQ 0.1685 30/05/2019 19/06/2019
ICICIBANK-EQ 0.0435 30/05/2019 19/06/2019
INDUSINDBK-EQ 0.2849 30/05/2019 19/06/2019
INFY-EQ 0.0340 30/05/2019 19/06/2019
JETAIRWAYS-EQ 0.0082 30/05/2019 19/06/2019
JUBLFOOD-EQ 0.1052 30/05/2019 19/06/2019
KOTAKBANK-EQ 0.1469 30/05/2019 19/06/2019
LICHSGFIN-EQ 0.0441 30/05/2019 19/06/2019
LT-EQ 0.1035 30/05/2019 19/06/2019
LUPIN-EQ 0.0571 30/05/2019 19/06/2019
M&M-EQ 0.0614 30/05/2019 19/06/2019
NIFTY19JUNFUT 0.8469 17/06/2019 19/06/2019
RELIANCE-EQ 0.1472 30/05/2019 19/06/2019
SBIN-EQ 0.0426 30/05/2019 19/06/2019
SRTRANSFIN-EQ 0.1917 30/05/2019 19/06/2019
SUNPHARMA-EQ 0.0330 30/05/2019 19/06/2019
TATASTEEL-EQ 0.0492 30/05/2019 19/06/2019
TCS-EQ 0.1588 30/05/2019 19/06/2019
TECHM-EQ 0.0388 30/05/2019 19/06/2019
TITAN-EQ 0.0957 30/05/2019 19/06/2019
UPL-EQ 0.0607 30/05/2019 19/06/2019
WIPRO-EQ 0.0072 30/05/2019 19/06/2019
YESBANK-EQ 0.0274 30/05/2019 19/06/2019
ZEEL-EQ 0.0431 30/05/2019 19/06/2019

AmiBroker backtest with fixed number of quantity

By default AmiBroker backtesting engine, sets some Initial capital and displays ending capital in backtest result, but more often we need to backtest a strategy with a given number quantity instead of how much trading capital we have, as later criteria can pose problems with options where If one has fixed the trading capital, then number of traded quantity might vary over trades.

To do this we only need to add one line towards the start of AFL file

 SetPositionSize( 1, spsShares ); 

Here 1 being quantity, also if you are backtesting multiple symbols it is preferred to set max number of open position to 1000, this can be done from
Analysis window -> backtester settings -> portfolio tab

AmiBroker custom bar colors buy sell AFL

Following piece of code is for drawing, coloured bars/candles that changes its colour with signal, it makes easy to understand working of strategy.

color = IIf(Flip(Buy, Sell), colorLime, colorLightGrey);
color = IIf(Flip(Short, Cover), colorRed, IIf(color != colorLightGrey, color, colorLightGrey));
Plot(C, "C", color, styleCandle);

 

Note that all four variables buy, sell, short, cover must be set in AFL somewhere before above code starts, a sample working AFL may look like below;

 

ma1 = ma(c, 10);
ma2 = ma(c, 30);

buy=cover = cross(ma1, ma2);
sell=short = cross(ma2, ma1);

color = IIf(Flip(Buy, Sell), colorLime, colorLightGrey);
color = IIf(Flip(Short, Cover), colorRed, IIf(color != colorLightGrey, color, colorLightGrey));
Plot(C, "C", color, styleCandle);

A sliding window implementation of AR(1) model for financial time series

Below is working c++ equivalent code snippet I am sharing for curious readers, the auto-correlation regression, also known as AR model are popular and classic method for analysis and forecasting time series such as stock prices. AR models comes with many varieties of which AR(1), the single lag is simplest and easier to implement by programming ordinary least square (OLS), understanding this will form basis for developing your own higher order AR models. correlation coefficient obtain using this method can be readily used for Unit root test, to find out whether our time series is stationary.

Without further ado, sharing a sliding window based ( aka moving window ) implementation which are must for all kinds of performance oriented algos, please read code comments, they are there for some explanation.

#include <iostream>
#include <stdio.h>


/****
	Author: randomticks.com
	Subject: AR(1) model examplde code
*/

int main() {

	int n = 10000;// entire price array length
	int pds = 10; // moving window period
	
	///// this is a virtual stock closing price, 
	///// in reality it will be obtained from your charting software
	double* close = new double[n]();
	close[0] = 1000; // starting price
	for(int i=1; i < n; ++i) { 
                if(std::rand()%10 > 5) {
			close[i] = close[i-1] + 1;
		} else {
			close[i] = close[i-1] - 1;
		}

	}

	double* input = new double[n](); // prepare an empty time series input - 0 filled
	double* array = new double[n](); // array to hold predicated values
	
	// below allocating 0 filled arrays in heap 
	double* _sumx = new double[n](); 
	double* _sumy = new double[n]();
	double* _sumx2 = new double[n]();
	double* _sumxy = new double[n]();

	for(int i=1; i < n; ++i ) { // starting the loop from 1 
                input[i] = close[i] - close[i-1];  // this is for 1st order differencing 
                                                                        // one can also use close[i] 
                double y = input[i]; // return 
                double x = input[i-1]; // lag-1 value for return 
                _sumx[i] = _sumx[i-1] + x; 
                _sumy[i] = _sumy[i-1] + y; 
                _sumx2[i] = _sumx2[i-1] + x*x; 
                _sumxy[i] = _sumxy[i-1] + x*y; 
                if( i > pds - 1 ) {
		
			double y_old = input[i-pds];
			double x_old = input[i-pds-1];
	
			_sumx[i] -= x_old;
			_sumy[i] -= y_old;
			_sumx2[i] -= x_old * x_old;
			_sumxy[i] -= x_old * y_old; 
	
			double var = pds*_sumx2[i] - _sumx[i]*_sumx[i];
			double cor = (pds*_sumxy[i] - _sumx[i]*_sumy[i])/var; // correlation coefficient can be 
			double fix = (_sumy[i]*_sumx2[i] - _sumx[i]*_sumxy[i])/var;
			array[i] = fix + cor * input[i-1] + close[i-1];  // predict current closing using lag-1
			
			printf("i=%d	actual= %.2f		forcast= %.2f\n", i, close[i], array[i]);
	
		} 
	}
}

Now comppile it with
g++ -std=c++11 ar1.cpp

Which is more important win-rate or risk-reward ratio ?

Every traders must have come across this epic question of which one to give more value, high winrates or high risk-reward, winrate is – how many of your % trades tend to come out profitable, you can have a 60% winrate which is considered decent, for many experienced traders with 70-80% win rates are not uncommon, on the other side risk-to-reward ratio, is basically how much typically you make against your losers, a 1:1 of risk-reward works well most of the time, the higher the better.

When we design a strategy, algorithmic or price pattern, it will have a characteristic winrates and risk-reward, some strategy have high winrate and low risk/reward, and reverse is also true, by evaluating these we can either discard or accept that particular strategy, because it must have acceptable winrate and reward ratio both, note that a high winrate with very poor risk-reward is not useful similarly a high risk-reward but loses quite often is equally bad, therefore when we say high winrates that means, risk-reward is also fixed, typically 1:1.

This article is for day traders and not a investing or positional trading material, for investing or any long term trading clearly the focus must be towards high reward/risk ratio. you maybe losing 7 out of 10 traders but those 3 winner will make up for all losses. Warren buffet will tell you how much he loves high reward to risk and lots of buffet folks will advice you the same, but is it one fit for all? is it good for everyone, not so simple.

As we know, winrate and risk-reward runs contrary to each others, you can’t have both in favour, means for a higher profits one has to give up some portion of from winrates and vice versa, so again the same question arise, which one is more valuable – winrate or reward to risk? Let me again clarify this guidance is only for day trading. and for day trading winrates are more important than risk to reward ratio.

Why it is so, to figure out this we must understand significance if both, winrate and risk-reward, a lower winrates simply means you are doing something wrong in your analysis or make mistakes, perhaps your market knowledge is not up to the level or you lack psychological robustness, whereas a consistently high winrates means you are right path. Second the higher risk-reward means you as a trader have been able to develop a stable mind and patience. so reality is both are important but not equally for everyone, typically in the beginning of your trading career you must focus on high winrates, combined with at least 1:1 risk-reward, later when you have mastered trades, you should be improving on reward to risk, because your experience has already made you the master of trades and don’t make mistakes.

To sum up, aiming for high risk-reward comes later in the trader learning phase, and don’t fall for anyone who is giving you a black and white answers.