TickZOOM Decision. Open Source and FREE!

Discussion in 'Trading Software' started by greaterreturn, Dec 15, 2008.

Thread Status:
Not open for further replies.
  1. Okay,

    Now, I stand corrected. That is VERY cool. They're using GPU for WOW. Very cool.

    Yes, that could be used by TickZOOM.

    Fascinating....Look....I'm going to open up the website soon with Wiki and issue tracker.

    I'll try to get all the suggestions in the issue tracker as "research" items. That way we can prioritize them in relation to each other.

    This is so exciting. I LOVE building systems like this "outside the box".

    Genius suggestion. We'll have to figure it out. It's just a question of priorities with all the rest.

    That system will have a "voting" mechanism to help prioritize the wish list.

    Sincerely,
    Wayne


     
    #21     Dec 16, 2008
  2. Hi Wayne,

    As far as speed benchmarks are concerned that is just one concern. Java has been gaining ground but the speed king is C and then C++. If Java keeps improving there may end up being no difference. With the processor speeds now the difference may not be significant, But that is not the only issue.

    1. There are questions about ease of programming (Java may be better).

    2. Cross platform portability (Java may be better).

    3. How much applicable open source code is available (C++ is probably better).

    4. Usage in high performance computing applications (C++ is probably better) BUT,,, Java has some interesting projects in high performance computing now days such as Hadoop (http://en.wikipedia.org/wiki/Hadoop) and others.

    My personal thoughts are to weigh out the issues, look at the available open source code that could be borrowed from or used (why reinvent the wheel?) and then use Java or C++ or both. I see a lot of projects that use both so that they can use existing code from both. If he system is modular then you can have some modules in C++ and others in Java as needed. Just do what makes sense. You can always recode some modules later if there is a reason to do so. Java has more GUI code and application code available and C++ has more system infrastructure code and processing code like Quant code, Math code, RAM based databases, API Broker interfaces, OpenFix, etc, etc.

    So just take the best of both!
     
    #22     Dec 16, 2008
  3. If you want to look at other large open source projects:

    OpenOffice - C++ and Java

    Linux - C and C++

    Firefox - C++ and Java

    Anyway almost all the big ones are C, C++ and Java or a combination of them. There are many of them, just open the Synaptic package manager on a Ubuntu system and you can see thousands of them and they are all available with full source code.

    There are no big open source projects in C# to my knowledge.
     
    #23     Dec 16, 2008
  4. Also think about compatibility with financial industry systems programmers that may want to contribute.

    Almost all of the cutting edge development on the latest stream processing and CEP (event driven) systems for the financial industry is being done on Linux and C++ with some Java mixed in. I see most of the client software and GUI work done in Java and the back end stuff in C++ but that is changing with the latest Java speed increases.

    Anyway a lot of these guys would like to contribute I am sure.
     
    #24     Dec 16, 2008
  5. Now that is a pragmatic and balanced assessment.

    Problem is, for the engine itself it doesn't make sense to mix languages. All the add-on plugins, etc you can use with your custom strategies and indicators can use whatever language combinations make sense.

    But the engine itself will run as one language. C++, Java, and/or C#.

    Unfortunately, I must pick which to do first. And I feel Java is the first with a builtin C++ api. (How does that sound?)

    At a high level the engine does three things. Receives ticks, builds data bars, and calls your custom formulas based on whatever events they requested.

    So TickZOOM calls your object factory with the name of your formula to instantiate. Then it sets any properties configured or from variables during optimization.

    Then it calls the Initialize() method.

    During your Iinitialize() you tell TickZOOM what dependencies on other classes and what bar intervals it requests to be updated.

    Let's say your class requested updates for 1Minute, 30 Seconds, and 1 hour.

    Then the engine will call your ProcessInterval() method with the interval event.

    During your code, you have access to all the bar intervals and instruments defined anywhere in your system.

    hour month, day, etc.

    If you class requests, it will also get called with every tick on the ProcessTick() method. (Must get used with care due to performance.)

    My point is that the Engine's real power and speed will be in doing it's core job really fast, and scalable but the same way, whether in live, replay, real time, test, optimization, etc.

    The custom code could easily be in C++ or whatever.

    Sincerely,
    Wayne

     
    #25     Dec 16, 2008
  6. Corey

    Corey

    When did I ever mention I wasn't technical? I am fairly tech savvy. I study computer science and can write code in over 7 programming languages.
     
    #26     Dec 16, 2008
  7. Sorry. Someone else also suggested GPU about the same time and said that. So I got the user names confused.

    What a coincidence?

    Anyway, excellent suggestion!

    Wayne

     
    #27     Dec 16, 2008
  8. Big

    Big

    I think you forgot one argument in your reasoning. When you try to start an open source project, one of the goal to really gain traction is to get people (developers) to work on it for free, outside their daytime office hours.
    That is, they need extra motivation, and it needs to be fun for them.
    And you need as many of them as you can possibly get, if you want development to advance at a decent rate, so that everybody stays motivated.

    I am going to take my example. I am a professional freelance software developer. Many years of experience in C/C++ (the language in which I started). On huge projects, performance critical applications.
    I started using C# (those nasty microsoft technologies) 5/6 years ago fulltime.
    I haven't been able to touch a line of C++ ever since without feeling like throwing up. Not even for money. Not even for a lot of money.
    I wouldn't touch a line of C++ even with your fingers on the keyboard.

    Let alone work for free, during unreasonable hours on a project that, if I assess correctly, is pretty much going to be pushing the limits on many counts.

    Developing in C++ feels like medieval torture when one has tried modern technologies. A little bit like you would be forced to drive in a steam powered car from the 1900s to go to work every morning, averaging 2/3 mph, taking hours to do just a few miles, freezing your ass off, when you see everybody else driving their nice modern cars, and in fact your brother let you drive his last week, and the performance is superior in just about every single conceivable aspect of it.

    Let me tell you about performance. In the investment banks I worked in (and I still work in) I have been so bl$$dy fed up with all the poor guys telling how C# was bad, and C++ was the only language worth looking at etc etc ... I threw a challenge. openly, publicly. We take a saturday afternoon, 5 hours, 2 computers, absolutely identical, one little spec (a math calculation to do, something reasonable) and we both code, me in C#, the other guy in C++. After the 5 hours, we run the thing, we time it, and we get the results.
    Nobody has ever risen to that challenge. No-one. Bonus is, people stopp telling me shit about that fantastic marvellous language.

    As for Java, well, in the banks where I work, there are nowadays 2 types of projects. Java, and C#. Let me tell you, allthe Java projects end up being such a piece of garbage, they are, one by one, rewriting them on C#. Little by little. And in investment banking world, at least where I am, the Java job ads decrease, little by little, and the C# ones increase, dramatically.
    I don't know why, as far as I can tell, they should be roughly equivalent. syntactically at least (well, I hate Java syntax but I suppose that is only a matter of taste). But seeing real life results of what a Java application is, has taught me only one thing. To stay away from it, and run fast.

    So to sum up, there is no way I (and most of my current collegues for that matter) am going to work on anything other than a modern, friendly, performing language and technology, and one that has both proven itself (for real) and one that will also be useful to me in the professional world.

    I just wanted to share that with you before you decide all of a sudden we need to rewrite it all in some fancy language. Look around you, what is the hot stuff being written in nowadays.
     
    #28     Dec 16, 2008
  9. Hi Big,

    The vast majority of high bandwidth back end code for the financial industry (as in stock market, not banks and branch banking) is written in C++ and runs on Linux. Period.

    If you are talking about front end code and client workstations and client/server systems for banks, etc - then yes there is a lot of it running on Windows and coded in C#

    What I was saying is make sure the engine is cross-platform so that for high performance applications it can run on Linux.

    The GUI part of the system could run in Windows and use C## and other people could code Java implementations or whatever.
     
    #30     Dec 16, 2008
Thread Status:
Not open for further replies.