Windicator app Manual

How to use this app

Windicator app can connect third party API, which may have real-time price quotes and also allow you to trade, currently the app works with a few limited APIs, we are in constant look-out for adding new API.

To make use any available data source, you may have to enter your API keys created with respective API providers. Based on an API types, you can do analysis and trading both.

The idea is in live market you enable a data source, do analysis/trading and when you are done, change back to local data source, do analysis there for the rest of day.

Algorithm features
Main attraction of this app is its algos, alerts and auto trading, algo executes on all loaded symbols as long as app is running, even in background. If the algo generates a signal, app will alert you, you can also do auto trade using those signal, you can either paper trade or with real money.

 

Functions summary

  1. Real-time quotes and back-fill
  2. Multiple Time frames
  3. Support and resistance line
  4. Ordering/cancelling
  5. Mark to market information
  6. Algorithmic signal – trend follow
  7. Common indicators
  8. Backtest algorithm
  9. Price alerts
  10. Auto trading
  11. Paper trading

 

App components

Sd card directory
App stores its “not so private” data inside your sd cards /Windicator directory

  1. /data contains OHLC bar historical values and instrument list master file.
  2. /logs contains your trading logs
  3. /debug contain application debug

These files will grow over time, and you should get rid of obsolete files using any file manager program.

Private directory
This directory is accessible under “Private files” in settings menu
These files contain critical configuration files.
Usually these files are not required to touch

If anything goes wrong you can clear application data from android application manager view, this will reset all configuration files to default.

If the application hangs, or unable to fully exit then better to kill it using android application manager, as a simple swiping left action will not necessarily terminate background service

Basic tasks

Change time-frame
Quickly swipe up on an open chart.

Reload back-fill
Swipe down on an open chart, note that this may be occasionally required, when you feel network connection was down, and some bars were missed.

Draw support and resistance lines
Tap and hold, this draws a support or resistance line, you can move up or down to adjust the value. Whenever support/resistance lines are created or moved, a price alert is turned on, this means you get will sound when price cross these levels. To disable this  tap on right panel (label area) of chart.

To remove these lines use main menu option – clear draw

Move chart range up/down
Scroll up/down in price label area ( right most)

Auto trading
When you turn on auto trading for a symbol using main menu, this is linked to a time frame, what it means is auto order forwarding happens only when the symbol is currently on that time-frame,  this is a required behavior when accidentally orders are sent when user changes time frame and that time frame had a signal

 

RandomTicks terms of service

1. Terms
By accessing our app, Windicator, you are agreeing to be bound by these terms of service, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing Windicator. The materials contained in Windicator are protected by applicable copyright and trademark law.
2. Use License

Permission is granted to temporarily download one copy of Windicator per device for personal, non-commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not:

modify or copy the materials;
use the materials for any commercial purpose, or for any public display (commercial or non-commercial);
attempt to decompile or reverse engineer any software contained in Windicator;
remove any copyright or other proprietary notations from the materials; or
transfer the materials to another person or “mirror” the materials on any other server.

This license shall automatically terminate if you violate any of these restrictions and may be terminated by RandomTicks at any time. Upon terminating your viewing of these materials or upon the termination of this license, you must destroy any downloaded materials in your possession whether in electronic or printed format.

3. Disclaimer

The materials within Windicator are provided on an ‘as is’ basis. RandomTicks makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.
Further, RandomTicks does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on its website or otherwise relating to such materials or on any sites linked to Windicator.

4. Limitations
In no event shall RandomTicks or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use Windicator, even if RandomTicks or a RandomTicks authorized representative has been notified orally or in writing of the possibility of such damage. Because some jurisdictions do not allow limitations on implied warranties, or limitations of liability for consequential or incidental damages, these limitations may not apply to you.
5. Accuracy of materials
The materials appearing in Windicator could include technical, typographical, or photographic errors. RandomTicks does not warrant that any of the materials on Windicator are accurate, complete or current. RandomTicks may make changes to the materials contained in Windicator at any time without notice. However RandomTicks does not make any commitment to update the materials.
6. Links

RandomTicks has not reviewed all of the sites linked to its app and is not responsible for the contents of any such linked site. The inclusion of any link does not imply endorsement by RandomTicks of the site. Use of any such linked website is at the user’s own risk.
7. Modifications

RandomTicks may revise these terms of service for its app at any time without notice. By using Windicator you are agreeing to be bound by the then current version of these terms of service.
8. Governing Law

These terms and conditions are governed by and construed in accordance with the laws of worldwide and you irrevocably submit to the exclusive jurisdiction of the courts in that State or location.

Privacy policy

Your privacy is important to us. It is RandomTicks’s policy to respect your privacy regarding any information we may collect from you through our app, RandomTicks.

We only ask for personal information when we truly need it to provide a service to you. We collect it by fair and lawful means, with your knowledge and consent. We also let you know why we’re collecting it and how it will be used.

We only retain collected information for as long as necessary to provide you with your requested service. What data we store, we’ll protect within commercially acceptable means to prevent loss and theft, as well as unauthorized access, disclosure, copying, use or modification.

We don’t share any personally identifying information publicly or with third-parties, except when required to by law.
Our app may link to external sites that are not operated by us. Please be aware that we have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies.

You are free to refuse our request for your personal information, with the understanding that we may be unable to provide you with some of your desired services.

Your continued use of our app will be regarded as acceptance of our practices around privacy and personal information. If you have any questions about how we handle user data and personal information, feel free to contact us.

This policy is effective as of 2 May 2020.

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

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