Post
Topic
Board Service Announcements
Re: mine4free (request for testers)
by
devlux
on 27/06/2015, 06:17:30 UTC
The current implementation is in golang, but the controller should probably be scripted so that it can be changed out readily.

During the refactor pre-analysis, I started looking at options for scripting the trading algorithms or as I put it before, creating "pluggable brains".

Javascript seems to be common enough nowdays that it might be a good candidate.
There are solid JS implementations for both golang and Java, of course there is nodejs as well.

Truth be told, 99% of people that would want this product, will probably have a nervous breakdown if they don't get a binary.
I've looked at some of the other algo bots (mostly crypto traders), that have shipped in the past and it seems to be a pretty common theme that people love their binaries.

In the end I may go with Java and the JDK because the JVM is ubiquitous and I don't want to have to create binaries for every possible platform.

Yet I also don't want the UI to be bogged down by J2EE or require a servlet container to run in, so I'm considering the possibility of creating the UI in JFX, or breaking the UI completely out from the app code and using something like pubnub or lightsteamer to push the data to any connected client.  (Note:  I could really use some help on the UI side if anyone reading this is a competent UX architect)

The way I have it planned right now, the scripting system is meant to be entirely event driven.  Each time there is new information from one of the sources (which are on polling timers), a new event would be fired and the trading algorithm would be notified.

I believe that an event driven architecture might be the right way to go here.
It's certainly the simplest, but there is also the possibility of a more active system via a looping controller.

I don't think we could do looping/polling and event style together, it's resource intensive and could cause major conflicts. 
This is one of those design decisions that no matter what is chosen, something is going to come along and break expectations.

A design that utilizes neural net style techniques (which is the long term direction I wanted to head) would probably benefit from an event driven architecture since NN are really not much more than a chained eventing mechanism with edge weights.

A design that utilizes genetic algorithms or does active hybrid evaluations or even relies on timers etc would likely benefit more from "main loop" concept.

Mostly just preserving some thoughts of my own for later, but any thoughts you might have would be appreciated.