Pages:
Author

Topic: PROFITS - ATPx [Automated Trading Platform eXtended] - page 4. (Read 7655 times)

full member
Activity: 140
Merit: 101
The darknet seems a good idea

But my question is

If you have no friends, or you simply dont trust anyone  then can you run multi Instances of this software to get the same goal

Or just configure multiple exchanges yourself?


Yes you can still run solo on a single exchange and you can also run your own darknet and arbitrage multiple exchanges.
You can do it as multiple instances, or a single instance, it's your decision.
It's not the preferred method, because we would like you to participate in the ExpressNET OTC board, but it is designed to still do the same things the original ATP was.
full member
Activity: 140
Merit: 101
I'll be setting up the system with pure crypto to crypto exchanging in the next few days.
The darknet option will be temporarily disabled, trustscore will default to 1 (0 is untrusted, 10 is fully trusted).
The system is setup to directly feed the ticker data from BTC-e into the primary channel and treat it as actual offers.
It will attempt to order match and clear transactions immediately, then it will attempt to refund each transaction within an hour during the testing period.
Trustscore gains (and losses) will carry over from testing to live.

Out the gate I'll be supporting BTC/LTC as the first pair on this and will introduce other currencies as the modules for them become ready.
Since I'm using the RPC API for BTC & LTC and I suspect other currencies use the same/similar API, are there any requests for other wallets?

Ok it's probably time to explain trustscore.

Trustscore is our way of tracking credibility.
Every time a transaction is agreed to by two nodes, a hash of the transaction is generated and signed by both nodes.
This information contains the publickeys of both sides and the currencies to each side but not the amounts.
This is signed and broadcast to the network and kept by all nodes.

It looks something like
Code:
UTC Timestamp
BTC|sender|recipient
LTC|sender|recipient
TXHASH
SIGHASH1 (timestamp+line1+line2)
SIGHASH2 (timestamp+line1+line2)

Once broadcast, each party to the transaction gets 1 credit.

Credits are valid for 1 year then they expire out, that way no one needs to have gigs of trustscore blocks on hand.
Trustscore goes up logarithmically, from 0 to 1 takes 10 transactions, from 1 to 2 takes 100 etc.
Trustscore gains are limited to no more than 1 point gained rolling 7 day period regardless of the number of transactions performed.

Also the time the last transaction was performed factors into it.  
If you go 1 week without any transactions your trustscore drops an entire point for each week of inactivity, but this can be gained back after 7 days of daily activity.

If either node has a problem with the transaction (for instance once side fails to live up to their end) a "dispute" is notated by referencing the previous hash and announcing it as a dispute to the network, where it is added to the rest of the trustchain.
Code:
timestamp
TXHASH
recipientID
SIGHASH
Disputes stay on the record for 1 year and they drag you down to the next lowest trust point.  
Thus if you were a 3 and you get a dispute you are now a 2.
In this instance 900 credits would be essentially wiped out for 1 dispute.
To negate the risk of bad actors, only 1 dispute can be lodged per trading pair.  
It is expected that if you have a dispute that you stop trading with that node, the client implements this behaviour by default but it can be overridden.

A dispute affects both equally in that it drags them both down by a whole point, this ensures that only disputes which are "worthwhile" will be reported.
There is no dispute resolution method, once filed it's there for a year.  
The default settings prevent the client from trading with a node that has a dispute open in the last 30 day rolling period, however existing relationships are not directly effected, just the risk model.

Now here is how the client implements risk modelling.
The trustscore translates directly into a percentage of assets at risk.  0 is completely untrusted, 1 is 1%, 2 is 2% etc.
It will cap at 10%, thus at no time is a trade to go through for more than 10% of liquid assets.
This can be overridden in the configuration and settings panel.  In fact for someone to get to 10 they would have to have 10,000,000,000 successful transactions with no disputes, so it can be considered safe.

In the next version trustscore will be broken out by currency pair and settlement method which will be much more informative, but right now we have a single combined score.

That's it for now folks.
PM me if you want access during the testing period.

member
Activity: 101
Merit: 10
The darknet seems a good idea

But my question is

If you have no friends, or you simply dont trust anyone  then can you run multi Instances of this software to get the same goal

Or just configure multiple exchanges yourself?




member
Activity: 101
Merit: 10
Yes. I would like to read this post a few times more to get my head around it

But excited

