Pages:
Author

Topic: Isis ATP [Automated Trading Platform] - Discussion - page 15. (Read 45225 times)

sr. member
Activity: 350
Merit: 250
This is a very small group right now, I suggest staying here and starting tangent threads for larger conversations. This allows a wider audience to see what we are doing, and hopefully get involved.

Tor is a non-starter for me. I'm involved in a few small ventures that could later be cast in a nefarious light if I had a Tor capability in my datacenter. Some involve confidentiality clauses in contracts, etc. If I ever have a legitamate reason to setup Tor I'll have to do so in an isolated network somewhere.

Plus there is the guy who was just busted for kiddy porn in Austria for operating an exit node.

I think Tor is cool for folks who need it, but for me the costs of Tor outweigh the benefits.
newbie
Activity: 9
Merit: 0
In other news, I think it might be a good idea to actually set up a forum for serious development talks and discussion instead of using this single thread.  I have the resources to set one up right now.

Would non-isis users be allowed to join such a forum? I'm interested in a working trade algo, too.
Definitely!

For the time being this may be a good way to track suggestions that require code change. After discussion in this thread, a specific targeted task can be put in the issues page of github. It's just a suggestion to do it this way so, yea or nay?
Or a new forum can be created as suggested by new overcomer.
Yeah this is why having a forum to discuss different tasks, changes, issues, etc in separate threads would be helpful to all instead of reading through the already 19 pages of comments etc just to find answers.  Plus it helps to segment dev discussion from questions, etc.

The most fundamental change was to switch from a polling to streaming ticker. The reason I decided to use a streaming ticker was so that it would react faster to the market. Now, when a tick is received it triggers an arbitrage thread and a trend observer thread. Each making a decision on whether to trade or not.
I agree with your logic of this, it makes more sense this way.  Like you figured, there is no better way to be as accurate.  I was mulling around in my head the other day if there was a better way to trigger buy/sell logic than to simply wait for the next incoming transaction.  I'm not sure if there is any sufficient need for a different approach though.

I think maybe we should concentrate on core functionality and algorithms first before getting fancy with GUIs and the like. I'm an old-school command line type person anyway and always favour function over form.
Yeah, same here, much more power in the command line and it sounds like daybyter has a good skill/desire for the GUI areas of development; fortunately they don't rely on each other.  Basically the GUI can just hook into the underlying engine without needing to disturb your stuff once he gets the data feeds.  Actually it's of great benefit to have people working on different areas harnessing their expertise.


So I was just reminded of something regarding the forum.  I would like to set up a TOR forum for anonymity sake but I'm not sure how familiar everyone is with this technology.  There are a lot of benefits going this route, but it can be a tad confusing at first if you're not familiar.  Please share your thoughts!!!
sr. member
Activity: 248
Merit: 250
1. Collect underpants 2. ? 3. Profit
OK, things were a bit quiet here for a while but it looks like interest has been rekindled over the past few days.

I've looked at the code again and I think implementing a simple moving average will be relatively easy. I may be proven wrong once I actually start to code it. Hopefully not.

Anyway, before writing another single line of code I'm going to do a bit of housekeeping, tidy up a few things on github and utilise the power of git a bit more.

I'll first write a better description on the project readme. What is IsisATP, what does it do, how does it do it, how is it configured etc. It might save people having to ask questions here on this forum.

I might also start stamping a version tag on it so it's easier to download specific working versions. I'll start at version 0.1.0 for where we are now. Groups of bug fixes increasing the minor version number. Minor functionality changes or additions increasing the mid version number and major changes in functionality increasing the major version number e.g. implementing a moving average will push the version to 0.2.0

I then might create a few milestones to mark where it is at now and where it is going. To give the project a few goals, goals are good!

So, bear with me, normal service will resume shortly.
sr. member
Activity: 350
Merit: 250
I see what you did there...

Thanks dude!
sr. member
Activity: 248
Merit: 250
1. Collect underpants 2. ? 3. Profit
commit 39cbd305a93dad949ede0d173933de7599e16362

    Removed deprecated --debug-live command line parameter


Self explanatory


commit 19e615923ba6e1356af02bfb25a752e0a44597a7

    Added minTickSize and maxTickAge to config file


I look forward to more configuration options in the registry (preferences file for you enlightened Linux people)

I recommend using the --clear-config option to ceate a new configuration file with these additional settings. Also, a reiminder that changes to config file settings are read on-the-fly so IsisATP does not need to be stopped if the values are tweaked.


commit 9ca26ca85989b6c370ebfa5c4f7bced9a028a57c

    Renamed TradingAgent to TrendTradingAgent


