Quote from dom993:
I agree C# is a much better choice than EasyLanguage, however you could use Ninja or MultiChart .NET or TradeLink and develop your strategies in C#.
"Excel is better than retail trading system" is just as stupid as trying to develop your own platform. What makes money is the trading algo, not the platform, and this is where you should spend your energy.
Quote from vicirek:
Read about structure or struct. This is a type that can be put in collections (queues, lists, sorted lists) or arrays to work from RAM or written to binary file on disk or if you prefer as text file after conversion.
Your back test data has to be accessed somehow and most commonly it is by symbol and date/time stamp for each data point of your design. Your structure would group different types of data in one convenient type; for example O H L C or bid ask last fields as double, time stamp as datetime, tick, epoch, or string, also symbol plus reserve some additional fields for volume etc.
Similar concepts would correspond to sql data storage and access with sql specific syntax.
Once you have idea how your data will look like you can develop simple algorithm to work with the data which obviously involves iteration over array or collection plus some back test logic to obtain desirable result.
If you want to start programming the best way is to do it the hard way and learn real language first by trial and error because using any of the easy way commercial platforms will leave you with very limited toolset. There is no other way of learning programming other than developing real application and you have chosen the hardest project which is trading application with live data stream in networked environment working with third party software, feeds and api.
Quote from j2ee:
If I put my temporary calculations in linked list, data that I want to store and historical data in SQL database 2008, does this structure makes sense to you? My backtest is not super heavy so I don't think I need to go down to binary file.
Is it hard to build live part with IB?
Quote from vicirek:
I would recommend that you look at .net collections like lists, queues, and sortedlists/dictionaries and see if linked list is the right choice to work with your data.
If you want to use sql then there are few technologies built in .net that let you deal with sql queries and working with data like linq and ado.net. That would probably make more sense and would let you use sql in very structured way with familiar c# syntax.
I would say it s challenging to become familiar with ib api because it is meant for more experienced programmers. It is not hard to start bulding simple system but making it good for production is another matter.
IB does not have example of c# application and you have to use activex from ib or third party library like ibcsharp to link to ib tws.
Quote from j2ee:
I try tradelink and it just doesn't even work. Tried to import data from google and yahoo, only give me like limited to 5 years daily data and there is no way to fix it except go into the source code.
The way tradelink stores data is very hard to understand why they choose to do so. They store high, low, open, close in four rows in a table and don't even mark down which is which.
Ninja, MultiChart is very limited kind of script language, I choose to use real C#. For retail trading system like these, I don't even know if their backtest result is precised.
Yeah trading algo is the most important, so I need to build my own to implement not just simple kind of algo. Retail trading system can just implement simple kind of algo. May be there are ways to imple some (just some) complated algo with retail trading system, but it is harder to find out how and learn it than building my own trading system, and the experience to learn C# of Ninja, multichart, or easy language mean nothing in real financial IT industry.
Quote from flakac:
I decided to use Matlab for backtesting&trading system development. Yes, the Java (or any real programming language is better) but I had no experience to work in anything else then Matlab.
My system consist of several objects, they are connected to each other trough event -listener mechanism (=nightmare for debugging and source of instability) The first objects reads the data and the last objects creates the trading signals. (the objects between do data processing, machine learning, etc)
The connection to broker I haven't done yet..
Matlab pros:
- You can do what you want, the programming is easy and quick
- Plenty of ready made methods you can use (like machine learning methods in statistic toolbox) You do not need program this yourselv.
Matlab cons:
- Mechanisms common in other programming languages are missing
- Matlab calculation are vector based, which is good for simple ccalculations but if you want incremental steps (data arrive - data are processed) then you must handle it accordingly.
- No multithreading (or at least it is difficult)
- Big memery demands
- Very slow
And even the programming in Matlab is easier then in other languages (at least for me..) the time demand to develop something useful is huge huge....
If you want you need OWN back testing platform, think carefully why not to use something what is available already. Because development something from scratch is really not easy. If I know it beforehand, I never do it again ...
So if you really need your own backtesting, do the flowing:
- Hire a project manager
- Hire some programmers