This week I started working on my first filter algorithm. The sole purpose of the program is to filter stocks who's trading price closes below the lower Bollinger band (80 day period) in the TSX, TSXV AND CSE. We use algorithms when the inefficiency targeted is persistent. Meaning that the trading opportunities occur over and over in a similar manner. EXAMPLE - identify the stocks who's price closes below the lower Bollinger band assuming the stock is being oversold, meaning that there is a good chance the price will bounce back after the sell-off.
This is not a trading bot since the user has to scan from the stock list, and manually input the buy/sell order. Which at this point is an advantage since the algorithm has absolutely no data to justify any decision it could make on its own. Now that that has been clarified, here are some of the notes I've taken from the first trial. Some positive and some negative, but I am hoping that through tradingview I will be able to connect with more experienced traders and developers to help me answer some questions.
Positive - the algorithm is able to detect the stocks trading below the lower band, reducing the time and effort one would take if we were to look for those conditions ourselves.
Negative - 1) the algorithm fails at focusing ONLY in Canadian markets. 2) the program is unable to determine chart periods, meaning that each candlestick can either represent one day, 3 hours, 1 hour, 30 min, etc. which makes the holding period extremely inconsistent given that some events are just occurring during minutes or days. 3) Even though the purpose is to filter stocks, the pool itself is still very large since the program is unable to discard stocks that are oversold and simply don't have the volume to bounce back, or for some other reason, the company suffered major financial damage and it's a Lehman/Enron stock.
Given this week's progress, here are some of my questions:
1) How can I code an API that's strictly focused on getting input from those 3 Canadian exchanges?
2) How can I go around getting an API Key that's going to give my API access to those markets in the first place? (again Canadian exchanges only) *I have contacted a few people from their websites. but haven't gotten any response yet.
3) What ways would I be able to source for cleaner data in order to improve the accuracy of backtesting? Meaning how can I code it to look past the Lehman/Enron stocks? If someone is kind enough to drop the boolean expression to do so, I would appreciate it.
4) My programming language of choice is python but is there someone out there who prefers a different language? A recommendation I got was Ruby, so is anyone familiar with it?
5) I've noticed that a lot of the open-source algorithms out there focus on forex and crypto and I am wondering if there is a specific reason for this? I'm having a hard time finding projects involving stocks, even in the almighty Github.
I appreciate all comments and thoughts that will help me find some of these answers. My background is in business finance, and my CompSci knowledge is focused on UX design mostly, perhaps you understand now why this project is so important to me. On top of creating a potential IP asset, it's also a great learning experience to enhance my career.