Skip to content

Commit

Permalink
use config from frontend for backtest
Browse files Browse the repository at this point in the history
  • Loading branch information
askmike committed Jul 12, 2016
1 parent ed4ae4d commit f21c02c
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 23 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"cexio": "0.0.x",
"commander": "^2.9.0",
"koa": "^1.2.0",
"koa-bodyparser": "^2.2.0",
"koa-router": "^5.4.0",
"koa-static": "^2.0.0",
"kraken-api": "0.1.x",
Expand Down
1 change: 1 addition & 0 deletions web/frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ <h2>log</h2>
<pre id="log">..</pre>
<script src='//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js'></script>
<script src='//cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js'></script>
<script src='/js/ajax.js'></script>
<script src='/js/main.js'></script>
</body>
</html>
37 changes: 37 additions & 0 deletions web/frontend/js/ajax.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// https://gist.github.com/Xeoncross/7663273

/**
* IE 5.5+, Firefox, Opera, Chrome, Safari XHR object
*
* @param string url
* @param object callback
* @param mixed data
* @param null x
*/
function ajax(url, callback, data, x) {
try {
x = new(this.XMLHttpRequest || ActiveXObject)('MSXML2.XMLHTTP.3.0');
x.open(data ? 'POST' : 'GET', url, 1);
x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
x.onreadystatechange = function () {
x.readyState > 3 && callback && callback(x.responseText, x);
};
x.send(data)
} catch (e) {
window.console && console.log(e);
}
};


// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
// https://gist.github.com/jed/993585
// https://gist.github.com/Fluidbyte/5082377
// https://github.com/Xeoncross/kb_javascript_framework/blob/master/kB.js#L30
// https://gist.github.com/iwek/5599777
// http://msdn.microsoft.com/en-us/library/ms537505(v=vs.85).aspx#_id

// @todo look into lengthComputable for xhr.upload browsers
// http://stackoverflow.com/questions/11127654/why-is-progressevent-lengthcomputable-false
// http://stackoverflow.com/questions/10956574/why-might-xmlhttprequest-progressevent-lengthcomputable-be-false
// https://github.com/ForbesLindesay/ajax/blob/master/index.js
40 changes: 22 additions & 18 deletions web/frontend/js/main.js
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
var ws = new WebSocket(`ws://${location.hostname}:${location.port}/`);

var $log = document.getElementById('log');
var page = location.pathname;

ws.onopen = () => {
console.log('aaa');
}
var messageHandlers = {};

ws.onmessage = e => {
var data = JSON.parse(e.data);

console.log(data);

if(data.type === 'log') {
$log.innerHTML += data.message + '\n';
$log.scrollTop = $log.scrollHeight;
}
if(messageHandlers[data.type])
messageHandlers[data.type](data.message);
else
console.log(data);
}

var $backtest = document.getElementById('backtest');

$backtest.onclick = () => {
if(true) {
var $log = document.getElementById('log');

var $backtest = document.getElementById('backtest');

messageHandlers.log = m => $log.innerHTML += m + '\n';

$log.innerHTML = '';
$backtest.onclick = () => {

fetch('/api/backtest', {
method: 'POST',
body: {
console.log('go');

$log.innerHTML = '';

var request = {
watch: {
exchange: 'bitstamp',
currency: 'USD',
Expand All @@ -34,8 +36,10 @@ $backtest.onclick = () => {
backtest: {
daterange: 'scan'
}
}
});
};

ajax('/api/backtest', _.noop, 'data=' + JSON.stringify(request));

}
}

16 changes: 11 additions & 5 deletions web/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ var wss = new WebSocketServer({ server: server });
var koa = require('koa');
var serve = require('koa-static');
var router = require('koa-router')();
var bodyParser = require('koa-bodyparser');
var ws = require('ws');
var app = koa();
var _ = require('lodash');

var port = 3000;

Expand All @@ -16,8 +18,15 @@ router.get('/api/ping', function *() {

router.post('/api/backtest', function *() {
var mode = 'backtest';

var body = JSON.parse(this.request.body.data);

var config = require('../config.js');

_.merge(config, body);

config.debug = false;

var broadcast = m => {
wss.clients.forEach(function each(client) {
client.send(JSON.stringify({type: 'log', message: m}));
Expand All @@ -41,12 +50,9 @@ wss.on('connection', function connection(ws) {

app
.use(serve('frontend'))
.use(bodyParser())
.use(router.routes())
.use(router.allowedMethods())

// wss.clients.forEach(function each(client) {
// client.send(data);
// });
.use(router.allowedMethods());

server.on('request', app.callback());
server.listen(port, () => console.log('Listening on ' + server.address().port));

0 comments on commit f21c02c

Please sign in to comment.