In preparation for adding a new MovingAverageTradingAgent class


sr. member
Activity: 350
Merit: 250
Thanks Aido!

I look forward to more configuration options in the registry (preferences file for you Linux pukes Shocked )

edit: have you uploaded this build yet? your github page only has one from 7 days ago...
legendary
Activity: 965
Merit: 1000
It really seems, these 2 project complement each other in some ways. I don't have a good trading code yet, but a gui and a trade site interface to connect to trade sites without any external services.
sr. member
Activity: 248
Merit: 250
1. Collect underpants 2. ? 3. Profit
@Aido: Do you want me to just push code fixes as bugs on the tracker and you can push them into the repository?

For the time being this may be a good way to track suggestions that require code change. After discussion in this thread, a specific targeted task can be put in the issues page of github. It's just a suggestion to do it this way so, yea or nay?
Or a new forum can be created as suggested by new overcomer.


so you're saying all the market connection and data streaming is coming from a different project?

Yes, I think rather than re-inventing the wheel the original developer choose to use XChange so as to get IsisATP up and running a lot faster. If the XChange project no longer suits our purpose I suppose it could be forked on github and our own requirements implemented. However, looking at the planned milestones for XChange project, the developers plan to expand the code for other exchanges:


And as mentioned previously, one of the developers is going to investigate adding code for testing and reconnecting socketIO connections which is currently an issue for IsisATP:



Just to recap on a few things and explain some of the changes I made to the original.

The most fundamental change was to switch from a polling to streaming ticker. The reason I decided to use a streaming ticker was so that it would react faster to the market. Now, when a tick is received it triggers an arbitrage thread and a trend observer thread. Each making a decision on whether to trade or not. Another upshot of this was I found that the original IsisATP was using 100% of my CPU. By changing how the threads were launched I could use the thread.join() Java method rather than the thread.yield() method of the original which apparently can have negative effects on a Linux system.

I also made some changes to the learning functionality. Originally it learned for 1 hour and cleared out any ticks older than that time. So trade decisions were based on an hour of ticks that were polled every 1 minute. The learning time was hardcoded.

Now it learns for at least 16 streamed ticks and keeps data for 2 hours. So depending on how many ticks it received in that two hours it will have more data for a 'popular' currency like dollars. By coincidence, I think this change may make it a bit easier to implement some of the SMA functionality mentioned in the previous few posts. We'll see....

I think the first step is to make these values configurable from the preferences file (or the registry for you Windows fanboys! Smiley ).

I think maybe we should concentrate on core functionality and algorithms first before getting fancy with GUIs and the like. I'm an old-school command line type person anyway and always favour function over form.
legendary
Activity: 965
Merit: 1000
In other news, I think it might be a good idea to actually set up a forum for serious development talks and discussion instead of using this single thread.  I have the resources to set one up right now.

Would non-isis users be allowed to join such a forum? I'm interested in a working trade algo, too.
newbie
Activity: 9
Merit: 0
Any suggestions for improvement?
Feel free to use the issues page on github to report any bugs or issues: https://github.com/aido/IsisATP/issues. I suppose it's a better way to track these sort of things. I see there are currently 0 issues, so the code must be perfect Smiley

...

You also mention a deadlock. Are you sure it's a deadlock causing the problem? I recently changed the Ticker Manager code to use streaming instead of polling. I think the socketIO connections could be dropping. I currently don't have any check to test and reconnect a dropped socket. I hope to add this functionality as soon as it is added to XChange:

https://github.com/timmolter/XChange/issues/6

Maybe if someone 'nudged' the developer of XChange it may encourage a speedy implementation of this functionality in his code.

When I get a chance I'll test for deadlocks also, just in case. I had already written a handy script to make it a lot easier to test for deadlocks in the original Isis code.
Well to be honest it's going to take me a little while to get my head around the project currently.  I can't just step in and know what you guys have spent months working on.  Smiley  I did notice some things that can be cleaned up nicely and quickly though which should make every ones lives easier.

I suppose you're right as I have no way of knowing until I step through the debugger to see where it's hanging whether or not it's deadlocking or just dropping connection.  I forgot this program doesn't take user input while the feed is going so 'deadlocking' may not be the best term.   .... so you're saying all the market connection and data streaming is coming from a different project?  Oh bugger, this could make life interesting if we have to start making our own fixes AND keep track with these other projects.
newbie
Activity: 9
Merit: 0
I will look at implementing something that will automatically switch algorithms based on market conditions. If market is flat or steadily trending in one direction use nomorecoins algo but if the market is volatile use the Isis' trending algo.
I was thinking the exact same thing.

I don't know if this is related or not (I'm sure our financial experts will know) but I was contemplating yesterday looking at two bands.  One a wide band looking at the entire range from low to high for X time period AND Y number of transactions.  (Four transactions in an hour has a very different impact on our math vs 4000 transactions in an hour in terms of projecting accurately.)  And a short band to look at K time period and J transactions which would look at a % above and below our SMA.  If I'm not mistaken this would help us more accurately track quick volatility and jump in on trades when someone snatches up or sells off a bunch of it quickly.


So has anyone completed a "fixed" version of this?
Hm, considering such a short window since it has been discussed, no.  There is a LOT of work to do.



In other news, I think it might be a good idea to actually set up a forum for serious development talks and discussion instead of using this single thread.  I have the resources to set one up right now.

@Aido: Do you want me to just push code fixes as bugs on the tracker and you can push them into the repository?
hero member
Activity: 854
Merit: 1000
So has anyone completed a "fixed" version of this?
legendary
Activity: 965
Merit: 1000
Yeah, I implemented this more or less the same way in my ChartAnalyzer class. But I meant the actual trading algo. I'm working with rule sets at moment to separate the trading code from the actual trade app. Would be cool to end up with a domain specific language to describe the actual trading.
legendary
Activity: 965
Merit: 1000
I wonder, if there's a way to describe a trading strategy in a system independent, more descriptive, way...
sr. member
Activity: 248
Merit: 250
1. Collect underpants 2. ? 3. Profit
I will look at implementing something that will automatically switch algorithms based on market conditions. If market is flat or steadily trending in one direction use nomorecoins algo but if the market is volatile use the Isis' trending algo.
member
Activity: 96
Merit: 10
This is actually very cool. I've been searching for a bot to do some bitcoin arbitrage and this seems to be the best option what I've found. Thanks for nomorecoin, aido and others too, who are helping for developing this. I'm going to test this very soon!
sr. member
Activity: 248
Merit: 250
1. Collect underpants 2. ? 3. Profit
Hi new overcomer,

Yeah, I think the algos need to be looked at alright. Maybe they just need a bit of tweaking rather than a total overhaul. I've been dancing around the edges of this part of the code.

Any suggestions for improvement?
Feel free to use the issues page on github to report any bugs or issues: https://github.com/aido/IsisATP/issues. I suppose it's a better way to track these sort of things. I see there are currently 0 issues, so the code must be perfect Smiley

At first I didn't understand how the original Isis arbitrage algoithm could work. It seemed the decision to trade is based solely on largest and smallest exchange rate between different currencies and BTC. On closer inspection I now think it works OK. I temporarily changed the arbitrage decision to use more complicated edge weighted directed graph and Bellman-Ford shortest path algorithms (don't be fooled by my use of these terms, I am neither coder nor mathematician; rather, Google is my friend). The end result seemed to be the same as the original algo so I quickly dropped that approach.

You also mention a deadlock. Are you sure it's a deadlock causing the problem? I recently changed the Ticker Manager code to use streaming instead of polling. I think the socketIO connections could be dropping. I currently don't have any check to test and reconnect a dropped socket. I hope to add this functionality as soon as it is added to XChange:

https://github.com/timmolter/XChange/issues/6

Maybe if someone 'nudged' the developer of XChange it may encourage a speedy implementation of this functionality in his code.

When I get a chance I'll test for deadlocks also, just in case. I had already written a handy script to make it a lot easier to test for deadlocks in the original Isis code.

newbie
Activity: 9
Merit: 0
Hello there everyone!

So I happened to run across this project you've all been working on and it looks extremely promising.  I've been running it for twenty four hours straight or so (hate to say but it's deadlocked approx 3-4 times in 24hrs - using latest Aido build).  While reading through this entire thread it seems there are some very dedicated individuals to seeing this go somewhere.  If you guys are interested I'd be happy to jump in with my developer hat to help where desired.

I did notice some confusing and strange behavior.  It seems like through all the buying and selling it's doing all it seems to manage to do is slowly lose money over time.  Is this a problem with the algorithm or the tweaking of it's variables?  I'm a developer, not an economist. Smiley  Running with arbitrage disabled, algorithm 2.
legendary
Activity: 965
Merit: 1000
Take a look at the btc-e.com website. I like their GUI a lot, so I tried to copy it in my app:



newbie
Activity: 7
Merit: 0
One thing I would love to see is a freaking GUI. I may be alone in this, but having a chart tracking the prices, and a GUI that would allow me to take over manual controls or to give up control for the different trading engines, just basically allowing me to alter the configuration on the fly, without having to manually edit the files, would be nice.
Pages:
Jump to: