Pages:
Author

Topic: RollerBot - Alpha testing begins soon! - page 10. (Read 18583 times)

full member
Activity: 238
Merit: 100
February 05, 2014, 05:18:31 AM
#6
I love the idea behind this (especially arbitrage) but is it also taking into consideration the fees for moving funds from one exchange to another?

Trade fees are always taken into consideration with any trading plugin. 
When the logic for the Arbitrage plugin is executed, it only considers opportunities where the profit is above a certain threshhold after associated buy/sell fees are taken into account (there are other things considered for arbitrage as well, such as direction of the slopes in both exchanges as well as the current price in relation to the average upper/lower variances over the last N minutes, adjusting order quantity so that it respects you max_spend_percent setting as well as taking into consideration whether both exchanges have enough of the appropriate funds to pull off the arbitrage)

As far as transfer fees, they are are not put into consideration - mainly because they don't need to be.  When market conditions are right for arbitrage, a buy order is placed in one exchange and a sell order is placed in another.  You keep the profit from the difference of the buy/sell price.  Also, in practice i have found that the direction of the trade will naturally cycle back and forth between exchanges, eliminating the need to actually transfer funds back to the original accounts.  During one-sided times, it is not uncommon for most of your holdings in a specific currency to all end up at one exchange, but over time they almost always seem to find their way back just through natural trading.

In the event that funds don't find their way back naturally, I have an answer for that as well.  I'm currently testing a "mock transfer" plugin, who's responsibility it is to keep fund distribution even across the exchanges.  It simulates transfers by basically running a modified instance of the arbitrage plugin it's self - looking for opportunities to buy in one exchange and sell in another - with the difference being that instead of looking for a minimum profit, it shoots for a zero profit/loss when possible, up to a minimal loss if you have one set ("transfer fee").

Hopefully this answers your question.  Thanks for stopping in
sr. member
Activity: 350
Merit: 250
February 05, 2014, 01:31:51 AM
#5
I love the idea behind this (especially arbitrage) but is it also taking into consideration the fees for moving funds from one exchange to another?
full member
Activity: 238
Merit: 100
February 04, 2014, 07:16:15 PM
#4
More good news.

I played around with the HHVM JIT compiler/runtime today (developed by and used by Facebook for the sole purpose of speeding up PHP code execution to be nearly on the level of compiled C/C++ code).
Early results are simply awesome, with a nearly 8-fold speed increase.  I will be moving RollerBot to HHVM in march when the mysqli extension is fully supported.  This very fast bot is going to get a turbo mode very soon!
full member
Activity: 238
Merit: 100
February 04, 2014, 12:51:49 PM
#3
Added Bitstamp and C-Cex support today (both still need testing after I send some funds to each of these).  This makes for 10 exchanges now fully supported
full member
Activity: 238
Merit: 100
February 03, 2014, 10:49:06 PM
#2
I just fired RollerBot back up after my architecture changes.  Just to give an idea of how things are right now:
I turned the bot back on and within the first hour 4 trades were initiated. Again, the twitter feed is https://twitter.com/RollerbotFeed

Here are a couple of pictures.  One of the output from the Arbitrage plugin, one of the output from the Variance plugin, and a quick screen grab of the push notifications on my Android phone.









If you look closely, you'll see that it only takes each plugin a few seconds to execute!  The arbitrage and variance plugins intentionally sleep to put the frequency at 10-second intervals just to slow things down.  This excellent speed is mainly due to the API cache daemons that do the heavy lifting in the background with the various exchange API's.  Historical data is saved in the database, so if I need to look back for trending, I don't have to do a bunch of complex API calls, I can simply call results up nearly instantaneously from the backend.  In my early testing, I had 10 instances of the arbitrage plugin running, along with 10 instances of the variance plugin running simultaneously without lagging down the system.  Anyone who has had to try to fetch massive amounts of data quickly via API calls will tell you how long it can take - in these screenshots you can see Rollerbot retrieving all the info it needs from multiple exchanges and markets in mere seconds.  Soon I will make a recording so it can be truly be understood just how fast this system is.
full member
Activity: 238
Merit: 100
February 03, 2014, 08:17:08 PM
#1

    Hello

    I have written what I think is the most advanced trading bot available anywhere for Bitcoins and Altcoins.  While it is still in the early stages, it has already shown enormous success in my own personal testing.  
    I am now at the point where I will be needing alpha and beta testers to get valuable feedback and thoroughly test the features and operation of RollerBot.

    With that out of the way,  
Let me tell you what differentiates RollerBot from every other bot that I could find.  Keeping in mind that I am in early stages, RollerBot already supports many features that traders have been waiting for over a year with other commercial bots.  Here are the current features (with many more on the way):

  • RollerBot was designed from the ground up as a completely abstracted system.  In layman's terms, exchange logic is abstracted from trade logic.  RollerBot doesn't need special instructions to handle different exchanges, different trade pairs, etc.  Logic is executed the same regardless of the exchange or currency used.  This isn't an amateurish attempt to commercialize an open-source bot or implement some algorythm that I read about in a post.
  • Rollerbot will be running on an enterprise-level infrastructure that will ensure scalability, uptime and processing power is never an issue.  Rollerbot will be running on the Amazon EC2 elastic web, just like major companies like Netflix do.
  • RollerBot currently supports MtGox, BTC-e, Bter, Cryptsy, Crypto-Trade, Coins-e, CoinEx, Bitstamp, C-Cex.io, Bittrex, Poloniex and Vircurex. I have current plans of adding OKCoin, BTCChina, LiteTree, Cryptonit, McxNow, Kraken, and The Rock Trading Ltd. (As well as any other exchange that exposes a full trading API). These are actually very easy to implement because of the level of abstraction provided by Rollerbot's platform.
  • Because of the level of abstraction, and because adding an exchange does not affect other logic, new additions cannot break the trading logic already implemented. No special cases need to be programmed when new exchanges are added.  Nobody wants to sacrifice stability and reliability at the expense of new features, and Rollerbot was designed with exactly this in mind.
  • RollerBot uses a full MySQL backend and keeps full trade records of all pairs being traded at all exchanges.  I do not rely on external services to provide information!  This is also part of what allows Rollerbot to run multiple trade plugins simultaneously without them stomping on eachother's feet.  Mark my words, other bot authors will see this and try to implement running multiple trading algorithms side-byside and learn the hard way that it's an insanely complex thing to do! (I.e. what happens when another algorithm loses funds that would be needed to complete the sell end of an EMA order?) Luckily, this is all managed automatically behind-the-scenes with Rollerbot!
  • RollerBot uses a very advanced API daemon cache system that always has the freshest data from available exchanges.  Furthering that, it has an intelligent retry and throttling system to deal with API's that get flaky during peak throughput.  Rollerbot's API calls are threaded and run in parallel, spreading the load to API providers and ensuring that their query limits aren't exceeded.  This keeps us off the naughty list - I have yet to have my requests rejected from abusing an API provider's service.
  • I created the settings engine ground-up specifically for RollerBot.  While this may seem minor, it's a major feature that must be seen to be fully appreciated.  Want to treat the DOGE-BTC market differently in CoinEx vs. Vircurex?  No problem!  Have a feature request to implement a new setting?  Easy - I simply add it to the database and it's done - I don't need to change plugin code or add logic to the UI, it's automatically handled.There is full control over pretty much every aspect of Rollerbot!
  • RollerBot itself is not actually a bot at all.  It is a thoroughly though-out trading platform architecture which integrates data aggregation, messaging, plugin capabilities and powerful database functionality.  The trading bot portion of RollerBot is actually provided by individual bot plugins.  Want to run an Arbitrage trading plugin alongside a Variance trading plugin, along with an EMA plugin?  No problem, the settings engine and plugin architecture allow you to diversify however you want to.
  • Speaking of diversification..  Run different combinations of plugins on different exchanges (and even different accounts within each exchange)..  A high-risk account, along with a low-risk account, along with  anything else you can think of in between.  The level of abstraction offered by RollerBot is simply unmatched anywhere.  The amount of diversity can really help mitigate risk, and the fact that so many exchanges are supported helps to protect in the unfortunate event that an exchange is hacked (losses would be at least minimized)
  • As I already implied, RollerBot supports any currency pair offered by an exchange.  This isn't magic or a bunch of hackery, it's the simple result of having a correctly abstracted architecture for this type of task.  In fact, many of the supported exchanges will automatically pick up newly added currency pairs (if the API in question has methods to get a list of current pairs.  In cases where the API doesn't expose this, it can easily be added through the settings engine). Virtual currency, fiat currency, foreign or domestic - it simply doesn't matter.  With Rollerbot's level of abstraction, it is all simply currency and handled the same regardless.  In fact, nowhere in Rollerbot's code would you find "If($currency=='BTC')" or any similar (which would be horrible programming practice - shame on any bot author using such hacks in their code!).  Rollerbot simply knows if a chunk of data is currency, knows if it's virtual or fiat and knows it's role in the current market.  I can't stress enough that Rollerbot is not just another hackjob bot, this is a fully OOP compliant that has been abstracted and encapsulated in accordance with the best practices in the industry.
  • While incomplete, RollerBot has significant time and effort already poured into it.  Quickly approaching 50,000 lines of hand-written code (NOT including external libraries!)
  • RollerBot has a complete notification system capable of emails, tweets, and push notifications to iPhone and Android devices.  No need to stare at a screen all day, you can be notified when a trade is initiated, when one end of a trade goes through and when actual profit is made.  Automated daily reports ensure that you are always aware of your investments.
  • RollerBot automatically takes trade fees into account.  Rollerbot does not place a trade hoping that it grows enough to offset trade fees - it already knows where these points are when the trade is placed.  Want to pull out of a trade with 0 profit/loss?  Easy, RollerBot will do the math and make it happen.  I have written a full library just for accurate calculation of profit against price or quantity of any trade type.  This also make for very accurate STOPS (having very finite control over controllable losses)
  • Full profit allocation system.  What does this mean?  You can choose to try to build the primary currency, secondary currency or split between them at any arbitrary percentage. For example, if you are trading LTC-BTC, you can choose to take full profits as LTC, full profits as BTC, or split somewhere in between.  This is a good way to slowly grow your individual holdings as your accounts grow.  This is in contrast to most other bots, which should be better classified as leveraged sell-off bots.  With most bots, you earn USD while at the same time decreasing your BTC holdings.  Here is a news flash:  this is called "Selling your coins".  Rollerbot is different..  It's for those that believe in Crypto-currency and want to increase their investment, not sell it off! (Though, nothing is stopping you from configuring a plugin to take profits in fiat if that's what you want)
  • Rollerbot is a fully hosted web solution.  There is nothing to download, and you don't have to run anything on your own computer.  Most people don't realize it, but running a computer full time to run a bot can easily cost $30-$40 per month in electricity costs.  Not with rollerbot!  You won't have to worry about electricity costs, crashes or maintaining a machine to protect your investments.
  • Rollerbot is developed with and executed with leading industry standards.  This isn't a browser plugin - this is a world-class project that leverages some of the best technologies available!