hero member
Activity: 882
Merit: 501
Ching-Chang;Ding-Dong
Still standing by to help test!
full member
Activity: 140
Merit: 101
Ok so the time has come to discuss the peer to peer networking aspects of this application.

I was originally going to use a system similar to bitmessage where an anonymous encrypted message is passed around from machine to machine, each machine making an attempt to decrypt the message.  Obviously if you can decrypt the message then it must be meant for you.

While that's a nice idea, the system load at scale is horrific.  Bitmessage drains my laptop from a fullcharge to 0 in less than 30 mins.  I normally get 4 hours of regular use on a charge.  Also I simulated it and realized that all it would take is someone flooding the system with junk messages and the entire network could be denied.  Thus routing in this method is not optimal for our particular situation.  I still love bitmessage, it's just not the right tool for what we're accomplishing here.

So here is the solution I've worked up and what will be in the v1 when it's released.

The basic trading principle is one of aggregation and diffusion or put another way, scatter & gather.
There is a common channel where broadcast messages (trades) are sent to all highly connected peers by other highly connected peers.
A trade request enters the broadcast channel and is diffused into a series of smaller trade requests through a collection of closed loop tightly connected peers (called a peernet).
The peers in a peernet quickly work amongst themselves to attempt to facilitate as much of the trade as possible by matching their own internal resources against the trade. If the trade matches some threshold that is set on a per peer basis (by it's owner) then the peer produces a partial match.
These smaller partial trades are aggregated by the primary node and presented to the channel as a match.
The two primary match nodes then communicate directly to find a settlement option that works for both of them and then they perform settlement according to the agreed upon rules.

Here is an example.
I am connected to MtGox & BTC-e, my bot notices a $10 descrepancy and wants to arbitrage that for as long as the window remains open.
I have 100BTC and $500USD.  My bot directly arbitrages the trade within it's own darknet but sees that the window is still open.
My trading window has netted me 150BTC and I now have $0 USD to purchase more.

My bot would make an announcement (to it's peer controller, more on that later) of 150BTC@USD:BO:SEPA|OKPAY|PAYPAL|DWOLLA|ACH (BO is best offer, the others are proposed settlement methods in order of preference).
This is carried onto the primary channel where it is picked up by 4 primary nodes and diffused/scattered to 40 secondary nodes.

The first node is connected to SEPA, the second through OKPAY etc.(They could be multiconnected, but for now let's assume a single node/settlement method).
Rather than any single node taking the full risk of the transaction, each secondary node comes back to it's primary node with a partial match according to it's own internal rules.

Node1, subnode 1 matches 1BTC@110USD:SEPA, subnode 2 matches [email protected]:SEPA etc.  For a total of 40BTC@105USD:SEPA
Node2, subnode 1 matches 1BTC@117USD:OKPAY, subnode 2 matches [email protected]:OKPAY etc for a total of 90BTC@110USD:OKPAY
...

This goes on until 150BTC have been matched.
My node then presents settlement instructions to the primary nodes directly.  My node then sends the offered BTC to each primary node.  The primary nodes perform the fulfillment and distribute the BTC to their secondary nodes and settle according to their own negotiated rules.

Obviously there is a bit of trust involved here.  However there are rules in place to prevent a node from becoming a primary node if it has trouble with fulfillment, furthermore each primary node is in charge of rating it's secondary nodes to the network.  I call this trustnet and it's something I'll get into in another post, but I sort of touched upon it before.

Now as to the network itself...
When the application is launched for the very first time it will generate a UUID and an encryption certificate.

It will join 4 or 5 IRC servers on a specific channel, let's say #expressnet
Unless you have selected the darknet option and put in your friends UUIDs, once joined, it will poll a list of all nodes (clients) sitting on that channel and perform a DCC offer to each client currently sitting there. 
For our purposes a peernet and a darknet are essentially the same thing. 
The difference is that a darknet is a "pre-authorized" peernet, for instance you and a group of close friends would constitute a darknet.
It's a self agreed network operating to the exclusion of others, it is "dark" to the outside world.
In the trustnet setting, a darknet node is automatically given a trustscore that you assign.  If you fully control it you may as well assign it a 10.

A good example for using a darknet might be someone with nodes located close to each major exchange who just wants to create a network directly between those nodes for the purposes of direct arbitrage.  Personally I would see this option being used as a way of becoming a "major player" on the expressnet, due to the highspeed interconnects and direct connection to sources of liquidity, but I digress.

If you've selected the darknet option, it will only poll for pre-authorized UUIDs and only communicate with those pre-authed IDs.
(There is a mixed dark/open option too, but it's waiting on the trustnet implementation which will be a few more days before I can talk about in depth).

Back to the implementation details...

A DCC roundtrip time will be calculated between every node.
A new client will then sort the nodes into an array ordered by roundtrip time.
The default nodelist size is currently 12, but that number is configurable. 
On a quad core that's probably the max you want, with about +2 nodes per additional core if your machine is going to be fully dedicated to this task. 
If this machine won't be fully dedicated to trading, I recommend cutting that size in half.  Eventually I'll put in a self optimizing algorithm, but for now this is what we've got.

DCC is a direct connection and it is setup between two peers, bypassing the IRC server once the connection has been established.
It is beneficial to use this method rather than rolling our own because most firewalls and routers understand it and will co-operate, there is therefore no need to try and explain ports and configuration which frankly is more of a headache than it's worth.
 
However it's unencrypted and none of the libraries I could find knew how to use  transport layer encryption without puking in the event of a self signed cert.
Therefore we will need to implement a TLS style, Diffie Helman key-exchange and secure the message body itself while in transit.

This will produce a series of loosely connected closed loop peernets (or darknets) that are great for high speed clearing between themselves, but will suck for long range message traversal.  Obviously messages under this scheme will come in, but they won't come out.

For most purposes this is what we want, we want to trade frequently with people in close physical proximity to ourselves.
However there are two classes of message, standard and broadcast.
Standard messages are internal control and prep signaling, essentially the system is going to try and aggregate multiple smaller trades in the closed loop peernets.
It will also work in the reverse, that is to say if a big offer is detected, it's going to try and fulfill it by diffusing it through the local darknet and presenting it as a single completed trade to the network.  (darknet & peernet are interchangeable here).

Broadcast messages are reserved for the big trades.

To correct for this, one peernet node will remain in channel and when it receives a broadcast message it hasn't seen before and cannot be completed internally, it will relay the unfulfilled portion back on to IRC, exactly once (ideally aggregated with other internal offers that cannot be fulfilled internally).

Only one node per peernet will be given voice or authority to speak on behalf of the peernet.  This is to limit inchannel traffic to only large trades that cannot be diffused or aggregated through a local peernet.
 
It will be enforced at least in the beginning by a bot operator that will set the voice attribute only on peers that have been particularly long lived on the channel.
Note that everything I've described above is extremely similar to how bitcoin does peer discovery, except that it doesn't do the voice exit to IRC option.

I hope this is exciting and I'm posting it here to invite feedback.  It is mostly code complete, however if anyone sees a significant problem with it, I would be glad to take it into consideration, I'm open to suggestions here.

Enjoy!
full member
Activity: 140
Merit: 101
Sounds very cool...

I use Swing for my app but also added a server mode, that should be controlled by a mobile app at some point.


Yes swing was my first choice too.  However as I was about to try may hand at yet another layout using netbeans I stumbled upon JavaFX and realized it gives all the power of swing with the flexibility and clean separation of view and controller that would be needed to allow a modding community to spring up around this thing.

One of my primary goals is to allow a healthy ecosystem to crop up around this.  The modding community can be a powerful force.
Power users should be able to mod their UI's how they see fit. 
People who want to mod semi-pro or even pro can do so with a minimal amount of hassle, just ship out a zip with their new skin and layout and *poof* brand new app.
The system is designed to actively look for a new "primaryui.zip" file in the working directory and load that at run time.

All the while compatibility is maintained and hostile forks are at least somewhat prevented Smiley

I do like that JavaFX now runs on Android and iOS so you'll (in theory) be able to run the same app on your desktop or phone to control your traders.
member
Activity: 101
Merit: 10
Very excited with all the news
Thank you for updates

legendary
Activity: 965
Merit: 1000
Sounds very cool...

I use Swing for my app but also added a server mode, that should be controlled by a mobile app at some point.
full member
Activity: 140
Merit: 101
At this point I'm taking a break from the engine for a couple of days and working on the UI from a "view first" perspective.
Originally I was going to create the UI as Java swing application, or possibly a webapp of some sort running on top on an osgi container.

I've discovered javaFX and FXML and I think it's perfect for what we're doing here.
Now if you want a new UI all you have to do is draw it using JavaFX scene builder, set the controller class and then set the onAction methods to match those from the controller class.
This approach also allows you to control the look and feel via combination of XML and css files.

You can also create your own controllers if you're feeling handy with Java.  
Finally I'm binding the Javascript engine directly to the main controller classes so you can create and extend controllers using javascript.
This should give new users simplicity while allowing power users (and modders who want to profit from mods) ultimate flexibility.

The overall goal being to allow you to make the UI whatever you want it to be.
Just wanted to give an update on the progress, I'll post some screenshots soon.
full member
Activity: 140
Merit: 101
Ok guys, good news and bad news.  The bad news is that I've been away for a bit. I am now finishing up a document for someone else and then I have 1 month with
nothing but 80 hour weeks on this particular project.

Still, I've been away for a bit and haven't had a chance to code since my last post on the topic.  Which is why you have not seen commits on the repo yet, because I don't want to commit something that is only partially functional.

Now for the really good news.  
I have decided to take this month and devote myself exclusively to this project.  In the meantime I am changing both the direction and the focus of the project.  I know I said before that I don't want to get married to this project.  However recent events have forced me to reconsider that position.

To that end I have taken on a partner who is securing long term funding for this project and together, will be building a company to keep this thing alive and breathing.  
The company will of course be seeking talented developers (yes Aido this means you if you've got the time, same with anyone else who was daring enough to try their hand at a fork.)  

Coming soon will be a website with a community forum where anyone can participate.

Having a company also means that there will be a few licensing models in place.  

A free and open GPL community edition with entirely FOSS modules will be the main emphasis.

We want to create a healthy and competitive ecosystem here around both the product and the underlaying network.  To that end the API and the network protocol will be open, people who wish to make their own modules or even competing products available, whether they are FOSS or some other license will be free to do so and can even have their own forum section upon request.  (Think bitcointalk devoted to p2p exchange products using a common network rather than a common coin).

There will be no "enterprise" edition or anything silly like that.  Because of this, everything we do with the exception of custom work will always be open.

Nevertheless, besides the FOSS model, there will also be 2 subscription models available.
These are support models.  One grants you "early access" to the newest source code and modules before anyone else.
Bug and security fixes are to be immediately backported, so early access really is to give a temporary monopoly for new features only.
FYI the exclusivity period on new modules will typically be quarterly, eventually all new modules which were not custom developed (i.e. paid for by an individual or business) will become part of the open source collection.

There will also be a personalized support subscription to address specific problems or requirements you may have.  
Regardless of the choice.  
The cost of licensing is expected to be very minimal, we are considering a flat fee or a percentage model, and may choose to make both available.
However those who subscribe to both subscriber classes will also get the aforementioned AI module to play with.

The business will fund itself on custom module development, the subscriptions are mostly intended to recoup development and support costs.
This means we will maintain a free open-source core project and a a collection of open source modules to meet general needs (90% of you will never need anything else).

Now understand that this means there is a material project change to deal with.

Out the gate, the focus of the project will be on peer to peer exchange.  
There is too much happening in the world right now to try and focus on any single outside exchange and the more I think about it, the more I realize that these exchanges are both a means to an end, and to some extent a pinch point.  I feel that in their present capacity as the sole gatekeepers they present a serious danger to the bitcoin community.  Looking at how exchanges come and go, it would be good to be able to still participate, without taking a chance at losing your a$$ets.  Thus the renewed focus on whispernet p2p (which may be getting a new name just to make it sound less scandalous).

Now this isn't to say that we won't be supporting the major exchanges, in fact MtGox and BTC-e are where I trade, and I also keep some assets at bitbox.  
Thus there will be modules for these exchanges and they will be open source.  

Also if you choose not to participate in the p2p exchange mechanism, that's your right and you won't be forced to do so.  However I believe it is far better to spend primary effort on a true peer to peer exchange mechanism and then integrate the exchanges as additional resources rather than the previous way of looking at it; which was to place the exchanges as primary and the p2p aspect as secondary.  For most purposes, which is primary and which is secondary are purely academic and of no consequence.  But from my perspective, I'm trying to make it so you can exchange freely with anyone worldwide without the need for a middle man or manual intervention.  I never want to be in a situation again where all of my liquid trading assets are trapped in 1 currency and 1 exchange because "sorry but we aren't taking orders at this time..."  Dangit! It's my money and I want it now! To paraphrase the worlds most annoying commercial.

This is not intended as an indictment against any exchange.  I would love to see any and all exchanges participate in the new network.  If anything it will save new and existing exchanges major headaches in the IT and regulatory compliance areas.  It could only be  a net positive for everyone, because it would provide significant liquidity and it would prevent future problems such as an inability to trade due to regulatory capture or DDOS issues.  The network is designed to view that sort of thing as censorship which is treated as a type of damage and route around it.

I have already been contacted by 1 exchange that will be launching in Q4 of this year.  They will not only have a custom module you can run to trade on their exchange, but they expect to function primarily as a liquidity provider for the network.

So consider this an offer.
I am officially inviting any exchange that wishes to participate, to contact me directly and I will work one on one with you to help you create a customized integration to assist in polling orderbooks, matching and fulfilling orders and anything else you would like to see from this new network.  

I hope you enjoy the announcement everyone!
full member
Activity: 140
Merit: 101
I wholeheartly agree with your comment on java vs python...that's why I still use java, even if the folks at IRC greet me with 'java must die'... Smiley

I don't really understand, why the scripting framework needs sockets, since I thought, your framework connects to the exchange? But don't get confused by my silly comments and keep rocking the trading world with java!!! *thumbs_up*

Ciao,
Andreas


Yeah sorry didn't mean to confuse with that.  The test was to see how deeply I could ingrain Javascript and if I could use it to directly implement a module.
Most .js won't ever need to touch the sockets ever.  However they're there if someone wants to do something custom later on without resorting to messing around in the internals etc.

legendary
Activity: 965
Merit: 1000
I got my own code and just released the API implementations so far:

https://github.com/ReAzem/cryptocoin-tradelib
hero member
Activity: 882
Merit: 501
Ching-Chang;Ding-Dong
Where's the github for this again? Or are you working under Aido's fork? I'm getting a little lost as to what code is what these days...?

Thanks in advance and great work Smiley
legendary
Activity: 965
Merit: 1000
I wholeheartly agree with your comment on java vs python...that's why I still use java, even if the folks at IRC greet me with 'java must die'... Smiley

I don't really understand, why the scripting framework needs sockets, since I thought, your framework connects to the exchange? But don't get confused by my silly comments and keep rocking the trading world with java!!! *thumbs_up*

Ciao,
Andreas
full member
Activity: 140
Merit: 101
Wasn't there a java scripting framework back in the days?

Yes there is and it's what I used to get those results.  
It doesn't support websockets directly though.  Hence the need to bring in the weberknecht java websocket client and expose it via the scripting API (so I could run the mtgox ticker in javascript for a quick test).

For the record I could have just as easily written the glue in python/jython, groovy or a host of other languages.  JSR-223 is as it turns out pretty widely used.
I'm not a big fan of python, it's not that I have anything against it in particular, but I've never found a problem that could be solved in python any easier than I could solve the same problem in Java.  Nevertheless I'm also not a fan of language lock-in and I have nothing to contribute to the great language debate that hasn't already been said.

So when you go to ATPx you will be able to pick your scripting language for writing your particular custom logic.
I'm going to stick with Javascript for demonstration purposes.  But be advised that the choice of language is runtime configurable and you will be able to mix and match to a limited extent.  Script variables that are set in the scripting context are not shareable and a single script file must be in a single language,  but any module exposed to the scripting logic will tend to be a singleton so modifications made to it inside of one script will persist to another.  That persistence is not an intentional design choice on my part, just a side effect of the way things are put together because modules are generally singletons. (except where they're not, which isn't that often as it turns out).
legendary
Activity: 965
Merit: 1000
Wasn't there a java scripting framework back in the days?
full member
Activity: 140
Merit: 101
Been playing with integrating scripting and it's coming along pretty well.
I think it will make a great addition.

As a proof of concept, I was able to integrate the MtGox ticker stream by using the weberknecht Java based websocket client and then exposing it to the scripting engine.
Code:
--received message: {"channel":"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe","channel_name":"depth.BTCUSD","op":"private","origin":"broadcast","private":"depth","depth":{"price":"111.065","type":1,"type_str":"ask","volume":"4.944","price_int":"11106500","volume_int":"494400000","item":"BTC","currency":"USD","now":"1371817094868568","total_volume_int":"494400000"}}
--received message: {"channel":"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe","channel_name":"depth.BTCUSD","op":"private","origin":"broadcast","private":"depth","depth":{"price":"111.09348","type":1,"type_str":"ask","volume":"-5.0102","price_int":"11109348","volume_int":"-501020000","item":"BTC","currency":"USD","now":"1371817095881588","total_volume_int":"0"}}
--received message: {"channel":"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe","channel_name":"depth.BTCUSD","op":"private","origin":"broadcast","private":"depth","depth":{"price":"92.9475","type":2,"type_str":"bid","volume":"-1.5","price_int":"9294750","volume_int":"-150000000","item":"BTC","currency":"USD","now":"1371817095907136","total_volume_int":"0"}}
--received message: {"channel":"dbf1dee9-4f2e-4a08-8cb7-748919a71b21","channel_name":"trade.BTC","op":"private","origin":"broadcast","private":"trade","trade":{"type":"trade","date":1371817096,"amount":0.05,"price":109.14,"tid":"1371817096032810","amount_int":"5000000","price_int":"10914000","item":"BTC","price_currency":"USD","trade_type":"bid","primary":"Y","properties":"limit"}}
--received message: {"channel":"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe","channel_name":"depth.BTCUSD","op":"private","origin":"broadcast","private":"depth","depth":{"price":"109.14","type":1,"type_str":"ask","volume":"-0.05","price_int":"10914000","volume_int":"-5000000","item":"BTC","currency":"USD","now":"1371817096099557","total_volume_int":"310202358"}}
--received message: {"channel":"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe","channel_name":"depth.BTCUSD","op":"private","origin":"broadcast","private":"depth","depth":{"price":"108.62347","type":2,"type_str":"bid","volume":"4.9629","price_int":"10862347","volume_int":"496290000","item":"BTC","currency":"USD","now":"1371817096340518","total_volume_int":"496290000"}}
--received message: {"channel":"d5f06780-30a8-4a48-a2f8-7ed181b4a13f","channel_name":"ticker.BTCUSD","op":"private","origin":"broadcast","private":"ticker","ticker":{"high":{"value":"115.00500","value_int":"11500500","display":"$115.00500","display_short":"$115.01","currency":"USD"},"low":{"value":"109.00000","value_int":"10900000","display":"$109.00000","display_short":"$109.00","currency":"USD"},"avg":{"value":"111.78385","value_int":"11178385","display":"$111.78385","display_short":"$111.78","currency":"USD"},"vwap":{"value":"112.03950","value_int":"11203950","display":"$112.03950","display_short":"$112.04","currency":"USD"},"vol":{"value":"52396.01262622","value_int":"5239601262622","display":"52,396.01262622\u00a0BTC","display_short":"52,396.01\u00a0BTC","currency":"BTC"},"last_local":{"value":"109.14000","value_int":"10914000","display":"$109.14000","display_short":"$109.14","currency":"USD"},"last_orig":{"value":"109.14000","value_int":"10914000","display":"$109.14000","display_short":"$109.14","currency":"USD"},"last_all":{"value":"109.14000","value_int":"10914000","display":"$109.14000","display_short":"$109.14","currency":"USD"},"last":{"value":"109.14000","value_int":"10914000","display":"$109.14000","display_short":"$109.14","currency":"USD"},"buy":{"value":"109.13751","value_int":"10913751","display":"$109.13751","display_short":"$109.14","currency":"USD"},"sell":{"value":"109.14000","value_int":"10914000","display":"$109.14000","display_short":"$109.14","currency":"USD"},"item":"BTC","now":"1371817096581510"}}

Obviously I will put this back into Java, but it was just neat to try it out.  We officially have a MtGox ticker now which is at least half of what we need for the exchange module.
full member
Activity: 140
Merit: 101
Jython?


http://wiki.python.org/jython/

Quote:

  • Embedded scripting - Java programmers can add the Jython libraries to their system to allow end users to write simple or complicated scripts that add functionality to the application.

I think it will probably be easier to just embed Javascript, but I guess there is no reason it HAS to be javascript.
http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/
sr. member
Activity: 248
Merit: 250
1. Collect underpants 2. ? 3. Profit
Jython?


http://wiki.python.org/jython/

Quote:

  • Embedded scripting - Java programmers can add the Jython libraries to their system to allow end users to write simple or complicated scripts that add functionality to the application.
Pages:
Jump to: