Looks like a fun project! One suggestion...perhaps pass in the time intervals into the constructor. Code: public ExampleStrategy() { indicators.add(boll5m = new BollingerBand(TimeInterval.minutes(5))); indicators.add(boll1h = new BollingerBand(TimeInterval.hours(1))); } could be: Code: public ExampleStrategy(TimeInterval bbBandTimeIntervalOne, TimeInterval bbBandTimeIntervalTwo) { indicators.add(bollOne = new BollingerBand(bbBandTimeIntervalOne)); indicators.add(bollTwo = new BollingerBand(bbBandTimeIntervalTwo)); }
That is done on purpose. If you look at the optimizing section, that constructor is changed to use Parameters. This allows you to parameterize not only your strategy but every single thing in your code (bollinger params as you suggested, stop loss percentage, ticks in a trade before getting out, etc etc etc) Also the framework forces you to create new instances in that way (either without parameters or with a Parameters implementation) so that simulations can be easily parallelized using all cores of your CPU. (BTW I'm waiting for AMD to release their Threadripper 3990x with 64 cores and 128 threads to upgrade my PC and optimize the shit out of my strategies)
This sounds extremely sweet to my ears! As providence would have it, this year I finalized a system that absolutely “kills it” in the Forex (and other) markets due in large part to the integration of data from multiple time frames synchronously. Unfortunately, what I know of coding is essentially zero, so I have to merge all the information mentally and trade the system manually. If what you are doing is on the up and up, I could see myself paying a coder when you are all done to use your framework to build a trading robot using the exact same protocol I use so that zero opportunities are missed, all entries and exits are timed perfectly, and all I need do is monitor the system to make sure it doesn’t go haywire or suddenly breakdown for some unanticipated reason. Honestly, in the two years I’ve been visiting EliteTrader, you are the first contributor I’ve opted to follow. But since you just joined yesterday, I will be curious to see the number and quality of posts that follow the ones you have shared so far. (I will have to check out GitHub to evaluate whether it would make sense to follow you there also.) Open source is particularly attractive since I am starting out with extremely limited funds. Ideally, it would be great if I managed to hook up with a coder who joined me as an equal partner rather than a contracted worker. If you finish this project and I’m ready to begin such a search in earnest, I might reach out to nooby_mcnoob and fan27 for pointers on how to best begin that process since, based on their comments to your posts, they seem to be quite knowledgeable about coding. I also ran across some guy on YouTube named Patrick Shyu (A.K.A. TechLead) who has a website where maybe I can get some additional pointers on conducting a coder search as well. (I haven’t checked it out yet to see if it offers any useful information at no charge.) I hope you’re able to see this project through to the end. Good luck!
Thanks for the support. In a sense the project is "complete" as in it can be used to build a trading robot for you right now. What needs to be done mainly is integrating with other brokers/exchanges so you can trade live in them. I don't have a lot of incentive to do this myself as I'm not trading with anything else than Binance at the moment. The idea of open-sourcing this project was that other people who want to use different platforms can build the (hopefully) small pieces of code required to communicate with their preferred exchange/broker and let the framework take care of the rest. You mentioned you traded forex, what platform do you currently use for that?
This is good to know. Given this fact, I'm going to write a little summary of what I've read thus far (to the best of my understanding) to help me begin processing what you're up to. I'll then head over to GitHub and begin reading everything you wrote there to start "soaking in" as much of your explanations/descriptions as my head can handle. I'm hoping this will help me speak more intelligently with coders if and when I start interviewing for someone to take what you've done and adapt it specifically to my system, if it turns out that this would make any sense at all. To answer your question, I trade using the MT4 platform. I learned enough MQL from watching Jim Dandy videos on YouTube and trying to decipher Ulrik Petersen's MQL Programmer's Guide to write simple EAs, but nothing sophisticated enough to handle my system in detail, and I'm not willing to try contracting someone from Fiverr or Upwork for such a major job, which is about all my budget can afford at the moment. I'm therefore looking forward to reviewing what you've done to see if any additional understanding as to exactly how coding works might "seep" into my brain. Summary for myself: This framework allows anyone who can code a bit to build and test a strategy, then run a trading robot. You can copy, modify, sell, or do whatever you want. There is no dependency on any third party server/setup/etc. It all depends on the data you collect yourself (which the framework helps you to manage) and the code you write. You can change how it will execute orders (if at all, since you might just want it to send you a notification so you can review and trade manually) and you can even have it email you every time a trade is made. It is extensible: Implement 2 interfaces to integrate with another exchange or broker to trade stocks, Forex, or whatever instrument you want to trade. The purpose of the framework is to relieve programmers of the bulk of the work. Internally indicators have an “aggregator” for designated time intervals to aggregate the incoming data used to calculate values for given intervals, and then the next intervals will start to be filled. Hence, the main idea of this framework is to allow you to work with multiple time scales at the same time. (Most, if not all, other frameworks are fixed to the same time scale so that merging signals from different time scales is either hard or impossible.) The framework’s unique characteristics/features make it preferable compared to almost all others. For example, quantopian/quantconnect depend on their platform so you have limited control over what you are doing. Pylivetrader loads all data in memory so it becomes hard to back test efficiently, especially if you are trying to emulate a live market situation (i.e., trading multiple symbols at the same time, using different time scales, etc.) Backtrader is GPL3, which might give one pause in and of itself, and even though it is pretty complete, it is complex to use and difficult to find how to cleanly manage open orders (for example, when to stop a trade before one or more strategies give a sell signal). It is also difficult to optimize parameters efficiently, especially if you have thousands of combinations to test. If you look at the optimizing section of the univocity-trader open-source trading framework, you’ll note that the construction is changed to use Parameters. This allows you to parameterize not only your strategy but every single thing in your code. Also the framework forces you to create new instances in that way, either without parameters or with a Parameters implementation, so that simulations can be easily parallelized using all cores of your CPU.
If you like, message me and let me know what you are up to before you spend any money on programmers. I am not interested in the job but would gladly offer free advice in terms project feasibility.