The list is currently pretty impressive, but I do have a long way to go with RollerBot.  As of now, it only has a CLI interface accessible over SSH (no fancy web interface).  This is both good and bad - SSH adds a huge layer of security, while at the same time not being as user-friendly as a flashy GUI.  Of course, all hooks are in place to add a Web GUI, but it has been very low on the priority list.  In fact, I'm waiting for the beta testing group to give feedback, as I have a hunch that a lot of people will really like the appeal of such a simple, clean interface.

Now for some "Pros and Cons":

PRO:
- I am a single developer.  As such I have full decision making power and know the code base like the back of my hand.  You will never hear from me "Let me check with the developer to see if it's possible..."
- RollerBot already has more features than all other commercial bots combined (and then some)
- I am a relational database expert. Having this relational database experience has given me a huge advantage in abstracting RollerBot the way that it has been.  This leads to a stable codebase, faster integration of features, and endless possibilities for the future.
- In the two available trading plugins now (EMA, Arbitrage and Variance), Rollerbot has had about a 90% success rate in placing profitable trades (this is no lie.  Trades made during testing were actually tweeted live as they happened. See https://twitter.com/RollerbotFeed). I openly challenge anyone to prove that I've deliberately misled anyone or made up claims about trade profitability. I will NEVER make claims based on backtesting (because it is inherently inaccurate).  I will only make claims based on actual performance of Rollerbot.
- While I'm not a big name in the Bitcoin community, I have been around for a while.  I also authored SmartCoin https://code.google.com/p/smartcoin/, a miner load balancing system that was pretty popular early on with Bitcoin.  Smartcoin code can be evaluated by anyone that wants to see my credentials as an experienced programmer.
- Simply put, RollerBot offers features that you just can't find anywhere else, and are unlikely to anytime in the future.

CON:
- No fancy GUI.  Interaction happens over SSH to a linux server running RollerBot.  I understand that this can be a turn-off for some people.
- I am a single developer (heard that one already huh?).  Just as it is a pro, it has it's cons too.  I can only develop so fast.  I also have a family and a full time job.  Just disclosing this to be fully transparent. Oddly enough, my development pace puts the development pace of other bots to shame.  I've supported features after my first week of programming that most bots have been working for the last year to implement!
- Still in early stages - I have many plugins to implement and plenty of testing to do.
- CLOSED!  I will not open the source to RollerBot.  I'm coming on 2 months of working on this for every single waking hour of every single day since starting this project.  Some days have been 16-20 hours straight coding, and there has not been a single day that I haven't spent at least 8 hours working on RollerBot.  Aside from that, the architecture is so radically different than anything else available that I don't want "competition" to even see the magic behind the works.  It is the biggest single thing that puts RollerBot in an entirely different league than anything else.
- COST -  While I'm open to suggestions, I do have a good idea of a few pricing models that will probably be supported.  Because of the full feature set, and because of the effectiveness - Rollerbot will come in at the premium end of pricepoints (Believe me, paying for an Amazon cloud infrastructure is not cheap!  This isn't some small shared or even dedicated server).  However, because of the profitability of Rollerbot, it will actually be a great value.  More on this to come...
- I have not yet implemented a backtester or full simulation trading.  I've actually done most of my testing live in the market with my own money.  I may get some flack for this, but the more I think about it, the more that I don't even want to implement one.  While I can talk about this for hours, I'll at least give a few examples why...  First of all, backtesting is very very inaccurate.  Assumptions are made that every trade you place goes through.  In real life, by the time the data is collected, a decision is made and the order is submitted - the current trade price has moved enough that the order would become stale and not execute when expected.  Secondly, backtesting doesn't and cant simulate how your own orders will impact the market.  When an order is placed, it will have an impact on the market (in line with it's volume usually).  This can be compounded, as when you get multiple people trading with bots the impact becomes even more significant.  Backtesting simply can't account for this.  I simply don't want someone to backtest a certain strategy, gain false confidence and then lose on their investment just because a backtesting algorithm told them it was a good idea.  I may revisit this in the future, but as of now I'm pretty certain that I'm not going to waste my time on something with such little added value.


Current Status: (last updated 3-1-2014)
Currently adding support for more exchanges.

Thanks to any who provide feedback!


[/list]
Pages:
Jump to: