I've exported the cert from mtgox but I dunno what to do with it or how to install it.
I used keytool as outlined here (http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html?) to try and load it but to no avail...When I exported it it was saved as "www.mtgox.com" which i renamed as mtgox.cer and used "java keytool -import -alias gox -file mtgox.cer" but i get "Error: could not find or load main class". I've been doing everything from a command prompt in win7, should I be using some java distro or something instead?
can anybody detail exactly what cert(s) are needed? daybyter was nice enough to link me some guides that explained the installation process but I'm still not clear on the process. If anybody could share an example of the code needed w/ one of the certs it'd be greatly appreciated. I'm really not at all familiar with java but if I have the codes/certs i think i can follow easily enough. I tried saving: http://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java as a .jar and running it from command prompt but clearly I don't know what the hell i'm doing
I haven't tried using btc-e yet but I imagine I'll run into the same problem right? Are there any other specific certs I need for btc-e?
I know i've asked alot of questions but if anybody can even answer one of them i'd really appreciate it, thanks.
I've been up all night babysitting the ATP. Gonna push a commit in the morning, lots of little changes things I'm surprised I didn't notice before mostly related to the arbi engine. I'm going to gut the code to move us off market orders and instead use the orderbook and limit orders to do the trading. It will be more cross exchange friendly and frankly I'm down $20 on the conservative algo and $10 on the risky algo?? Arbitrage made a bit, but then got to smoking something and started buying zlotkies and things that have no liquidity. It's going to need a rethink too.
btc-e uses thawte they're recognized so no worries there. google how to install a new ca chain
wooo! wish i tried btc-e sooner on it. I'd still like to get gox going so I can take advantage of arbitrage (guess i could use bitstamp or something but gox generally seems to be highest). I'm sure i'll figure out the certs sooner or later, i think I have most of it figured out---to anyone else stuck on this, I found this link to be the most useful so far: http://www.opentox.org/tutorials/q-edit/how-to-install-ssl-certificates
Not sure if I'll have to install a cert for each error message I got or if I just need a single one from gox but I think I'll figure it out. Thanks to those who've offered help.
PS
Perhaps this thread should be restarted as AidoATP? I've gone through all 30 pages here way too many times for bits and pieces of information. Just a thought since the platform now seems like its getting off the ground all and all and now discussions seem to be more regarding the fine tuning seems more to be logic oriented than structural.
I'm thinking this product is going to need it's own website in the near future. The OpenPay version is going to be called just ATP, not to cut Aido out but to distinguish it so people don't get confused. I plan to take it to the point it works reliably and then open it up to the broader community. Fortunately I'm now at a spot in life again where I can do that.
Now as to the cert. If your cert came down as www.mtgox.com you grabbed the wrong cert. You need to grab the cert from the TOP of the certificate authority chain. The exact directions I followed myself are here... http://codebistro.com/2010/03/25/adding-cacert-to-the-java-trusted-store
For firefox you click on the lock icon, go to "view certificate", click "details". Then you will see the ca cert at the top of the list that's the one you want it won't be MtGox it will be StartCom or whatever. Select that one then click export. Then follow the directions for your platform for installing a new Certificate Authority cert. In windows remember that you need to do this from a command line and you need to do it with a command shell elevated to administrator (type cmd, right click select "run as administrator"). For linux you will need su or sudo and I'm guessing it's similar for OSX.
You'll know you made a mistake if you get a "file access error" from the keytool command.
Sorry it's so complicated. We may be able to package the CA cert as a resource and just have a "first run" state that must be run as root for setting this part up. Again I'm only doing that if we decide to roll a proper installer.
BTW Aido, that section that was messed up is not your fault, it's mine. I recognize my own code style there, I'm just shaking my head in disbelief that I didn't notice it earlier. I know better and I would have caught something like that in a code review.
It would be a very good idea as we refactor to create a series of unit tests to validate the complete state of the application. Also things like trade blocking should be set at the application level from here on out and the application should be refactored to be a bit more like a state machine. I'm working out in my head the changes I plan to make to this, but it will happen in phases. There won't be any instances where we throw the baby out with the bathwater anymore.
Ok, so back to the new design. I think the idea of programmable logic is an admirable idea, but when someone is just setting up for the first time, there needs to be a logical set of defaults included. In my fork, I've set the default logic to be VWAPCross, not because I believe it is in any way inherently better, but because it's the simplest and easiest to understand. Last trade was below vwap we buy, above vwap we sell. As it stands now if you don't put anything into the bid/ask logic fields it spits out a nasty stack trace and does nothing. I've fixed that in my branch, but it's refusing to let me commit at the moment. I'm sort of at a loss on that one and will try to massage it a bit tomorrow.
After we refactor to use the order book and limit orders, the next step will be to add in a proper AI. Right now, all we are using are algorithmic traders. The AI will be optional and until it's trained with a few weeks of data it runs a very real risk of making very expensive mistakes. However it's "learning profile" is a stored data set that can be downloaded and updated regularly with new market information.
Because it will attempt to predict the market direction, it will necessarily be significantly different than the algo traders we have now.
The AI is a predictive DSP with a genetic algorithm based on a project I wrote a few years back for a company that couldn't afford downtime (downtime meant lives lost not just dollars). The AI would watch all systems globally and learn about which systems were failing. At first it just watches everything and reports failures, then it begins to make predictions and give each prediction a weight based on if it comes true or not. Eventually the strongest predictions survive and the weakest ones die out.
The goal here was to compile an alert of probabilities and send it as far in advance as possible.
The longer it runs the smarter it gets. With a failure rate of 1 machine per day it could predict up to 4 hours in advance with 90% certainty.
I've been running it against MtGox since I first created the Isis-ATP project and it's a bit novel in that it can deduce the lump sum direction of the algorithmic traders at play (after all that's what a DSP does it isolates signals from noise).
Since January it's been showing that the pricing structure is actually being supported by VWAPCross and someone somewhere appears to be running a stochastic oscillator and that someone has some serious dollars. That's pretty much all the bots and it accounts for over 80% of the trading activity. The remaining is human traders (random noise tends to be from human activity).
This is MtGox data only. I haven't tried it against any other exchange and the DDOS attacks a few weeks ago gave the poor thing brain damage for lack of a better word. I'm not sure how to reconcile the dataset so I'll start a new profile when I integrate it.
I will also be adding an internal wallet and a configurable "sweep" to allow you to get your profits out daily and still keep enough on hand for expected volume.
Finally I will also be adding peer to peer mode to allow nodes to specialize in exchanges and share resources.
If that doesn't make a lot of sense imagine this...
There is a significant arbitrage opportunity between btc-e & mtgox on BTC right now. You can buy bitcoins cheaper on BTC-e and sell them for more on MtGox (feel free to check this).
Each node can be configured to specialize in a particular exchange and this is where the bulk of it's money is at.
If we can predict the size and length of an arbitrage opportunity we can do the buying and selling individually and settle up the profits later. This obviously only works if you are working with close friends and people you know. But the fact is this can work in the right circumstances.
Imagine if I had $5000 USD on BTC-e and Aido (sorry you're volunteered), has a few hundred BTC on MtGox. I can authorize my machine to spend the $5000 USD into BTC on BTC-e and Aido can authorize his machine to spend the BTC on MtGox into USD. I am effectively lending him my USD while he in turn is loaning me his BTC.
Once the arbitrage window is over (or we run out of cash), then we settle and split the profits.
Obviously this system would require trust which is scare in the bitcoin community, but if the transactions were small enough and there were enough people running it and we added a "confidence" ranking of some sort based on previous interactions, this thing has real potential to make serious money for anyone who cares to participate while not requiring everyone to have a hundred thousand accounts everywhere to try and keep track of.
It's optional and will be default disabled, but just be aware this is one really easy way to run arbitrage without so much risk from window expiry.
Hope you guys find it exciting. There is quite a bit of work to do here, but I think it will all be worth it in the end.