diff --git a/core/pipeline.js b/core/pipeline.js index dd0cfe092..6cb31e380 100644 --- a/core/pipeline.js +++ b/core/pipeline.js @@ -88,6 +88,8 @@ var pipeline = (settings) => { _.each( pluginSubscriptions.filter(s => _.isArray(s.emitter)), subscription => { + // cache full list + subscription.emitters = subscription.emitter; var singleEventEmitters = subscription.emitter .filter( s => _.size(plugins.filter(p => p.meta.slug === s)) @@ -110,18 +112,28 @@ var pipeline = (settings) => { _.each(pluginSubscriptions, function(sub) { if(plugin[sub.handler]) { - // if a plugin wants to listen // to something disabled if(!emitters[sub.emitter]) { if(!plugin.meta.greedy) { - log.warn([ + + let emitterMessage; + if(sub.emitters) { + emitterMessage = 'all of the emitting plugins [ '; + emitterMessage += sub.emitters.join(', '); + emitterMessage += ' ] are disabled.'; + } else { + emitterMessage += 'the emitting plugin (' + sub.emitter; + emitterMessage += ')is disabled.' + } + + log.error([ plugin.meta.name, - 'wanted to listen to the', - sub.emitter + ',', - 'however the', - sub.emitter, - 'is disabled.' + 'wanted to listen to event', + sub.event + ',', + 'however', + emitterMessage, + plugin.meta.name + ' might malfunction because of it.' ].join(' ')); } return; diff --git a/docs/internals/events.md b/docs/internals/events.md index 403b829b1..2b8a3612b 100644 --- a/docs/internals/events.md +++ b/docs/internals/events.md @@ -106,7 +106,7 @@ and will start signaling advice. - What: An object describing new notification from your strategy - When: when the strategy emit using `this.notify()` function -- Subscribe: You can subscribe to this event by registering the `stratNotification` method. +- Subscribe: You can subscribe to this event by registering the `processStratNotification` method. - Example: { date: [moment object of the start time of the candle], diff --git a/docs/introduction/supported_exchanges.md b/docs/introduction/supported_exchanges.md index 241e7b37d..baf8b9e35 100644 --- a/docs/introduction/supported_exchanges.md +++ b/docs/introduction/supported_exchanges.md @@ -22,7 +22,7 @@ Gekko is able to directly communicate with the APIs of a number of exchanges. Ho | [Okcoin.cn][11]* | ✓ | ✓ | ✕ | China, see [#352][20] | | [Cex.io][12]* | ✓ | ✕ | ✕ | | | [BTC Markets][13]* | ✓ | ✓ | ✕ | | -| [bitX][14] | ✓ | ✓ | ✓ | aka Luno | +| [Luno][14] | ✓ | ✓ | ✓ | previously BitX | | [lakeBTC][15]* | ✓ | ✕ | ✕ | | | [meXBT][16]* | ✓ | ✕ | ✕ | see [here][21] | | [zaif][17]* | ✓ | ✕ | ✕ | | @@ -60,5 +60,3 @@ Gekko is able to directly communicate with the APIs of a number of exchanges. Ho [24]: https://www.binance.com/?ref=11236330 [25]: https://coinfalcon.com/?ref=CFJSQBMXZZDS [26]: https://github.com/askmike/gekko/pull/2310 - - diff --git a/exchange/gekkoBroker.js b/exchange/gekkoBroker.js index 3a2a10d69..09706a52a 100644 --- a/exchange/gekkoBroker.js +++ b/exchange/gekkoBroker.js @@ -24,18 +24,14 @@ class Broker { if(config.private) { if(this.cantTrade()) { - throw this.cantTrade(); + throw new Error(this.cantTrade()); } } else { if(this.cantMonitor()) { - throw this.cantMonitor(); + throw new Error(this.cantMonitor()); } } - if(config.private && this.cantTrade()) { - throw this.cantTrade(); - } - this.orders = { // contains current open orders open: [], @@ -81,8 +77,9 @@ class Broker { return; } - if(this.cantTrade()) + if(this.cantTrade()) { throw new errors.ExchangeError(this.cantTrade()); + } this.syncPrivateData(); } diff --git a/exchange/package-lock.json b/exchange/package-lock.json index 9be58c4ca..dba8e57f1 100644 --- a/exchange/package-lock.json +++ b/exchange/package-lock.json @@ -1,6 +1,6 @@ { "name": "gekko-broker", - "version": "0.6.2", + "version": "0.6.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -14,7 +14,7 @@ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", "requires": { - "@types/node": "10.1.2" + "@types/node": "*" } }, "@types/node": { @@ -27,10 +27,10 @@ "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.0.tgz", "integrity": "sha512-/KXM5oev+nNCLIgBjkwbk8VqxmzI56woD4VUxn95O+YeQ8hJzcSmIZ1IN3WexiqBb6srzDo2bdMbsXxgXNkz5Q==", "requires": { - "@types/caseless": "0.12.1", - "@types/form-data": "2.2.1", - "@types/node": "10.1.2", - "@types/tough-cookie": "2.3.3" + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" } }, "@types/tough-cookie": { @@ -43,10 +43,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "asn1": { @@ -64,7 +64,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "4.17.10" + "lodash": "^4.14.0" } }, "async-limiter": { @@ -92,8 +92,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "bcrypt-pbkdf": { @@ -102,7 +102,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "bignumber.js": { @@ -115,9 +115,9 @@ "resolved": "https://registry.npmjs.org/binance/-/binance-1.3.3.tgz", "integrity": "sha512-1eV2QUoH/Z0FZPiGjigJg4udXV9Uu6Clr0Sg1xsX3xStgPfzXz0juA3mllQIiIaHx7dmfAQgEiZIyeJLx5ajag==", "requires": { - "request": "2.86.0", - "underscore": "1.9.0", - "ws": "3.3.3" + "request": "^2.81.0", + "underscore": "^1.8.3", + "ws": "^3.1.0" } }, "bintrees": { @@ -130,17 +130,22 @@ "resolved": "https://registry.npmjs.org/bitfinex-api-node/-/bitfinex-api-node-2.0.0-beta.1.tgz", "integrity": "sha512-UVKh4PAaijplm/VWs3ZLONQo8mhF0bemDZjEQCKtJteNlB+crmqRp/fPuWC2ZTYX2ZQ//J0zriOhEUiuwwGSDA==", "requires": { - "bignumber.js": "6.0.0", + "bignumber.js": "^6.0.0", "cbq": "0.0.1", - "crc-32": "1.2.0", - "debug": "2.6.9", - "lodash": "4.17.10", - "lodash.throttle": "4.1.1", - "request": "2.86.0", - "request-promise": "4.2.2", - "ws": "3.3.3" + "crc-32": "^1.2.0", + "debug": "^2.2.0", + "lodash": "^4.17.4", + "lodash.throttle": "^4.1.1", + "request": "^2.67.0", + "request-promise": "^4.2.0", + "ws": "^3.0.0" } }, + "bitx": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/bitx/-/bitx-1.5.1.tgz", + "integrity": "sha1-+h9cYuhIEFse1Pj2tIIwd4jmMq0=" + }, "bluebird": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", @@ -151,7 +156,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "caseless": { @@ -169,7 +174,7 @@ "resolved": "https://registry.npmjs.org/cloudscraper/-/cloudscraper-1.5.0.tgz", "integrity": "sha512-bZagLhj59+N6Z6lD9zRksYu87GthLwXdKARULi4RZ6UVpotH39ruSFN3UQmw3uuqoj00iDxkGrapAvxeurmlQA==", "requires": { - "request": "2.86.0" + "request": "^2.49.0" } }, "co": { @@ -182,7 +187,7 @@ "resolved": "https://registry.npmjs.org/coinfalcon/-/coinfalcon-1.0.3.tgz", "integrity": "sha512-dzyLdeDGY9Fg4zewCFolK/TjB/Mrf9tpBupx7IAqhZcYH6jY5z7xxMywIgJnf4bbRKMIEnJ2GJFqgue9M1nwnw==", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.26.0" } }, "combined-stream": { @@ -190,7 +195,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "core-js": { @@ -208,8 +213,8 @@ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", "requires": { - "exit-on-epipe": "1.0.1", - "printj": "1.1.2" + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" } }, "cryptiles": { @@ -217,7 +222,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -225,7 +230,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -241,7 +246,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -257,7 +262,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "delayed-stream": { @@ -276,7 +281,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "exit-on-epipe": { @@ -314,9 +319,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "gdax": { @@ -325,10 +330,10 @@ "integrity": "sha512-lJHXlGchJVNtql8VWH+Idalehl5T5N6O9g5MUEW7IOuPtsbb7D15vgz6MOx1NgSyZe0fSIINv9s0HxujYB3sqg==", "requires": { "@types/request": "2.47.0", - "bignumber.js": "5.0.0", - "bintrees": "1.0.2", - "request": "2.86.0", - "ws": "4.1.0" + "bignumber.js": "^5.0.0", + "bintrees": "^1.0.1", + "request": "^2.81.0", + "ws": "^4.0.0" }, "dependencies": { "bignumber.js": { @@ -341,8 +346,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.2" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" } } } @@ -357,7 +362,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "got": { @@ -365,20 +370,20 @@ "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", "requires": { - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.1", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" } }, "har-schema": { @@ -391,8 +396,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has-symbol-support-x": { @@ -405,7 +410,7 @@ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "has-symbol-support-x": "1.4.2" + "has-symbol-support-x": "^1.4.1" } }, "hawk": { @@ -413,10 +418,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "hoek": { @@ -429,9 +434,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "is-object": { @@ -469,8 +474,8 @@ "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, "jsbn": { @@ -515,8 +520,8 @@ "resolved": "https://registry.npmjs.org/kraken-api/-/kraken-api-1.0.0.tgz", "integrity": "sha512-JAfLh9Laks+2KZTM/WW+bpy+iZfImUok0aeLBOb0ehwTEGvcBWWAXlmkthhJXfUTSoOIHuoqqToC94+iBeBBAg==", "requires": { - "got": "7.1.0", - "qs": "6.5.2" + "got": "^7.1.0", + "qs": ">=6.4.0" } }, "lodash": { @@ -549,7 +554,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "mimic-response": { @@ -577,10 +582,10 @@ "resolved": "https://registry.npmjs.org/node.bittrex.api/-/node.bittrex.api-1.0.0.tgz", "integrity": "sha1-hN/4wIMWAW1BB6zazZVbsI/74/c=", "requires": { - "cloudscraper": "1.5.0", - "jsonic": "0.3.0", - "object-assign": "4.1.1", - "request": "2.86.0", + "cloudscraper": "^1.4.1", + "jsonic": "^0.3.0", + "object-assign": "^4.1.1", + "request": ">= 2.35.0", "signalr-client": "0.0.17" } }, @@ -614,7 +619,7 @@ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, "performance-now": { @@ -624,9 +629,10 @@ }, "poloniex.js": { "version": "git://github.com/askmike/poloniex.js.git#69f5e254353e66d135070844fc3328efcbe3641c", + "from": "poloniex.js@git://github.com/askmike/poloniex.js.git#69f5e254353e66d135070844fc3328efcbe3641c", "requires": { - "nonce": "1.0.4", - "request": "2.33.0" + "nonce": "~1.0.3", + "request": "~2.33.0" }, "dependencies": { "asn1": { @@ -658,7 +664,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", "requires": { - "hoek": "0.9.1" + "hoek": "0.9.x" } }, "combined-stream": { @@ -676,7 +682,7 @@ "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", "optional": true, "requires": { - "boom": "0.4.2" + "boom": "0.4.x" } }, "delayed-stream": { @@ -696,9 +702,9 @@ "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", "optional": true, "requires": { - "async": "0.9.2", - "combined-stream": "0.0.7", - "mime": "1.2.11" + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime": "~1.2.11" } }, "hawk": { @@ -707,10 +713,10 @@ "integrity": "sha1-uQuxaYByhUEdp//LjdJZhQLTtS0=", "optional": true, "requires": { - "boom": "0.4.2", - "cryptiles": "0.2.2", - "hoek": "0.9.1", - "sntp": "0.2.4" + "boom": "0.4.x", + "cryptiles": "0.2.x", + "hoek": "0.9.x", + "sntp": "0.2.x" } }, "hoek": { @@ -725,7 +731,7 @@ "optional": true, "requires": { "asn1": "0.1.11", - "assert-plus": "0.1.5", + "assert-plus": "^0.1.5", "ctype": "0.5.3" } }, @@ -750,18 +756,18 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.33.0.tgz", "integrity": "sha1-UWeHgTFyYHDsYzdS6iMKI3ncZf8=", "requires": { - "aws-sign2": "0.5.0", - "forever-agent": "0.5.2", - "form-data": "0.1.4", - "hawk": "1.0.0", - "http-signature": "0.10.1", - "json-stringify-safe": "5.0.1", - "mime": "1.2.11", - "node-uuid": "1.4.8", - "oauth-sign": "0.3.0", - "qs": "0.6.6", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.3.0" + "aws-sign2": "~0.5.0", + "forever-agent": "~0.5.0", + "form-data": "~0.1.0", + "hawk": "~1.0.0", + "http-signature": "~0.10.0", + "json-stringify-safe": "~5.0.0", + "mime": "~1.2.9", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.3.0", + "qs": "~0.6.0", + "tough-cookie": ">=0.12.0", + "tunnel-agent": "~0.3.0" } }, "sntp": { @@ -770,7 +776,7 @@ "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", "optional": true, "requires": { - "hoek": "0.9.1" + "hoek": "0.9.x" } }, "tunnel-agent": { @@ -811,27 +817,27 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.86.0.tgz", "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "request-promise": { @@ -839,10 +845,10 @@ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", "requires": { - "bluebird": "3.5.1", + "bluebird": "^3.5.0", "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.4" + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" }, "dependencies": { "request-promise-core": { @@ -850,7 +856,7 @@ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "requires": { - "lodash": "4.17.10" + "lodash": "^4.13.1" } } } @@ -870,7 +876,7 @@ "resolved": "https://registry.npmjs.org/signalr-client/-/signalr-client-0.0.17.tgz", "integrity": "sha1-pSF383ziSOzIcibdEDxB/3DIKbE=", "requires": { - "websocket": "1.0.26" + "websocket": "^1.0.17" } }, "sntp": { @@ -878,7 +884,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "sshpk": { @@ -886,14 +892,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "stealthy-require": { @@ -911,7 +917,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -919,7 +925,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -933,7 +939,7 @@ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "requires": { - "is-typedarray": "1.0.0" + "is-typedarray": "^1.0.0" } }, "ultron": { @@ -951,7 +957,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "url-to-options": { @@ -969,9 +975,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "websocket": { @@ -979,10 +985,10 @@ "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.26.tgz", "integrity": "sha512-fjcrYDPIQxpTnqFQ9JjxUQcdvR89MFAOjPBlF+vjOt49w/XW4fJknUoMz/mDIn2eK1AdslVojcaOxOqyZZV8rw==", "requires": { - "debug": "2.6.9", - "nan": "2.10.0", - "typedarray-to-buffer": "3.1.5", - "yaeti": "0.0.6" + "debug": "^2.2.0", + "nan": "^2.3.3", + "typedarray-to-buffer": "^3.1.2", + "yaeti": "^0.0.6" } }, "ws": { @@ -990,9 +996,9 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.2", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } }, "yaeti": { diff --git a/exchange/package.json b/exchange/package.json index 9a795b4fc..b7fadcbae 100644 --- a/exchange/package.json +++ b/exchange/package.json @@ -1,6 +1,6 @@ { "name": "gekko-broker", - "version": "0.6.3", + "version": "0.6.4", "description": "Gekko's order execution library for bitcoin & crypto exchanges", "main": "gekkoBroker.js", "scripts": { @@ -23,6 +23,7 @@ "async": "^2.6.0", "binance": "^1.3.3", "bitfinex-api-node": "^2.0.0-beta", + "bitx": "^1.5.0", "bluebird": "^3.5.1", "coinfalcon": "^1.0.3", "gdax": "^0.7.0", diff --git a/exchange/wrappers/binance.js b/exchange/wrappers/binance.js index 6420059c0..17c78f88d 100644 --- a/exchange/wrappers/binance.js +++ b/exchange/wrappers/binance.js @@ -36,19 +36,21 @@ const Trader = function(config) { handleDrift: true, }); - // Note non standard func: - // - // On binance we might pay fees in BNB - // if we do we CANNOT calculate feePercent - // since we don't track BNB price (when we - // are not trading on a BNB market). - // - // Though we can deduce feePercent based - // on user fee tracked through `this.getFee`. - // Set default here, overwrite in getFee. - this.fee = 0.1; - // Set the proper fee asap. - this.getFee(_.noop); + if(config.key && config.secret) { + // Note non standard func: + // + // On binance we might pay fees in BNB + // if we do we CANNOT calculate feePercent + // since we don't track BNB price (when we + // are not trading on a BNB market). + // + // Though we can deduce feePercent based + // on user fee tracked through `this.getFee`. + // Set default here, overwrite in getFee. + this.fee = 0.1; + // Set the proper fee asap. + this.getFee(_.noop); + } }; const recoverableErrors = [ diff --git a/exchange/wrappers/bitfinex.js b/exchange/wrappers/bitfinex.js index 534a15e54..d2bd5d6b6 100644 --- a/exchange/wrappers/bitfinex.js +++ b/exchange/wrappers/bitfinex.js @@ -42,7 +42,6 @@ const recoverableErrors = [ '443', '504', '503', - '500', '502', 'Empty response', 'Nonce is too small' diff --git a/exchange/wrappers/bitx.js b/exchange/wrappers/luno.js similarity index 91% rename from exchange/wrappers/bitx.js rename to exchange/wrappers/luno.js index 78a271f9d..b21e12d57 100644 --- a/exchange/wrappers/bitx.js +++ b/exchange/wrappers/luno.js @@ -1,11 +1,11 @@ -const BitX = require("bitx"); +const Luno = require("bitx"); const _ = require('lodash'); const moment = require('moment'); const Errors = require('../exchangeErrors'); const retry = require('../exchangeUtils').retry; -const name = 'BitX'; +const name = 'Luno'; const Trader = function(config) { if (_.isObject(config)) { @@ -15,7 +15,7 @@ const Trader = function(config) { this.asset = config.asset; this.pair = config.asset + config.currency; } - this.bitx = new BitX(this.key, this.secret, { pair: this.pair }); + this.luno = new Luno(this.key, this.secret, { pair: this.pair }); this.market = _.find(Trader.getCapabilities().markets, (market) => { return market.pair[0] === this.currency && market.pair[1] === this.asset; }); @@ -62,7 +62,7 @@ const processResponse = function(funcName, callback) { error.notFatal = true; } - if (includes(error.message, ['BitX error 429'])) { + if (includes(error.message, ['error 429'])) { error.notFatal = true; error.backoffDelay = 10000; } @@ -90,7 +90,7 @@ Trader.prototype.getTicker = function(callback) { callback(undefined, ticker); }; - const handler = cb => this.bitx.getTicker(processResponse('getTicker', cb)); + const handler = cb => this.luno.getTicker(processResponse('getTicker', cb)); retry(null, handler, process); } @@ -102,7 +102,7 @@ Trader.prototype.getFee = function(callback) { // } // callback(undefined, data.taker_fee / 100); // }; - // const handler = cb => this.bitx.getFee(processResponse('getFee', cb)); + // const handler = cb => this.luno.getFee(processResponse('getFee', cb)); // retry(null, handler, process); if (this.pair === 'ETHXBT') @@ -149,7 +149,7 @@ Trader.prototype.getPortfolio = function(callback) { callback(err, portfolio); }; - const handler = cb => this.bitx.getBalance(processResponse('getPortfolio', cb)); + const handler = cb => this.luno.getBalance(processResponse('getPortfolio', cb)); retry(null, handler, process); } @@ -164,7 +164,7 @@ Trader.prototype.buy = function(amount, price, callback) { callback(err, data.order_id); }; - const handler = cb => this.bitx.postBuyOrder(amount, price, processResponse('buy', cb)); + const handler = cb => this.luno.postBuyOrder(amount, price, processResponse('buy', cb)); retry(null, handler, process); } @@ -179,7 +179,7 @@ Trader.prototype.sell = function(amount, price, callback) { callback(err, data.order_id); }; - const handler = cb => this.bitx.postSellOrder(amount, price, processResponse('sell', cb)); + const handler = cb => this.luno.postSellOrder(amount, price, processResponse('sell', cb)); retry(null, handler, process); } @@ -214,7 +214,7 @@ Trader.prototype.getOrder = function(order, callback) { callback(err, { price, amount, date }); }; - const handler = cb => this.bitx.getOrder(order, processResponse('getOrder', cb)); + const handler = cb => this.luno.getOrder(order, processResponse('getOrder', cb)); retry(null, handler, process); } @@ -238,7 +238,7 @@ Trader.prototype.checkOrder = function(order, callback) { callback(undefined, result); }; - const handler = cb => this.bitx.getOrder(order, processResponse('checkOrder', cb)); + const handler = cb => this.luno.getOrder(order, processResponse('checkOrder', cb)); retry(null, handler, process); } @@ -283,7 +283,7 @@ Trader.prototype.cancelOrder = function(order, callback) { } - const handler = cb => this.bitx.stopOrder(order, processResponse('cancelOrder', cb)); + const handler = cb => this.luno.stopOrder(order, processResponse('cancelOrder', cb)); retry(null, handler, process); } @@ -316,14 +316,14 @@ Trader.prototype.getTrades = function(since, callback, descending) { since: since } - const handler = cb => this.bitx.getTrades(options, processResponse('getTrades', cb)); + const handler = cb => this.luno.getTrades(options, processResponse('getTrades', cb)); retry(null, handler, process); } Trader.getCapabilities = function() { return { - name: 'BitX', - slug: 'bitx', + name: 'Luno', + slug: 'luno', currencies: ['MYR', 'KES', 'NGN', 'ZAR', 'XBT'], assets: ['ETH', 'XBT'], markets: [ diff --git a/importers/exchanges/bitfinex.js b/importers/exchanges/bitfinex.js index 627a835cd..70f32a76e 100644 --- a/importers/exchanges/bitfinex.js +++ b/importers/exchanges/bitfinex.js @@ -22,7 +22,7 @@ Fetcher.prototype.getTrades = function(upto, callback, descending) { tid: trade.ID, date: moment(trade.MTS).format('X'), price: +trade.PRICE, - amount: +trade.AMOUNT, + amount: +Math.abs(trade.AMOUNT), }; }); } @@ -76,12 +76,16 @@ var fetch = () => { if (lastTimestamp) { // We need to slow this down to prevent hitting the rate limits setTimeout(() => { - fetcher.getTrades(lastTimestamp, handleFetch); + + // make sure we fetch with overlap from last batch + const since = lastTimestamp - 1000; + fetcher.getTrades(since, handleFetch); }, 2500); } else { lastTimestamp = from.valueOf(); batch_start = moment(from); batch_end = moment(from).add(stride, 'h'); + fetcher.getTrades(batch_end, handleFetch); } }; diff --git a/importers/exchanges/bitx.js b/importers/exchanges/luno.js similarity index 87% rename from importers/exchanges/bitx.js rename to importers/exchanges/luno.js index 8084e72ce..437b3a459 100644 --- a/importers/exchanges/bitx.js +++ b/importers/exchanges/luno.js @@ -5,7 +5,7 @@ const retry = require('../../exchange/exchangeUtils').retry; const config = util.getConfig(); const dirs = util.dirs(); -const Fetcher = require(dirs.exchanges + 'bitx'); +const Fetcher = require(dirs.exchanges + 'luno'); util.makeEventEmitter(Fetcher); @@ -34,7 +34,7 @@ Fetcher.prototype.getTrades = function(since, callback, descending) { error.notFatal = true; } - if (includes(error.message, ['BitX error 429'])) { + if (includes(error.message, ['error 429'])) { error.notFatal = true; error.backoffDelay = 10000; } @@ -65,9 +65,9 @@ Fetcher.prototype.getTrades = function(since, callback, descending) { if (moment.isMoment(since)) since = since.valueOf(); (_.isNumber(since) && since > 0) ? since: since = 0; - console.log('importer getting trades from BitX since', moment(since).format('YYYY-MM-DD HH:mm:ss')); + console.log('importer getting trades from Luno since', moment.utc(since).format('YYYY-MM-DD HH:mm:ss'), 'UTC'); - const handler = cb => this.bitx.getTrades({ since: since, pair: this.pair }, processResponse('getTrades', cb)); + const handler = cb => this.luno.getTrades({ since: since, pair: this.pair }, processResponse('getTrades', cb)); retry(null, handler, process); } @@ -80,7 +80,7 @@ const fetch = () => { const handleFetch = (err, trades) => { if (err) { - console.log(`There was an error importing from BitX ${err}`); + console.log(`There was an error importing from Luno: ${err}`); fetcher.emit('done'); return fetcher.emit('trades', []); } diff --git a/package-lock.json b/package-lock.json index 74bb7dca8..a44a71e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,18 +9,18 @@ "resolved": "https://registry.npmjs.org/@slack/client/-/client-3.13.0.tgz", "integrity": "sha512-45hHqycaVK4UVL0e1jRK1bEOyb2/a3V6QJAgP43Bg03y2En4BZ3J3Qe7zNh09VTYsQ6KJeHTOWldDhNJUbdkTw==", "requires": { - "async": "1.5.2", - "bluebird": "3.5.0", - "eventemitter3": "1.2.0", - "https-proxy-agent": "1.0.0", - "inherits": "2.0.3", - "lodash": "4.17.4", - "pkginfo": "0.4.1", - "request": "2.83.0", - "retry": "0.9.0", + "async": "^1.5.0", + "bluebird": "^3.3.3", + "eventemitter3": "^1.1.1", + "https-proxy-agent": "^1.0.0", + "inherits": "^2.0.1", + "lodash": "^4.13.1", + "pkginfo": "^0.4.0", + "request": "^2.64.0", + "retry": "^0.9.0", "url-join": "0.0.1", - "winston": "2.3.1", - "ws": "1.1.4" + "winston": "^2.1.1", + "ws": "^1.0.1" }, "dependencies": { "async": { @@ -50,7 +50,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "requires": { - "mime-types": "2.1.17", + "mime-types": "~2.1.16", "negotiator": "0.6.1" } }, @@ -59,8 +59,8 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", "requires": { - "extend": "3.0.1", - "semver": "5.0.3" + "extend": "~3.0.0", + "semver": "~5.0.1" }, "dependencies": { "semver": { @@ -75,10 +75,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ansi-regex": { @@ -106,8 +106,8 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" }, "dependencies": { "isarray": { @@ -125,13 +125,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -139,7 +139,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -165,7 +165,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.1.2.tgz", "integrity": "sha1-YSpKtF70KnDN6Aa62G7m2wR+g4U=", "requires": { - "lodash": "4.17.4" + "lodash": "^4.14.0" }, "dependencies": { "lodash": { @@ -201,7 +201,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "bitfinex-api-node": { @@ -209,11 +209,11 @@ "resolved": "https://registry.npmjs.org/bitfinex-api-node/-/bitfinex-api-node-1.2.1.tgz", "integrity": "sha512-pG4BMCD7T/R1vkLhLdHPim4Lbfbkdyt/yTaJ+A48vrzGsQO7MwxIRRs6rEx1Acm/vpsUyksbOaQyladh2T8Whw==", "requires": { - "debug": "2.6.8", - "lodash": "4.17.10", - "request": "2.83.0", - "request-promise": "4.2.2", - "ws": "3.3.3" + "debug": "^2.2.0", + "lodash": "^4.17.4", + "request": "^2.67.0", + "request-promise": "^4.2.0", + "ws": "^3.0.0" }, "dependencies": { "lodash": { @@ -231,18 +231,13 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } } } }, - "bitx": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/bitx/-/bitx-1.5.1.tgz", - "integrity": "sha1-+h9cYuhIEFse1Pj2tIIwd4jmMq0=" - }, "bluebird": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", @@ -253,7 +248,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -279,12 +274,12 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "1.0.2", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.7" + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" }, "dependencies": { "deep-eql": { @@ -293,7 +288,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "4.0.7" + "type-detect": "^4.0.0" } }, "type-detect": { @@ -309,11 +304,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "check-error": { @@ -337,10 +332,10 @@ "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.1.1.tgz", "integrity": "sha1-2XeB0eM0S6SoIP0YBr3fg0FQUjY=", "requires": { - "inflation": "2.0.0", - "qs": "6.4.0", - "raw-body": "2.3.2", - "type-is": "1.6.15" + "inflation": "^2.0.0", + "qs": "^6.4.0", + "raw-body": "^2.2.0", + "type-is": "^1.6.14" } }, "co-from-stream": { @@ -380,7 +375,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -393,8 +388,8 @@ "resolved": "https://registry.npmjs.org/composition/-/composition-2.3.0.tgz", "integrity": "sha1-dCgFN0yrVQxSCjNmL1pzLgII1vI=", "requires": { - "any-promise": "1.3.0", - "co": "4.6.0" + "any-promise": "^1.1.0", + "co": "^4.0.2" } }, "concat-map": { @@ -422,8 +417,8 @@ "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", "requires": { - "depd": "1.1.1", - "keygrip": "1.0.2" + "depd": "~1.1.1", + "keygrip": "~1.0.2" } }, "copy-to": { @@ -452,7 +447,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -517,7 +512,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ee-first": { @@ -581,8 +576,8 @@ "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", "dev": true, "requires": { - "is-object": "1.0.1", - "merge-descriptors": "1.0.1" + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" } }, "forever-agent": { @@ -595,9 +590,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "formatio": { @@ -606,7 +601,7 @@ "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", "dev": true, "requires": { - "samsam": "1.3.0" + "samsam": "1.x" } }, "fresh": { @@ -619,7 +614,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { - "minipass": "2.3.3" + "minipass": "^2.2.1" } }, "fs.realpath": { @@ -632,14 +627,14 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.3" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "gekko": { @@ -658,7 +653,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -673,12 +668,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "growl": { @@ -697,8 +692,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has-ansi": { @@ -706,7 +701,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -731,8 +726,8 @@ "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.3.0.tgz", "integrity": "sha1-oxpc+IyHPsu1eWkH1NbxMujAHko=", "requires": { - "deep-equal": "1.0.1", - "http-errors": "1.6.2" + "deep-equal": "~1.0.1", + "http-errors": "~1.6.1" } }, "http-errors": { @@ -743,7 +738,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" } }, "https-proxy-agent": { @@ -751,9 +746,9 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", "requires": { - "agent-base": "2.1.1", - "debug": "2.6.8", - "extend": "3.0.1" + "agent-base": "2", + "debug": "2", + "extend": "3" } }, "humanize-duration": { @@ -776,7 +771,7 @@ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "inflation": { @@ -789,8 +784,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -808,8 +803,8 @@ "resolved": "https://registry.npmjs.org/ipcee/-/ipcee-1.0.6.tgz", "integrity": "sha1-PI3I5nh9gdIkyY6POcvvCeBV5tQ=", "requires": { - "debug": "2.6.8", - "eventemitter2": "2.2.2" + "debug": "^2.2.0", + "eventemitter2": "^2.0.0" } }, "is-fullwidth-code-point": { @@ -817,7 +812,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-object": { @@ -901,29 +896,29 @@ "resolved": "https://registry.npmjs.org/koa/-/koa-1.4.0.tgz", "integrity": "sha1-X79tkMZq4Si3hnyi5UjOh0NDbXY=", "requires": { - "accepts": "1.3.4", - "co": "4.6.0", - "composition": "2.3.0", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookies": "0.7.1", - "debug": "2.6.8", - "delegates": "1.0.0", - "destroy": "1.0.4", - "error-inject": "1.0.0", - "escape-html": "1.0.3", - "fresh": "0.3.0", - "http-assert": "1.3.0", - "http-errors": "1.6.2", - "koa-compose": "2.5.1", - "koa-is-json": "1.0.0", - "mime-types": "2.1.17", - "on-finished": "2.3.0", + "accepts": "^1.2.2", + "co": "^4.4.0", + "composition": "^2.1.1", + "content-disposition": "~0.5.0", + "content-type": "^1.0.0", + "cookies": "~0.7.0", + "debug": "*", + "delegates": "^1.0.0", + "destroy": "^1.0.3", + "error-inject": "~1.0.0", + "escape-html": "~1.0.1", + "fresh": "^0.3.0", + "http-assert": "^1.1.0", + "http-errors": "^1.2.8", + "koa-compose": "^2.3.0", + "koa-is-json": "^1.0.0", + "mime-types": "^2.0.7", + "on-finished": "^2.1.0", "only": "0.0.2", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "type-is": "1.6.15", - "vary": "1.1.1" + "parseurl": "^1.3.0", + "statuses": "^1.2.0", + "type-is": "^1.5.5", + "vary": "^1.0.0" } }, "koa-bodyparser": { @@ -931,8 +926,8 @@ "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-2.5.0.tgz", "integrity": "sha1-PrckP0eZii53LbBfbcTg9PPMvfA=", "requires": { - "co-body": "5.1.1", - "copy-to": "2.0.1" + "co-body": "^5.1.0", + "copy-to": "^2.0.1" } }, "koa-compose": { @@ -955,10 +950,10 @@ "resolved": "https://registry.npmjs.org/koa-logger/-/koa-logger-1.3.1.tgz", "integrity": "sha1-rT9fIZOzM0Mo8+uZphj0sEvui9U=", "requires": { - "bytes": "1.0.0", - "chalk": "1.1.3", + "bytes": "1", + "chalk": "^1.1.3", "humanize-number": "0.0.2", - "passthrough-counter": "1.0.0" + "passthrough-counter": "^1.0.0" }, "dependencies": { "bytes": { @@ -973,11 +968,11 @@ "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-5.4.2.tgz", "integrity": "sha1-Tb26fnFZU9VobAO3w/29IUYx+HA=", "requires": { - "co": "4.6.0", - "debug": "2.6.8", - "http-errors": "1.6.2", - "methods": "1.1.2", - "path-to-regexp": "1.7.0" + "co": "^4.6.0", + "debug": "^2.2.0", + "http-errors": "^1.3.1", + "methods": "^1.0.1", + "path-to-regexp": "^1.1.1" } }, "koa-send": { @@ -985,10 +980,10 @@ "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-3.3.0.tgz", "integrity": "sha1-WkriRVZGgMbs9geeknX6UXOoYdw=", "requires": { - "co": "4.6.0", - "debug": "2.6.8", - "mz": "2.7.0", - "resolve-path": "1.3.3" + "co": "^4.6.0", + "debug": "^2.6.0", + "mz": "^2.3.1", + "resolve-path": "^1.3.1" } }, "koa-static": { @@ -996,8 +991,8 @@ "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-2.1.0.tgz", "integrity": "sha1-z+KS6n2ryWqnI+SkiGFcxlrnQWk=", "requires": { - "debug": "2.6.8", - "koa-send": "3.3.0" + "debug": "^2.6.0", + "koa-send": "^3.3.0" } }, "lodash": { @@ -1048,7 +1043,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimatch": { @@ -1056,7 +1051,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1069,8 +1064,8 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz", "integrity": "sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==", "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" }, "dependencies": { "safe-buffer": { @@ -1085,7 +1080,7 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "requires": { - "minipass": "2.3.3" + "minipass": "^2.2.1" } }, "mkdirp": { @@ -1135,7 +1130,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -1166,9 +1161,9 @@ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "requires": { - "any-promise": "1.3.0", - "object-assign": "4.1.1", - "thenify-all": "1.6.0" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, "nan": { @@ -1181,9 +1176,9 @@ "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", "requires": { - "debug": "2.6.8", - "iconv-lite": "0.4.19", - "sax": "1.2.4" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, "negotiator": { @@ -1197,11 +1192,11 @@ "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", "dev": true, "requires": { - "formatio": "1.2.0", - "just-extend": "1.1.27", - "lolex": "1.6.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" + "formatio": "^1.2.0", + "just-extend": "^1.1.26", + "lolex": "^1.6.0", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" }, "dependencies": { "lolex": { @@ -1217,16 +1212,16 @@ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.1", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.8", - "rimraf": "2.6.2", - "semver": "5.4.1", - "tar": "4.4.4" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, "nodegit-promise": { @@ -1234,7 +1229,7 @@ "resolved": "https://registry.npmjs.org/nodegit-promise/-/nodegit-promise-4.0.0.tgz", "integrity": "sha1-VyKxhPLfcycWEGSnkdLoQskWezQ=", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "nopt": { @@ -1242,8 +1237,8 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npm-bundled": { @@ -1256,8 +1251,8 @@ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npmlog": { @@ -1265,10 +1260,10 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { - "are-we-there-yet": "1.1.5", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -1299,7 +1294,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "only": { @@ -1312,8 +1307,8 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "options": { @@ -1336,8 +1331,8 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "parseurl": { @@ -1384,7 +1379,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkginfo": { @@ -1397,8 +1392,8 @@ "resolved": "https://registry.npmjs.org/promisify-node/-/promisify-node-0.5.0.tgz", "integrity": "sha512-GR2E4qgCoKFTprhULqP2OP3bl8kHo16XtnqtkHH6be7tPW1yL6rXd15nl3oV2sLTFv1+j6tqoF69VVpFtJ/j+A==", "requires": { - "nodegit-promise": "4.0.0", - "object-assign": "4.1.1" + "nodegit-promise": "^4.0.0", + "object-assign": "^4.1.1" } }, "prompt-lite": { @@ -1406,10 +1401,10 @@ "resolved": "https://registry.npmjs.org/prompt-lite/-/prompt-lite-0.1.1.tgz", "integrity": "sha1-+oSPgboTnn0/Mhdz3a/JPTKFfHU=", "requires": { - "async": "0.1.22", - "colors": "0.6.2", - "read": "1.0.7", - "revalidator": "0.1.8" + "async": "~0.1.22", + "colors": "0.6.x", + "read": "1.0.x", + "revalidator": "0.1.x" }, "dependencies": { "async": { @@ -1430,9 +1425,9 @@ "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", "dev": true, "requires": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" } }, "punycode": { @@ -1445,9 +1440,9 @@ "resolved": "https://registry.npmjs.org/pushbullet/-/pushbullet-1.4.3.tgz", "integrity": "sha1-e/i87XooCKYrnIMpslyHH8lEoM4=", "requires": { - "mime": "1.2.11", - "request": "2.44.0", - "websocket": "1.0.24" + "mime": "~1.2.11", + "request": "~2.44.0", + "websocket": "~1.0.8" }, "dependencies": { "asn1": { @@ -1479,7 +1474,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", "requires": { - "readable-stream": "1.0.34" + "readable-stream": "~1.0.26" } }, "boom": { @@ -1487,7 +1482,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", "requires": { - "hoek": "0.9.1" + "hoek": "0.9.x" } }, "caseless": { @@ -1510,7 +1505,7 @@ "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", "optional": true, "requires": { - "boom": "0.4.2" + "boom": "0.4.x" } }, "delayed-stream": { @@ -1530,9 +1525,9 @@ "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", "optional": true, "requires": { - "async": "0.9.2", - "combined-stream": "0.0.7", - "mime": "1.2.11" + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime": "~1.2.11" } }, "hawk": { @@ -1541,10 +1536,10 @@ "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", "optional": true, "requires": { - "boom": "0.4.2", - "cryptiles": "0.2.2", - "hoek": "0.9.1", - "sntp": "0.2.4" + "boom": "0.4.x", + "cryptiles": "0.2.x", + "hoek": "0.9.x", + "sntp": "0.2.x" } }, "hoek": { @@ -1559,7 +1554,7 @@ "optional": true, "requires": { "asn1": "0.1.11", - "assert-plus": "0.1.5", + "assert-plus": "^0.1.5", "ctype": "0.5.3" } }, @@ -1589,10 +1584,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "request": { @@ -1600,21 +1595,21 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.44.0.tgz", "integrity": "sha1-eNYkVNaIU8rfsHrTH1i57JgHLqg=", "requires": { - "aws-sign2": "0.5.0", - "bl": "0.9.5", - "caseless": "0.6.0", - "forever-agent": "0.5.2", - "form-data": "0.1.4", + "aws-sign2": "~0.5.0", + "bl": "~0.9.0", + "caseless": "~0.6.0", + "forever-agent": "~0.5.0", + "form-data": "~0.1.0", "hawk": "1.1.1", - "http-signature": "0.10.1", - "json-stringify-safe": "5.0.1", - "mime-types": "1.0.2", - "node-uuid": "1.4.8", - "oauth-sign": "0.4.0", - "qs": "1.2.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3" + "http-signature": "~0.10.0", + "json-stringify-safe": "~5.0.0", + "mime-types": "~1.0.1", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.4.0", + "qs": "~1.2.0", + "stringstream": "~0.0.4", + "tough-cookie": ">=0.12.0", + "tunnel-agent": "~0.4.0" } }, "sntp": { @@ -1623,7 +1618,7 @@ "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", "optional": true, "requires": { - "hoek": "0.9.1" + "hoek": "0.9.x" } }, "tunnel-agent": { @@ -1654,10 +1649,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "deep-extend": { @@ -1677,7 +1672,7 @@ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", "requires": { - "mute-stream": "0.0.7" + "mute-stream": "~0.0.4" } }, "relieve": { @@ -1685,11 +1680,11 @@ "resolved": "https://registry.npmjs.org/relieve/-/relieve-2.2.1.tgz", "integrity": "sha1-7PG6kC2B0yaGef8StamGlunncXY=", "requires": { - "bluebird": "3.5.0", - "debug": "2.6.8", - "eventemitter2": "2.2.2", - "ipcee": "1.0.6", - "uuid": "2.0.3" + "bluebird": "^3.4.0", + "debug": "^2.2.0", + "eventemitter2": "^2.0.0", + "ipcee": "^1.0.6", + "uuid": "^2.0.2" }, "dependencies": { "uuid": { @@ -1704,28 +1699,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" }, "dependencies": { "assert-plus": { @@ -1743,7 +1738,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "cryptiles": { @@ -1751,7 +1746,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -1759,7 +1754,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } } } @@ -1769,10 +1764,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "hoek": { @@ -1785,9 +1780,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "qs": { @@ -1800,7 +1795,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "tough-cookie": { @@ -1808,7 +1803,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } } } @@ -1818,10 +1813,10 @@ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", "requires": { - "bluebird": "3.5.0", + "bluebird": "^3.5.0", "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.3" + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" }, "dependencies": { "tough-cookie": { @@ -1829,7 +1824,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } } } @@ -1839,7 +1834,7 @@ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "requires": { - "lodash": "4.17.4" + "lodash": "^4.13.1" }, "dependencies": { "lodash": { @@ -1860,7 +1855,7 @@ "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.3.3.tgz", "integrity": "sha1-TYOrpkaMK45jKldeP1Kw+g2+Glw=", "requires": { - "http-errors": "1.5.1", + "http-errors": "~1.5.0", "path-is-absolute": "1.0.1" }, "dependencies": { @@ -1871,7 +1866,7 @@ "requires": { "inherits": "2.0.3", "setprototypeof": "1.0.2", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" } }, "setprototypeof": { @@ -1896,7 +1891,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -1941,13 +1936,13 @@ "integrity": "sha512-FAdCcQ6lUAakWQMVRSIhiQU90d5EH1k3V6wRPrjxcYsv4vlBHjFzWLeoD63GoTKrFkfzVQs209aFW8V3cGLNtA==", "dev": true, "requires": { - "diff": "3.3.1", + "diff": "^3.1.0", "formatio": "1.2.0", - "lodash.get": "4.4.2", - "lolex": "2.3.1", - "nise": "1.2.0", - "supports-color": "5.1.0", - "type-detect": "4.0.7" + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" }, "dependencies": { "supports-color": { @@ -1956,7 +1951,7 @@ "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } }, "type-detect": { @@ -1972,9 +1967,9 @@ "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.0.2.tgz", "integrity": "sha512-51ferIRwYOhzUEtogqOa/y9supADlAht98bF/gbIi6WkzRJX6Yioldxbzj1MV4yV+LgdKD/kkHwFTeFXOG4htA==", "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.10.3", - "request": "2.87.0" + "nan": "~2.10.0", + "node-pre-gyp": "^0.10.3", + "request": "^2.87.0" }, "dependencies": { "assert-plus": { @@ -1992,9 +1987,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "nan": { @@ -2012,26 +2007,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.1", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "tough-cookie": { @@ -2039,7 +2034,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } } } @@ -2049,14 +2044,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -2076,7 +2071,7 @@ "resolved": "https://registry.npmjs.org/stats-lite/-/stats-lite-2.1.0.tgz", "integrity": "sha1-R2hU/biNA1xJvLv/cEyNhe6Esbo=", "requires": { - "isnumber": "1.0.0" + "isnumber": "~1.0.0" } }, "statuses": { @@ -2094,9 +2089,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -2114,7 +2109,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -2132,13 +2127,13 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.4.tgz", "integrity": "sha512-mq9ixIYfNF9SK0IS/h2HKMu8Q2iaCuhDDsZhdEag/FHv8fOaYld4vN7ouMgcSSt5WKZzPs8atclTcJm36OTh4w==", "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.3.3", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.3", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" }, "dependencies": { "safe-buffer": { @@ -2159,7 +2154,7 @@ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", "requires": { - "any-promise": "1.3.0" + "any-promise": "^1.0.0" } }, "thenify-all": { @@ -2167,7 +2162,7 @@ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", "requires": { - "thenify": "3.3.0" + "thenify": ">= 3.1.0 < 4" } }, "thunkify": { @@ -2191,7 +2186,7 @@ "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -2199,7 +2194,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -2213,8 +2208,8 @@ "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", "requires": { - "deep-extend": "0.5.0", - "request": "2.83.0" + "deep-extend": "^0.5.0", + "request": "^2.72.0" } }, "type-is": { @@ -2223,7 +2218,7 @@ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "~2.1.15" } }, "typedarray-to-buffer": { @@ -2231,7 +2226,7 @@ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz", "integrity": "sha1-EBezLZhP9VbroQD1AViauhrOLgQ=", "requires": { - "is-typedarray": "1.0.0" + "is-typedarray": "^1.0.0" } }, "ultron": { @@ -2269,9 +2264,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" }, "dependencies": { "assert-plus": { @@ -2286,10 +2281,10 @@ "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.24.tgz", "integrity": "sha1-dJA+dfJUW2suHeFCW8HJBZF6GJA=", "requires": { - "debug": "2.6.8", - "nan": "2.7.0", - "typedarray-to-buffer": "3.1.2", - "yaeti": "0.0.6" + "debug": "^2.2.0", + "nan": "^2.3.3", + "typedarray-to-buffer": "^3.1.2", + "yaeti": "^0.0.6" } }, "wide-align": { @@ -2297,7 +2292,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2 || 2" } }, "winston": { @@ -2305,12 +2300,12 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-2.3.1.tgz", "integrity": "sha1-C0hCDZeMAYBM8CMLZIhhWYIloRk=", "requires": { - "async": "1.0.0", - "colors": "1.0.3", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "stack-trace": "0.0.10" + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" }, "dependencies": { "async": { @@ -2330,8 +2325,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz", "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=", "requires": { - "options": "0.0.6", - "ultron": "1.0.2" + "options": ">=0.0.5", + "ultron": "1.0.x" } }, "yaeti": { diff --git a/package.json b/package.json index 15232419f..a1350b261 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gekko", - "version": "0.6.3", + "version": "0.6.4", "description": "A bitcoin trading bot for auto trading at various exchanges", "keywords": [ "trading", @@ -18,7 +18,6 @@ "@slack/client": "^3.10.0", "async": "2.1.2", "bitfinex-api-node": "^1.2.1", - "bitx": "^1.5.0", "co-fs": "^1.2.0", "commander": "^2.13.0", "gekko": "0.0.9", diff --git a/plugins.js b/plugins.js index 813d3ccce..482cf0e33 100644 --- a/plugins.js +++ b/plugins.js @@ -200,7 +200,8 @@ var plugins = [ description: 'Logs all gekko events.', slug: 'eventLogger', async: false, - modes: ['realtime', 'backtest'] + modes: ['realtime', 'backtest'], + greedy: true }, { name: 'Backtest result export', diff --git a/web/vue/dist/app.9aa8dda3.js b/web/vue/dist/app.9aa8dda3.js new file mode 100644 index 000000000..79c40a3d9 --- /dev/null +++ b/web/vue/dist/app.9aa8dda3.js @@ -0,0 +1,2 @@ +(function(t){function e(e){for(var n,s,o=e[0],c=e[1],u=e[2],d=0,f=[];d0?"profit":"loss"}}},s=i,o=(a("tr8z"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},"0zrD":function(t,e,a){"use strict";var n=a("jf14"),r=a.n(n);r.a},26:function(t,e,a){t.exports=a("Vtdi")},"2A8w":function(t,e,a){"use strict";var n=a("TDb6"),r=a.n(n);r.a},"2Yda":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain my2"},[a("h3",[t._v("Start a new gekko")]),a("gekko-config-builder",{on:{config:t.updateConfig}}),a("div",{staticClass:"hr"}),t.config.valid?a("div",{staticClass:"txt--center"},[t.pendingStratrunner?t._e():a("a",{staticClass:"w100--s my1 btn--primary",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.start(e)}}},[t._v("Start")]),t.pendingStratrunner?a("spinner"):t._e()],1):t._e()],1)},r=[],i=(a("Z2Ku"),a("L9s1"),a("dRSK"),a("LvDl")),s=a.n(i),o=a("Kw5r"),c=a("wiDz"),u=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd contain"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("h3",[t._v("Market")]),a("market-picker",{attrs:{"only-tradable":t.isTradebot},on:{market:t.updateMarketConfig}})],1),a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("type-picker",{on:{type:t.updateType}})],1)]),"market watcher"!==t.type?[a("div",{staticClass:"hr"}),a("strat-picker",{staticClass:"contain my2",on:{stratConfig:t.updateStrat}}),"paper trader"===t.type?a("div",{staticClass:"hr"}):t._e(),"paper trader"===t.type?a("paper-trader",{on:{settings:t.updatePaperTrader}}):t._e()]:t._e()],2)},l=[],d=(a("91GP"),a("6BxS")),f=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("h3",[t._v("Type")]),[a("label",{staticClass:"wrapper",attrs:{for:"type"}},[t._v("What do you want to do with gekko?")]),a("form",{staticClass:"radio grd"},t._l(t.types,function(e,n){return a("div",{staticClass:"grd-row m1"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.selectedTypeIndex,expression:"selectedTypeIndex"}],staticClass:"grd-row-col-1-6",attrs:{type:"radio"},domProps:{value:n,checked:t._q(t.selectedTypeIndex,n)},on:{change:function(e){t.selectedTypeIndex=n}}}),a("label",{staticClass:"grd-row-col-5-6",attrs:{for:n}},[t._v(t._s(e))])])}))]],2)},h=[],m={created:function(){this.emitType()},data:function(){return{types:["paper trader","market watcher","tradebot"],selectedTypeIndex:0}},methods:{emitType:function(){this.$emit("type",this.type)}},watch:{type:function(){this.emitType()}},computed:{type:function(){return this.types[this.selectedTypeIndex]}}},v=m,p=(a("wVPO"),a("KHd+")),g=Object(p["a"])(v,f,h,!1,null,null,null),_=g.exports,k=a("6Wkr"),y=a("rloZ"),w={created:function(){var t=this;Object(c["a"])("configPart/candleWriter",function(e,a){t.candleWriter=toml.parse(a.part)}),Object(c["a"])("configPart/performanceAnalyzer",function(e,a){t.performanceAnalyzer=toml.parse(a.part),t.performanceAnalyzer.enabled=!0})},data:function(){return{market:{},range:{},type:"",strat:{},paperTrader:{},candleWriter:{},performanceAnalyzer:{}}},components:{marketPicker:d["a"],typePicker:_,stratPicker:k["a"],paperTrader:y["a"]},computed:{isTradebot:function(){return"tradebot"===this.type},config:function(){var t={};return Object.assign(t,this.market,this.strat,{paperTrader:this.paperTrader},{candleWriter:this.candleWriter},{type:this.type},{performanceAnalyzer:this.performanceAnalyzer}),this.isTradebot&&(delete t.paperTrader,t.trader={enabled:!0}),t.valid=this.validConfig(t),t}},methods:{validConfig:function(t){if("market watcher"===t.type)return!0;if(!t.tradingAdvisor)return!1;if(s.a.isNaN(t.tradingAdvisor.candleSize))return!1;if(0==t.tradingAdvisor.candleSize)return!1;var e=t.tradingAdvisor.method;return!s.a.isEmpty(t[e])},updateMarketConfig:function(t){this.market=t,this.emitConfig()},updateType:function(t){this.type=t,this.emitConfig()},updateStrat:function(t){this.strat=t,this.emitConfig()},updatePaperTrader:function(t){this.paperTrader=t,this.paperTrader.enabled=!0,this.emitConfig()},emitConfig:function(){this.$emit("config",this.config)}}},b=w,C=(a("YEdZ"),Object(p["a"])(b,u,l,!1,null,null,null)),x=C.exports,S=a("MB/c"),T={components:{gekkoConfigBuilder:x,spinner:S["a"]},data:function(){return{pendingStratrunner:!1,config:{}}},computed:{gekkos:function(){return this.$store.state.gekkos},watchConfig:function(){var t=s.a.pick(this.config,"watch","candleWriter"),e=o["a"].util.extend({},t);return e.type="market watcher",e.mode="realtime",e},requiredHistoricalData:function(){if(this.config.tradingAdvisor&&this.config.valid){var t=this.config.tradingAdvisor;return t.candleSize*t.historySize}},gekkoConfig:function(){var t;if(this.existingMarketWatcher){if(this.requiredHistoricalData){var e=moment().utc().startOf("minute").subtract(this.requiredHistoricalData,"minutes").unix(),a=moment.utc(this.existingMarketWatcher.events.initial.candle.start).unix();t=moment.unix(Math.max(e,a)).utc().format()}else t=moment().utc().startOf("minute").format();var n=o["a"].util.extend({market:{type:"leech",from:t},mode:"realtime"},this.config);return n}},existingMarketWatcher:function(){var t=o["a"].util.extend({},this.watchConfig.watch);return s.a.find(this.gekkos,{config:{watch:t}})},exchange:function(){return this.watchConfig.watch.exchange},existingTradebot:function(){var t=this;return s.a.find(this.gekkos,function(e){return"tradebot"===e.logType&&e.config.watch.exchange===t.exchange})},availableApiKeys:function(){return this.$store.state.apiKeys}},watch:{existingMarketWatcher:function(t,e){var a=this;if(this.pendingStratrunner){var n=this.existingMarketWatcher;n.events.latest.candle&&(this.pendingStratrunner=!1,this.startGekko(function(t,e){a.$router.push({path:"/live-gekkos/".concat(e.id)})}))}}},methods:{updateConfig:function(t){this.config=t},start:function(){var t=this;if("tradebot"===this.config.type){if(this.existingTradebot){var e="You already have a tradebot running on this exchange";return e+=", you can only run one tradebot per exchange.",alert(e)}if(!this.availableApiKeys.includes(this.exchange))return alert("Please first configure API keys for this exchange in the config page.")}"market watcher"===this.config.type?this.existingMarketWatcher?(alert("This market is already being watched, redirecting you now..."),this.$router.push({path:"/live-gekkos/".concat(this.existingMarketWatcher.id)})):this.startWatcher(function(e,a){t.$router.push({path:"/live-gekkos/".concat(a.id)})}):this.existingMarketWatcher?this.startGekko(this.routeToGekko):this.startWatcher(function(e,a){t.pendingStratrunner=a.id})},routeToGekko:function(t,e){if(t||e.error)return console.error(t,e.error);this.$router.push({path:"/live-gekkos/".concat(e.id)})},startWatcher:function(t){Object(c["b"])("startGekko",this.watchConfig,t)},startGekko:function(t){Object(c["b"])("startGekko",this.gekkoConfig,t)}}},E=T,P=(a("2A8w"),Object(p["a"])(E,n,r,!1,null,null,null));e["a"]=P.exports},"2rY9":function(t,e,a){"use strict";var n=a("SWS5"),r=a.n(n);r.a},"5/bm":function(t,e,a){},"5shn":function(t,e,a){"use strict";var n=a("DlQD"),r=new n.Renderer;r.link=function(t,e,a){var n,r,i;return n=/^https?:\/\/.+$/.test(t),r=n||"newWindow"===e,i='"+a+""},n.setOptions({renderer:r}),e["a"]=n},"6BxS":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{staticClass:"mx1"},[a("label",{staticClass:"wrapper",attrs:{for:"exchange"}},[t._v("Exchange:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.exchange,expression:"exchange"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.exchange=e.target.multiple?a:a[0]}}},t._l(t.exchanges,function(e,n){return a("option",[t._v(t._s(n))])}))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("label",{attrs:{for:"currency"}},[t._v("Currency:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.currency,expression:"currency"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.currency=e.target.multiple?a:a[0]}}},t._l(t.currencies,function(e){return a("option",[t._v(t._s(e))])}))])]),a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("label",{attrs:{for:"asset"}},[t._v("Asset:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.asset,expression:"asset"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.asset=e.target.multiple?a:a[0]}}},t._l(t.assets,function(e){return a("option",[t._v(t._s(e))])}))])])])])},r=[],i=(a("rGqo"),a("yt8O"),a("f3/d"),a("91GP"),a("LvDl")),s=a.n(i),o=(a("YIjs"),a("FhOJ"),a("wiDz"),{props:["onlyTradable","onlyImportable"],data:function(){return{exchange:"poloniex",currency:"USDT",asset:"BTC"}},created:function(){this.emitConfig()},computed:{exchanges:function(){var t=Object.assign({},this.$store.state.exchanges);return!s.a.isEmpty(t)&&(this.onlyTradable&&s.a.each(t,function(e,a){e.tradable||delete t[a]}),this.onlyImportable&&s.a.each(t,function(e,a){e.importable||delete t[a]}),t)},markets:function(){return this.exchanges?this.exchanges[this.exchange]:null},assets:function(){return this.exchanges?this.exchanges[this.exchange].markets[this.currency]:null},currencies:function(){return this.exchanges?s.a.keys(this.exchanges[this.exchange].markets):null},watchConfig:function(){return{watch:{exchange:this.exchange,currency:this.currency,asset:this.asset}}}},watch:{currency:function(){this.emitConfig()},asset:function(){this.emitConfig()},market:function(){this.emitConfig()},exchanges:function(){this.emitConfig()},exchange:function(){this.emitConfig()}},methods:{emitConfig:function(){this.$emit("market",this.watchConfig)}}}),c=o,u=a("KHd+"),l=Object(u["a"])(c,n,r,!1,null,null,null);e["a"]=l.exports},"6Wkr":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 px1"},[a("h3",[t._v("Strategy")]),a("div",[a("label",{staticClass:"wrapper",attrs:{for:"strat"}},[t._v("Strategy:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.strategy,expression:"strategy"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.strategy=e.target.multiple?a:a[0]}}},t._l(t.strategies,function(e){return a("option",[t._v(t._s(e.name))])}))])]),a("div",[a("label",{attrs:{for:"candleSize"}},[t._v("Candle Size")]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.rawCandleSize,expression:"rawCandleSize"}],domProps:{value:t.rawCandleSize},on:{input:function(e){e.target.composing||(t.rawCandleSize=e.target.value)}}})]),a("div",{staticClass:"grd-row-col-3-6 align"},[a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.candleSizeUnit,expression:"candleSizeUnit"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.candleSizeUnit=e.target.multiple?a:a[0]}}},[a("option",[t._v("minutes")]),a("option",[t._v("hours")]),a("option",[t._v("days")])])])])])]),a("div",[a("label",{attrs:{for:"historySize"}},[t._v("Warmup period (in "+t._s(t.rawCandleSize)+" "+t._s(t.singularCandleSizeUnit)+" candles):")]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.historySize,expression:"historySize"}],domProps:{value:t.historySize},on:{input:function(e){e.target.composing||(t.historySize=e.target.value)}}}),a("em",{staticClass:"label-like"},[t._v("(will use "+t._s(t.humanizeDuration(t.candleSize*t.historySize*1e3*60))+" of data as history)")])])]),a("div",{staticClass:"grd-row-col-3-6 px1"},[a("div",[a("h3",[t._v("Parameters")]),a("p",[t._v(t._s(t.strategy)+" Parameters:")]),a("textarea",{directives:[{name:"model",rawName:"v-model",value:t.rawStratParams,expression:"rawStratParams"}],staticClass:"params",domProps:{value:t.rawStratParams},on:{input:function(e){e.target.composing||(t.rawStratParams=e.target.value)}}}),t.rawStratParamsError?a("p",{staticClass:"bg--red p1"},[t._v(t._s(t.rawStratParamsError.message))]):t._e()])])])])},r=[],i=(a("dRSK"),a("LvDl")),s=a.n(i),o=a("wiDz"),c={data:function(){return{strategies:[],candleSizeUnit:"hours",rawCandleSize:1,strategy:"MACD",historySize:10,rawStratParams:"",rawStratParamsError:!1,emptyStrat:!1,stratParams:{}}},created:function(){var t=this;Object(o["a"])("strategies",function(e,a){t.strategies=a,s.a.each(t.strategies,function(t){t.empty=""===t.params}),t.rawStratParams=s.a.find(t.strategies,{name:t.strategy}).params,t.emptyStrat=s.a.find(t.strategies,{name:t.strategy}).empty,t.emitConfig()})},watch:{strategy:function(t){t=s.a.find(this.strategies,{name:t}),this.rawStratParams=t.params,this.emptyStrat=t.empty,this.emitConfig()},candleSize:function(){this.emitConfig()},historySize:function(){this.emitConfig()},rawStratParams:function(){this.emitConfig()}},computed:{candleSize:function(){return"minutes"===this.candleSizeUnit?this.rawCandleSize:"hours"===this.candleSizeUnit?60*this.rawCandleSize:"days"===this.candleSizeUnit?60*this.rawCandleSize*24:void 0},singularCandleSizeUnit:function(){return this.candleSizeUnit.slice(0,-1)},config:function(){var t={tradingAdvisor:{enabled:!0,method:this.strategy,candleSize:+this.candleSize,historySize:+this.historySize}};return this.emptyStrat?t[this.strategy]={__empty:!0}:t[this.strategy]=this.stratParams,t}},methods:{humanizeDuration:function(t){return window.humanizeDuration(t)},emitConfig:function(){this.parseParams(),this.$emit("stratConfig",this.config)},parseParams:function(){try{this.stratParams=toml.parse(this.rawStratParams),this.rawStratParamsError=!1}catch(t){this.rawStratParamsError=t,this.stratParams={}}}}},u=c,l=(a("tr8f"),a("KHd+")),d=Object(l["a"])(u,n,r,!1,null,null,null);e["a"]=d.exports},"7LpK":function(t,e,a){},"8KAT":function(t,e,a){},"9RND":function(t){t.exports={name:"gekko",version:"0.6.4",description:"A bitcoin trading bot for auto trading at various exchanges",keywords:["trading","bot","bitcoin","TA","finance"],scripts:{test:"./node_modules/.bin/mocha test/*.js --recursive test -u tdd --reporter spec",start:"node ./gekko --config config.js --ui"},author:"Mike van Rossum ",dependencies:{"@slack/client":"^3.10.0",async:"2.1.2","bitfinex-api-node":"^1.2.1","co-fs":"^1.2.0",commander:"^2.13.0",gekko:"0.0.9","humanize-duration":"^3.10.0",koa:"^1.2.0","koa-bodyparser":"^2.2.0","koa-cors":"0.0.16","koa-logger":"^1.3.0","koa-router":"^5.4.0","koa-static":"^2.0.0",lodash:"2.x",moment:"^2.20.1",opn:"^4.0.2","promisify-node":"^0.5.0","prompt-lite":"0.1.1",pushbullet:"1.4.3",relieve:"^2.1.3",retry:"^0.10.1",semver:"5.4.1",sqlite3:"^4.0.0","stats-lite":"^2.0.4","tiny-promisify":"^0.1.1",toml:"^2.3.0",twitter:"^1.7.1"},devDependencies:{chai:"^4.1.2",mocha:"^5.0.0",proxyquire:"^1.7.10",request:"^2.83.0","request-promise":"^4.2.2",sinon:"^4.2.0"},engines:{node:">=8.11.2"},license:"MIT",repository:{type:"git",url:"https://github.com/askmike/gekko.git"}}},CyGp:function(t,e,a){"use strict";var n=a("jTvs"),r=a.n(n);r.a},EAJ1:function(t,e,a){},EDI0:function(t,e,a){},EfWa:function(t,e,a){},FhOJ:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("h3",[t._v("Daterange")]),a("div",[a("label",{attrs:{for:"from"}},[t._v("From")]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.from,expression:"from"}],domProps:{value:t.from},on:{input:function(e){e.target.composing||(t.from=e.target.value)}}})]),a("div",[a("label",{attrs:{for:"to"}},[t._v("To")]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.to,expression:"to"}],domProps:{value:t.to},on:{input:function(e){e.target.composing||(t.to=e.target.value)}}})])])},r=[],i=(a("LvDl"),a("wiDz"),{data:function(){return{from:"",to:""}},created:function(){var t=moment().startOf("minute"),e=t.clone().subtract(3,"months");this.to=this.fmt(t),this.from=this.fmt(e),this.emitRange()},methods:{fmtTs:function(t){return moment.unix(t).utc()},fmt:function(t){return t.utc().format("YYYY-MM-DD HH:mm")},emitRange:function(){this.$emit("range",{from:this.fmtTs(this.from),to:this.fmtTs(this.to)})},emitManualEntry:function(){if(this.from.length<"4"||this.from.length<"4")return this.$emit("range",{});var t=moment.utc(this.from),e=moment.utc(this.to);t.isValid()&&e.isValid()?this.$emit("range",{from:this.fmt(t),to:this.fmt(e)}):this.$emit("range",{})}},watch:{from:function(){this.emitManualEntry()},to:function(){this.emitManualEntry()},config:function(){this.scanned=!1},tab:function(){this.scanned=!1,this.$emit("range",{})},selectedRangeIndex:function(){var t=this.ranges[this.selectedRangeIndex];t&&this.emitRange(t)}}}),s=i,o=(a("TPp/"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},"H+ir":function(t,e,a){"use strict";var n=a("5/bm"),r=a.n(n);r.a},Kd0R:function(t,e,a){},"MB/c":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"spinner"},[a("div",{staticClass:"rect1"}),a("div",{staticClass:"rect2"}),a("div",{staticClass:"rect3"}),a("div",{staticClass:"rect4"})])}],i={},s=i,o=(a("q431"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},Pf3K:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app"}},[a("top"),a("div",{staticClass:"fill"},[a("router-view",{staticClass:"view"})],1),a("bottom"),a("modal")],1)},r=[],i=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{attrs:{id:"top"}}),t._m(0),a("nav",{staticClass:"bg--light-gray"},[a("div",{staticClass:"menu contain"},[a("router-link",{staticClass:"py1",attrs:{to:"/home"}},[t._v("Home")]),a("router-link",{staticClass:"py1",attrs:{to:"/live-gekkos"}},[t._v("Live Gekkos")]),a("router-link",{staticClass:"py1",attrs:{to:"/backtest"}},[t._v("Backtest")]),a("router-link",{staticClass:"py1",attrs:{to:"/data"}},[t._v("Local data")]),a("router-link",{staticClass:"py1",attrs:{to:"/config"}},[t._v("Config")]),a("a",{staticClass:"py1",attrs:{href:"https://gekko.wizb.it/docs/introduction/about_gekko.html",target:"_blank"}},[t._v("Documentation")])],1)])])},s=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("header",{staticClass:"bg--off-white grd"},[a("div",{staticClass:"contain grd-row"},[a("h3",{staticClass:"py1 px2 col-2"},[t._v("Gekko UI")])])])}],o={},c=o,u=(a("uMTv"),a("KHd+")),l=Object(u["a"])(c,i,s,!1,null,null,null),d=l.exports,f=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("footer",{staticClass:"p2 bg--off-white"},[a("div",{staticClass:"contain"},[t._m(0),a("p",[t._v("Using Gekko v"+t._s(t.version.gekko)+" and Gekko UI v"+t._s(t.version.ui)+".")])])])},h=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("p",[a("em",[t._v("Use Gekko at your own risk.")])])}],m=a("9RND"),v=a("kiQV"),p={data:function(){return{version:{gekko:m.version,ui:v.version}}}},g=p,_=Object(u["a"])(g,f,h,!1,null,null,null),k=_.exports,y=function(){var t=this,e=t.$createElement,a=t._self._c||e;return t.active?a("div",[a("div",{attrs:{id:"modal-background"}}),a("div",{staticClass:"modal",attrs:{id:"modal"}},[a("div",{staticClass:"modal-guts",domProps:{innerHTML:t._s(t.content)}})])]):t._e()},w=[],b=a("5shn"),C={disconnected:Object(b["a"])("\n\n## Disconnected\n\nSomething happened to either Gekko or the connection.\nPlease check the terminal where Gekko is running or\nyour network connection.\n\n*This message is shown when the UI is unable to open a websocket connection with the Gekko Server.*\n\n ")},x={computed:{active:function(){return!this.$store.state.warnings.connected},content:function(){return this.$store.state.warnings.connected?"":C.disconnected}}},S=x,T=(a("TfKe"),Object(u["a"])(S,y,w,!1,null,null,null)),E=T.exports,P={name:"app",components:{top:d,bottom:k,modal:E}},A=P,z=(a("ZL7j"),Object(u["a"])(A,n,r,!1,null,null,null));e["a"]=z.exports},Q2AE:function(t,e,a){"use strict";var n={};a.r(n),a.d(n,"addImport",function(){return d}),a.d(n,"syncImports",function(){return f}),a.d(n,"updateImport",function(){return h});var r={};a.r(r),a.d(r,"syncGekkos",function(){return g}),a.d(r,"addGekko",function(){return _}),a.d(r,"updateGekko",function(){return k}),a.d(r,"archiveGekko",function(){return y}),a.d(r,"errorGekko",function(){return w}),a.d(r,"deleteGekko",function(){return b});var i={};a.r(i),a.d(i,"setGlobalWarning",function(){return C});var s={};a.r(s),a.d(s,"syncApiKeys",function(){return x}),a.d(s,"syncExchanges",function(){return S});a("VRzm");var o=a("Kw5r"),c=a("L2JU"),u=a("LvDl"),l=a.n(u),d=(a("INYr"),function(t,e){return t.imports.push(e),t}),f=function(t,e){return t.imports=e,t},h=function(t,e){var a=t.imports.findIndex(function(t){return t.id===e.import_id}),n=t.imports[a];if(!n)return t;var r=o["a"].util.extend(n,e.updates);return o["a"].set(t.imports,a,r),t},m=a("oyJW"),v=a("yT7P"),p=a("c7Wa"),g=function(t,e){return e?(t.gekkos=e.live,t.archivedGekkos=e.archive,t):t},_=function(t,e){return t.gekkos=Object(v["a"])({},t.gekkos,Object(m["a"])({},e.id,e)),t},k=function(t,e){return e.id&&l.a.has(t.gekkos,e.id)?(t.gekkos=Object(v["a"])({},t.gekkos,Object(m["a"])({},e.id,p(t.gekkos[e.id],e.event))),t):console.error("cannot update unknown gekko..")},y=function(t,e){return l.a.has(t.gekkos,e)?(t.archivedGekkos=Object(v["a"])({},t.archivedGekkos,Object(m["a"])({},e,Object(v["a"])({},t.gekkos[e],{stopped:!0,active:!1}))),t.gekkos=l.a.omit(t.gekkos,e),t):console.error("cannot archive unknown gekko..")},w=function(t,e){return l.a.has(t.gekkos,e.id)?(t.gekkos=Object(v["a"])({},t.gekkos,Object(m["a"])({},e.id,Object(v["a"])({},t.gekkos[e.id],{errored:!0,errorMessage:e.error}))),t):console.error("cannot error unknown gekko..")},b=function(t,e){return l.a.has(t.archivedGekkos,e)?(t.archivedGekkos=l.a.omit(t.archivedGekkos,e),t):console.error("cannot delete unknown gekko..")},C=function(t,e){return t.warnings[e.key]=e.value,t},x=function(t,e){return o["a"].set(t,"apiKeys",e),t},S=function(t,e){return o["a"].set(t,"exchanges",e),t};o["a"].use(c["a"]);var T=!1,E={};l.a.merge(E,n),l.a.merge(E,r),l.a.merge(E,i),l.a.merge(E,s);e["a"]=new c["a"].Store({state:{warnings:{connected:!0},imports:[],gekkos:{},archivedGekkos:{},connection:{disconnected:!1,reconnected:!1},apiKeys:[],exchanges:{}},mutations:E,strict:T})},Q6eY:function(t,e,a){"use strict";var n=a("SDwi"),r=a.n(n);r.a},SDwi:function(t,e,a){},SWS5:function(t,e,a){},T0Mt:function(t,e,a){"use strict";var n=a("pd3X"),r=a.n(n);r.a},TDb6:function(t,e,a){},"TPp/":function(t,e,a){"use strict";var n=a("7LpK"),r=a.n(n);r.a},TfKe:function(t,e,a){"use strict";var n=a("ZpQ2"),r=a.n(n);r.a},UeuA:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{class:{clickable:!t.isClicked},attrs:{id:"chartWrapper"}},[a("div",{staticClass:"shield",on:{click:function(e){return e.preventDefault(),t.click(e)}}}),a("svg",{attrs:{id:"chart",width:"960",height:t.height}})])},r=[],i=a("k5N+"),s=a("LvDl"),o=a.n(s),c=function(t,e,a){var n=function(t){return o.a.isNumber(t)?moment.unix(t).utc().toDate():moment.utc(t).toDate()},r=e.map(function(t){return{price:t.price,date:n(t.date),action:t.action}}),s=t.map(function(t){return{price:t.open,date:n(t.start)}}),c=s.map(function(t){return+t.date}),u=s.map(function(t){return+t.price}),l=d3.select("#chart");l.attr("width",window.innerWidth-20);var d={top:20,right:20,bottom:110,left:40},f=a-d.top-d.bottom,h={top:a-70,right:20,bottom:30,left:40},m=+l.attr("width")-d.left-d.right,v=a-h.top-h.bottom,p=d3.scaleUtc().range([0,m]),g=d3.scaleUtc().range([0,m]),_=d3.scaleLinear().range([f,0]),k=d3.scaleLinear().range([v,0]),y=d3.axisBottom(p),w=d3.axisBottom(g),b=d3.axisLeft(_).ticks(a/50),C=d3.brushX().extent([[0,0],[m,v]]).on("brush end",z),x=d3.zoom().scaleExtent([1,100]).translateExtent([[0,0],[m,f]]).extent([[0,0],[m,f]]).on("zoom",$),S=d3.line().x(function(t){return p(t.date)}).y(function(t){return _(t.price)}),T=d3.line().x(function(t){return g(t.date)}).y(function(t){return k(t.price)});l.append("defs").append("clipPath").attr("id","clip").append("rect").attr("width",m).attr("height",f);var E=l.append("g").attr("class","focus").attr("transform","translate("+d.left+","+d.top+")"),P=l.append("g").attr("class","context").attr("transform","translate("+h.left+","+h.top+")");p.domain(d3.extent(s,function(t){return t.date})),_.domain([.99*d3.min(u),1.01*d3.max(u)]),g.domain(p.domain()),k.domain(_.domain()),E.append("path").datum(s).attr("class","line price").attr("d",S),E.append("g").attr("class","axis axis--x").attr("transform","translate(0,"+f+")").call(y),E.append("g").attr("class","axis axis--y").call(b),P.append("path").datum(s).attr("class","line").attr("d",T),P.append("g").attr("class","axis axis--x").attr("transform","translate(0,"+v+")").call(w);var A=l.append("g").attr("transform","translate("+d.left+","+d.top+")").selectAll("circle").data(r).enter().append("circle").attr("class",function(t){return t.action}).attr("cx",function(t){return p(t.date)}).attr("cy",function(t){return _(t.price)}).attr("r",5);P.append("g").selectAll("circle").data(r).enter().append("circle").attr("class",function(t){return t.action}).attr("cx",function(t){return g(t.date)}).attr("cy",function(t){return k(t.price)}).attr("r",3);function z(){if(!d3.event.sourceEvent||"zoom"!==d3.event.sourceEvent.type){var t=d3.event.selection||g.range();p.domain(t.map(g.invert,g)),D(p.domain()),l.select(".axis--y").call(b),A.attr("cx",function(t){return p(t.date)}).attr("cy",function(t){return _(t.price)}),E.select(".line").attr("d",S),E.select(".axis--x").call(y),l.select(".zoom").call(x.transform,d3.zoomIdentity.scale(m/(t[1]-t[0])).translate(-t[0],0))}}function D(t){var e=Object(i["a"])(t,2),a=e[0],n=e[1],r=o.a.sortedIndex(c,a),s=o.a.sortedIndex(c,n),l=u.slice(r,s);_.domain([.9995*d3.min(l),1.0005*d3.max(l)])}function $(){if(!d3.event.sourceEvent||"brush"!==d3.event.sourceEvent.type){var t=d3.event.transform;D(t.rescaleX(g).domain()),l.select(".axis--y").call(b),p.domain(t.rescaleX(g).domain()),E.select(".line").attr("d",S),A.attr("cx",function(t){return p(t.date)}).attr("cy",function(t){return _(t.price)}),E.select(".axis--x").call(y),P.select(".brush").call(C.move,p.range().map(t.invertX,t))}}P.append("g").attr("class","brush").call(C).call(C.move,p.range()),l.append("rect").attr("class","zoom").attr("width",m).attr("height",f).attr("transform","translate("+d.left+","+d.top+")").call(x)},u=(a("dRSK"),function(t){d3.select("#chart").append("text").attr("class","message").attr("x",150).attr("y",150).text(t)}),l=4,d={props:["data","height"],data:function(){return{isClicked:!1}},watch:{data:function(){this.render()}},created:function(){setTimeout(this.render,100)},beforeDestroy:function(){this.remove()},methods:{click:function(){this.isClicked=!0},render:function(){this.remove(),_.size(this.data.candles)0?"profit":"loss"}}},$=D,j=(a("WlXR"),Object(g["a"])($,P,A,!1,null,null,null)),O=j.exports,M=a("UeuA"),G=a("vf3E"),I={props:["result"],data:function(){return{}},methods:{},components:{roundtripTable:G["a"],resultSummary:O,chart:M["a"]},computed:{candles:function(){return{candles:this.result.stratCandles,trades:this.result.trades}}}},R=I,H=(a("wVP4"),Object(g["a"])(R,T,E,!1,null,null,null)),K=H.exports,Y={data:function(){return{backtestable:!1,backtestState:"idle",backtestResult:!1,config:!1}},methods:{check:function(t){if(this.config=t,!t.valid)return this.backtestable=!1;this.backtestable=!0},run:function(){var t=this;this.backtestState="fetching",Object(f["b"])("backtest",this.config,function(e,a){t.backtestState="fetched",t.backtestResult=a})}},components:{configBuilder:S,result:K,spinner:h["a"]}},W=Y,N=Object(g["a"])(W,n,r,!1,null,null,null);e["a"]=N.exports},c7Wa:function(t,e){const a=["marketUpdate"],n=["marketStart","stratWarmupCompleted"],r=["tradeCompleted","advice","roundtrip"],i=(t,e)=>{const i=e.type,s=e.payload;return t={...t,latestUpdate:new Date},r.includes(i)&&(t=t.events[i]?{...t,events:{...t.events,[i]:[...t.events[i],s]}}:{...t,events:{...t.events,[i]:[s]}}),t.events.initial[i]||a.includes(i)||(t={...t,events:{...t.events,initial:{...t.events.initial,[i]:s}}}),n.includes(i)||(t={...t,events:{...t.events,latest:{...t.events.latest,[i]:s}}}),t};t.exports=i},dHeD:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain"},[a("div",{staticClass:"text",domProps:{innerHTML:t._s(t.intro)}}),a("div",{staticClass:"hr"}),a("h2",[t._v("Available datasets")]),"idle"===t.datasetScanstate?a("div",{staticClass:"txt--center my2"},[a("a",{staticClass:"w100--s btn--primary scan-btn",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.scan(e)}}},[t._v("Scan available data")])]):t._e(),"scanning"===t.datasetScanstate?a("div",{staticClass:"txt--center my2"},[a("spinner")],1):t._e(),"scanned"===t.datasetScanstate?a("div",{staticClass:"my2"},[t.unscannableMakets.length?a("div",{staticClass:"bg--orange p1 warning my1"},[t.viewUnscannable?t._e():a("p",{staticClass:"clickable",on:{click:function(e){return e.preventDefault(),t.toggleUnscannable(e)}}},[t._v("Some markets were unscannable, click here for details.")]),t.viewUnscannable?[a("p",[t._v("Unable to find datasets in the following markets:")]),t._l(t.unscannableMakets,function(e){return a("div",{staticClass:"mx2"},[t._v("- "+t._s(e.exchange)+":"+t._s(e.currency)+":"+t._s(e.asset))])})]:t._e()],2):t._e(),t.datasets.length?[a("table",{staticClass:"full data"},[t._m(0),a("tbody",t._l(t.datasets,function(e){return a("tr",[a("td",[t._v(t._s(e.exchange))]),a("td",[t._v(t._s(e.currency))]),a("td",[t._v(t._s(e.asset))]),a("td",[t._v(t._s(t.fmt(e.from)))]),a("td",[t._v(t._s(t.fmt(e.to)))]),a("td",[t._v(t._s(t.humanizeDuration(e.to.diff(e.from))))])])}))])]:t._e(),t.datasets.length?t._e():[a("p",[t._v("It looks like you don't have any local data yet.")])]],2):t._e(),a("div",{staticClass:"my2"},[a("h2",[t._v("Import more data")]),a("p",{staticClass:"text"},[t._v("You can easily import more market data directly from exchanges using the importer.")]),a("router-link",{staticClass:"btn--primary",attrs:{to:"/data/importer"}},[t._v("Go to the importer!")])],1)])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("thead",[a("tr",[a("th",[t._v("exchange")]),a("th",[t._v("currency")]),a("th",[t._v("asset")]),a("th",[t._v("from")]),a("th",[t._v("to")]),a("th",[t._v("duration")])])])}],i=(a("VRzm"),a("MB/c")),s=a("5shn"),o=a("spvI"),c=Object(s["a"])("\n\n## Local data\n\nGekko needs local market data in order to backtest strategies. The local\ndata can also be used in a warmup period when running a strategy against a\nlive market.\n\n"),u={mixins:[o["a"]],components:{spinner:i["a"]},data:function(){return{intro:c,viewUnscannable:!1}},methods:{toggleUnscannable:function(){this.viewUnscannable=!0},humanizeDuration:function(t){return window.humanizeDuration(t)},fmt:function(t){return t.format("YYYY-MM-DD HH:mm")}}},l=u,d=(a("2rY9"),a("KHd+")),f=Object(d["a"])(l,n,r,!1,null,null,null);e["a"]=f.exports},dW8q:function(t,e,a){"use strict";var n=a("w3yp"),r=a.n(n);r.a},daul:function(t,e,a){"use strict";var n=a("Kd0R"),r=a.n(n);r.a},g298:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain my2"},[t.data&&!t.data.done?a("div",[a("h2",[t._v("Importing data..")]),a("div",{staticClass:"grd"},[a("div",{staticClass:"grd-row"},[t._m(0),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.data.watch.exchange))])]),a("div",{staticClass:"grd-row"},[t._m(1),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.data.watch.currency)+"/"+t._s(t.data.watch.asset))])])]),a("div",{staticClass:"grd"},[a("div",{staticClass:"grd-row"},[t._m(2),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.from)))])]),a("div",{staticClass:"grd-row"},[t._m(3),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.to)))])]),t.initialized?a("div",{staticClass:"grd-row"},[t._m(4),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.latest)))])]):t._e(),t.initialized?a("div",{staticClass:"grd-row"},[t._m(5),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fromEnd))])]):t._e()]),t.initialized?t._e():a("spinner"),t.initialized?a("div",{staticClass:"contain"},[a("progressBar",{attrs:{progress:t.progress}})],1):t._e(),a("p",[a("em",[t._v("(you don't have to wait until the import is done,you can already start "),a("router-link",{attrs:{to:"/backtest"}},[t._v("backtesting")]),t._v(").")],1)])],1):t._e(),t.data&&t.data.done?a("div",{staticClass:"txt--center"},[a("h2",[t._v("Import done")]),a("p",[t._v(" Go and "),a("router-link",{attrs:{to:"/backtest"}},[t._v("backtest")]),t._v(" with your new data!")],1)]):t._e(),t.data?t._e():a("div",{staticClass:"txt--center"},[a("h2",[t._v("ERROR: Unknown import")]),a("p",[a("I",[t._v("don't know this import..")])],1)])])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Market:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Currency/Asset:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("From:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("To:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Imported data until:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Remaining:")])])}],i=(a("dRSK"),a("LvDl")),s=a.n(i),o=function(){var t=this,e=t.$createElement,a=t._self._c||e;return t.progress?a("div",{staticClass:"progressbarWrapper"},[a("p",[a("strong",[t._v(t._s(t.round(t.progress))+"%")])]),a("div",{staticClass:"progressbar"},[a("div",{style:{width:t.progress+"%"}})])]):t._e()},c=[],u={props:["progress"],methods:{round:function(t){return(+t).toFixed(2)}}},l=u,d=(a("/vJE"),a("KHd+")),f=Object(d["a"])(l,o,c,!1,null,null,null),h=f.exports,m=a("MB/c"),v={components:{progressBar:h,spinner:m["a"]},computed:{data:function(){return s.a.find(this.$store.state.imports,{id:this.$route.params.id})},initialized:function(){if(this.data&&this.latest.isValid())return!0},latest:function(){if(this.data)return this.mom(this.data.latest)},fromEndMs:function(){if(this.data)return this.to.diff(this.latest)},fromEnd:function(){return this.latest?humanizeDuration(this.fromEndMs):"LOADING"},from:function(){if(this.data)return this.mom(this.data.from)},to:function(){if(this.data)return this.mom(this.data.to)},timespan:function(){if(this.data)return this.to.diff(this.from)},progress:function(){if(this.data){var t=this.timespan-this.fromEndMs;return 100*t/this.timespan}}},methods:{fmt:function(t){return t.format("YYYY-MM-DD HH:mm:ss")},mom:function(t){return moment.utc(t)}}},p=v,g=(a("qDq4"),Object(d["a"])(p,n,r,!1,null,null,null));e["a"]=g.exports},gYof:function(t,e,a){"use strict";a("LvDl");var n=a("Kw5r"),r=a("r0f2"),i=(a("L2JU"),a("wiDz")),s=a("Q2AE"),o=function(){Object(i["a"])("imports",function(t,e){s["a"].commit("syncImports",e)})},c=function(){C.$on("import_update",function(t){s["a"].commit("updateImport",t)})},u=function(){o(),c()},l=function(){Object(i["a"])("gekkos",function(t,e){var a=e;s["a"].commit("syncGekkos",a)})},d=function(){C.$on("gekko_new",function(t){return s["a"].commit("addGekko",t.state)}),C.$on("gekko_event",function(t){return s["a"].commit("updateGekko",t)}),C.$on("gekko_archived",function(t){return s["a"].commit("archiveGekko",t.id)}),C.$on("gekko_error",function(t){return s["a"].commit("errorGekko",t)}),C.$on("gekko_deleted",function(t){return s["a"].commit("deleteGekko",t.id)})},f=function(){l(),d()},h=function(){},m=function(){C.$on("WS_STATUS_CHANGE",function(t){return s["a"].commit("setGlobalWarning",{key:"connected",value:t.connected})})},v=function(){h(),m()},p=a("k5N+"),g=(a("rGqo"),function(t){if(!t)return{};var e=t,a={};return e.forEach(function(t){a[t.slug]=a[t.slug]||{markets:{}},t.markets.forEach(function(e){var n=Object(p["a"])(e["pair"],2),r=n[0],i=n[1];a[t.slug].markets[r]=a[t.slug].markets[r]||[],a[t.slug].markets[r].push(i)}),"exchangeMaxHistoryAge"in t&&(a[t.slug].exchangeMaxHistoryAge=t.exchangeMaxHistoryAge),a[t.slug].importable=!!t.providesFullHistory,a[t.slug].tradable=!!t.tradable,a[t.slug].requires=t.requires}),a}),_=function(){Object(i["a"])("apiKeys",function(t,e){s["a"].commit("syncApiKeys",e)}),Object(i["a"])("exchanges",function(t,e){s["a"].commit("syncExchanges",g(e))})},k=function(){C.$on("apiKeys",function(t){s["a"].commit("syncApiKeys",t.exchanges)})},y=function(){_(),k()},w=function(){u(),f(),v(),y()};a.d(e,"a",function(){return C}),a.d(e,"b",function(){return S});var b=null,C=new n["a"];C.$on("gekko_update",function(t){return console.log(t)}),C.$on("import_update",function(t){return console.log(t)}),C.$on("import_error",function(t){alert("IMPORT ERROR: "+t.error)});var x={connected:!1},S=function(){b=new ReconnectingWebSocket(r["b"],null,{maxReconnectInterval:4e3}),setTimeout(function(){x.connected||(w(),C.$emit("WS_STATUS_CHANGE",x))},500),b.onopen=function(){x.connected||(x.connected=!0,C.$emit("WS_STATUS_CHANGE",x),w())},b.onclose=function(){x.connected&&(x.connected=!1,C.$emit("WS_STATUS_CHANGE",x))},b.onerror=function(){x.connected&&(x.connected=!1,C.$emit("WS_STATUS_CHANGE",x))},b.onmessage=function(t){var e=JSON.parse(t.data);C.$emit(e.type,e)}}},h8ks:function(t,e,a){},hGnM:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain py2"},[a("h3",[t._v("Market watchers")]),t.watchers.length?t._e():a("div",{staticClass:"text"},[a("p",[t._v("You don't have any market watchers.")])]),t.watchers.length?a("table",{staticClass:"full clickable"},[t._m(0),a("tbody",t._l(t.watchers,function(e){return a("tr",{staticClass:"clickable",on:{click:function(a){t.$router.push({path:"/live-gekkos/"+e.id})}}},[a("td",[t._v(t._s(e.config.watch.exchange))]),a("td",[t._v(t._s(e.config.watch.currency))]),a("td",[t._v(t._s(e.config.watch.asset))]),a("td",[t._v(t._s(t.status(e)))]),a("td",[e.events.initial.candle?[t._v(t._s(t.fmt(e.events.initial.candle.start)))]:t._e()],2),a("td",[e.events.latest.candle?[t._v(t._s(t.fmt(e.events.latest.candle.start)))]:t._e()],2),a("td",[e.events.initial.candle&&e.events.latest.candle?[t._v(t._s(t.timespan(e.events.latest.candle.start,e.events.initial.candle.start)))]:t._e()],2)])}))]):t._e(),a("h3",[t._v("Strat runners")]),t.stratrunners.length?t._e():a("div",{staticClass:"text"},[a("p",[t._v("You don't have any stratrunners.")])]),t.stratrunners.length?a("table",{staticClass:"full"},[t._m(1),a("tbody",t._l(t.stratrunners,function(e){return a("tr",{staticClass:"clickable",on:{click:function(a){t.$router.push({path:"/live-gekkos/"+e.id})}}},[a("td",[t._v(t._s(e.config.watch.exchange))]),a("td",[t._v(t._s(e.config.watch.currency))]),a("td",[t._v(t._s(e.config.watch.asset))]),a("td",[t._v(t._s(t.status(e)))]),a("td",[e.events.initial.candle&&e.events.latest.candle?[t._v(t._s(t.timespan(e.events.latest.candle.start,e.events.initial.candle.start)))]:t._e()],2),a("td",[t._v(t._s(e.config.tradingAdvisor.method))]),a("td",[t.report(e)?t._e():[t._v("0")],t.report(e)?[t._v(t._s(t.round(t.report(e).profit))+" "+t._s(t.report(e).currency))]:t._e()],2),a("td",[t._v(t._s(e.logType))]),a("td",[e.events.tradeCompleted?t._e():[t._v("0")],e.events.tradeCompleted?[t._v(t._s(e.events.tradeCompleted.length))]:t._e()],2)])}))]):t._e(),a("div",{staticClass:"hr"}),a("h2",[t._v("Start a new live Gekko")]),a("router-link",{staticClass:"btn--primary",attrs:{to:"/live-gekkos/new"}},[t._v("Start a new live Gekko!")])],1)},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("thead",[a("tr",[a("th",[t._v("exchange")]),a("th",[t._v("currency")]),a("th",[t._v("asset")]),a("th",[t._v("status")]),a("th",[t._v("started at")]),a("th",[t._v("last update")]),a("th",[t._v("duration")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("thead",[a("tr",[a("th",[t._v("exchange")]),a("th",[t._v("currency")]),a("th",[t._v("asset")]),a("th",[t._v("status")]),a("th",[t._v("duration")]),a("th",[t._v("strategy")]),a("th",[t._v("PnL")]),a("th",[t._v("type")]),a("th",[t._v("trades")])])])}],i=(a("a1Th"),a("rGqo"),a("yt8O"),a("VRzm"),{created:function(){var t=this;this.timer=setInterval(function(){t.now=moment()},1e3)},destroyed:function(){clearTimeout(this.timer)},data:function(){return{timer:!1,now:moment()}},computed:{stratrunners:function(){return _.values(this.$store.state.gekkos).concat(_.values(this.$store.state.archivedGekkos)).filter(function(t){return"papertrader"===t.logType||"tradebot"===t.logType})},watchers:function(){return _.values(this.$store.state.gekkos).concat(_.values(this.$store.state.archivedGekkos)).filter(function(t){return"watcher"===t.logType})}},methods:{humanizeDuration:function(t){return window.humanizeDuration(t)},moment:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){return moment.utc(t)}),fmt:function(t){return moment.utc(t).format("YYYY-MM-DD HH:mm")},round:function(t){return(+t).toFixed(3)},timespan:function(t,e){return this.humanizeDuration(this.moment(t).diff(this.moment(e)))},status:function(t){return t.errored?"errored":t.stopped?"stopped":t.active?"running":void console.log("unknown state:",t)},report:function(t){return _.get(t,"events.latest.performanceReport")}}}),s=i,o=(a("daul"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},jTvs:function(t,e,a){},jVW9:function(t,e,a){},jf14:function(t,e,a){},jloR:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain my2"},[a("div",{staticClass:"text",domProps:{innerHTML:t._s(t.intro)}}),a("div",{staticClass:"hr"}),a("h3",[t._v("Currently running imports")]),0===t.imports.length?a("p",[t._v("You currently don't have any imports running.")]):t._e(),t.imports.length?a("ul",t._l(t.imports,function(e){return a("li",[a("router-link",{attrs:{to:"/data/importer/import/"+e.id}},[t._v(t._s(e.watch.exchange)+":"+t._s(e.watch.currency)+"/"+t._s(e.watch.asset))])],1)})):t._e(),a("div",{staticClass:"hr"}),a("h3",[t._v("Start a new import")]),a("import-config-builder",{on:{config:t.updateConfig}}),a("div",{staticClass:"hr"}),a("div",{staticClass:"txt--center"},[a("a",{staticClass:"w100--s my1 btn--primary",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.run(e)}}},[t._v("Import")])])],1)},r=[],i=a("wiDz"),s=a("MB/c"),o=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd contain"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("h3",[t._v("Market")]),a("market-picker",{attrs:{"only-importable":"true"},on:{market:t.updateMarketConfig}})],1),a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("range-creator",{on:{range:t.updateRange}})],1)])])},c=[],u=(a("91GP"),a("6BxS")),l=a("FhOJ"),d=(a("LvDl"),{data:function(){return{market:{},range:{}}},components:{marketPicker:u["a"],rangeCreator:l["a"]},computed:{config:function(){var t={};return Object.assign(t,this.market,{importer:{daterange:this.range}},{candleWriter:{enabled:!0}}),t}},methods:{updateMarketConfig:function(t){this.market=t,this.emitConfig()},updateRange:function(t){this.range=t,this.emitConfig()},emitConfig:function(){this.$emit("config",this.config)}}}),f=d,h=(a("H+ir"),a("KHd+")),m=Object(h["a"])(f,o,c,!1,null,null,null),v=m.exports,p=a("5shn"),g=Object(p["a"])("\n\n## Import data\n\nThe importer can download historical market data directly from the exchange.\n\n"),_={components:{importConfigBuilder:v,spinner:s["a"]},data:function(){return{intro:g,config:{}}},computed:{imports:function(){return this.$store.state.imports}},methods:{daysApart:function(t){var e=moment(t.to),a=moment(t.from);return e.diff(a,"days")},updateConfig:function(t){this.config=t},run:function(){var t=this,e=this.daysApart(this.config.importer.daterange);if(e<1)return alert("You can only import at least one day of data..");var a=this.$store.state.exchanges[this.config.watch.exchange];if("exchangeMaxHistoryAge"in a&&moment(this.config.importer.daterange.from) 1%","last 2 versions","not ie <= 8"]}},ldlP:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("section",{staticClass:"contain grd-row"},[a("div",{staticClass:"grd-row-col-3-6",domProps:{innerHTML:t._s(t.left)}}),t._m(0)])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-3-6 txt--center"},[a("img",{attrs:{src:"static/gekko.jpg"}}),a("p",[a("em",[t._v("The most valuable commodity I know of is information.")])])])}],i=(a("VRzm"),a("5shn")),s=Object(i["a"])("\n\n## Gekko\n\nGekko is a Bitcoin trading bot and backtesting platform that\nconnects to popular Bitcoin exchanges. It is written in javascript\nand runs on nodejs.\n\n[Find out more](https://gekko.wizb.it/).\n\n*Gekko is 100% free (open source), if you paid for this you have been scammed.*\n\n"),o={data:function(){return{left:s}}},c=o,u=a("KHd+"),l=Object(u["a"])(c,n,r,!1,null,null,null);e["a"]=l.exports},mf2E:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"my2"},[t.data?t._e():a("div",{staticClass:"contain"},[a("h1",[t._v("Unknown Gekko instance")]),a("p",[t._v("Gekko doesn't know what gekko this is...")])]),t.data?a("div",[a("h2",{staticClass:"contain"},[t._v("Gekko "+t._s(t.type))]),t.isArchived?a("div",{staticClass:"contain brdr--mid-gray p1 bg--orange"},[t._v("This is an archived Gekko, it is currently not running anymore.")]):t._e(),t.data.errorMessage?a("div",{staticClass:"contain brdr--mid-gray p1 bg--orange"},[t._v("This is Gekko crashed with the following error: "+t._s(t.data.errorMessage))]):t._e(),a("div",{staticClass:"grd contain"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Market")]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Exchange")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.config.watch.exchange))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Currency")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.config.watch.currency))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Asset")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.config.watch.asset))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Type")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.type))])])]),a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Runtime")]),t.isLoading?a("spinner"):t._e(),t.isLoading?t._e():[t.initialEvents.candle?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Watching since")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.initialEvents.candle.start)))])]):t._e(),t.latestEvents.candle?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Received data until")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.latestEvents.candle.start)))])]):t._e(),t.latestEvents.candle?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Data spanning")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.humanizeDuration(t.moment(t.latestEvents.candle.start).diff(t.moment(t.initialEvents.candle.start)))))])]):t._e(),t.isStratrunner?[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Amount of trades")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.trades.length))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Candle size")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.config.tradingAdvisor.candleSize))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("History size")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.config.tradingAdvisor.historySize))])])]:t._e()]],2)]),t.warmupRemaining?a("div",{staticClass:"contain brdr--mid-gray p1 bg--orange"},[t._v("This stratrunner is still warming up for the next "),a("i",[t._v(t._s(t.warmupRemaining.replace(","," and ")))]),t._v(", it will not trade until it is warmed up.")]):t._e(),t.isStratrunner?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Strategy")]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Name")]),a("div",{staticClass:"grd-row-col-3-6"},[a("strong",[t._v(t._s(t.stratName))])])]),t._v("Parameters"),a("pre",[t._v(t._s(t.stratParams))])]),a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Profit report")]),t.report?t._e():[a("p",[t.isArchived?a("em",[t._v("This Gekko never executed a trade..")]):t._e(),t.isArchived?t._e():a("em",[t._v("Waiting for at least one trade..")])])],t.report?[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Start balance")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.startBalance)))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Current balance")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.balance)))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Market")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.market/100*t.report.startPrice))+" "+t._s(t.config.watch.currency)+" ("+t._s(t.round(t.report.market))+" %)")])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Profit")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.profit))+" "+t._s(t.config.watch.currency)+" ("+t._s(t.round(t.report.relativeProfit))+" %)")])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Alpha")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.alpha))+" "+t._s(t.config.watch.currency))])])]:t._e()],2)]):t._e(),!t.isStratrunner||t.watcher||t.isArchived?t._e():a("p",[t._v("WARNING: stale gekko, not attached to a watcher, please report "),a("a",{attrs:{href:"https://github.com/askmike/gekko/issues"}},[t._v("here")]),t._v(".")]),t.isArchived?t._e():a("p",[a("a",{staticClass:"w100--s my1 btn--red",on:{click:t.stopGekko}},[t._v("Stop Gekko")])]),t.isArchived?a("p",[a("a",{staticClass:"w100--s my1 btn--red",on:{click:t.deleteGekko}},[t._v("Delete Gekko")])]):t._e(),t.isStratrunner&&t.watcher&&!t.isArchived?a("p",[a("em",[t._v("This gekko gets market data from "),a("router-link",{attrs:{to:"/live-gekkos/"+t.watcher.id}},[t._v("this market watcher")])],1),t._v(".")]):t._e()]),t.isLoading?t._e():[a("h3",{staticClass:"contain"},[t._v("Market graph")]),"fetching"===t.candleFetch?a("spinner"):t._e(),"fetched"===t.candleFetch?[a("chart",{attrs:{data:t.chartData,height:300}})]:t._e(),t.isStratrunner?a("roundtrips",{attrs:{roundtrips:t.roundtrips}}):t._e()]],2):t._e()])},r=[],i=(a("a1Th"),a("dRSK"),a("VRzm"),a("Kw5r")),s=a("LvDl"),o=a.n(s),c=a("wiDz"),u=a("MB/c"),l=a("UeuA"),d=a("vf3E"),f=a("0Bu0"),h={created:function(){this.isLoading||this.getCandles()},components:{spinner:u["a"],chart:l["a"],paperTradeSummary:f["a"],roundtrips:d["a"]},data:function(){return{candleFetch:"idle",candles:!1}},computed:{id:function(){return this.$route.params.id},gekkos:function(){return this.$store.state.gekkos},archivedGekkos:function(){return this.$store.state.archivedGekkos},data:function(){return!!this.gekkos&&(o.a.has(this.gekkos,this.id)?this.gekkos[this.id]:!!o.a.has(this.archivedGekkos,this.id)&&this.archivedGekkos[this.id])},config:function(){return o.a.get(this,"data.config")},latestEvents:function(){return o.a.get(this,"data.events.latest")},initialEvents:function(){return o.a.get(this,"data.events.initial")},trades:function(){return o.a.get(this,"data.events.tradeCompleted")||[]},roundtrips:function(){return o.a.get(this,"data.events.roundtrip")||[]},isLive:function(){return o.a.has(this.gekkos,this.id)},type:function(){return this.data.logType},isStratrunner:function(){return"watcher"!==this.type},isArchived:function(){return this.data.stopped},warmupRemaining:function(){if(!this.isStratrunner)return!1;if(this.isArchived)return!1;if(this.initialEvents.stratWarmupCompleted)return!1;if(!this.initialEvents.candle)return!1;var t=o.a.get(this.config,"tradingAdvisor.historySize");if(!t)return!1;var e=o.a.get(this.config,"tradingAdvisor.candleSize")*t;return humanizeDuration(moment(this.initialEvents.candle.start).add(e,"m").diff(moment()),{largest:2})},chartData:function(){return{candles:this.candles,trades:this.trades}},report:function(){return o.a.get(this.latestEvents,"performanceReport")},stratName:function(){if(this.data)return this.data.config.tradingAdvisor.method},stratParams:function(){if(!this.data)return"Loading...";var t=i["a"].util.extend({},this.data.config[this.stratName]);return delete t.__empty,o.a.isEmpty(t)?"No parameters":JSON.stringify(t,null,4)},isLoading:function(){return!this.data||(!o.a.get(this.data,"events.initial.candle")||!o.a.get(this.data,"events.latest.candle"))},watcher:function(){var t=this;if(!this.isStratrunner)return!1;var e=i["a"].util.extend({},this.data.config.watch);return o.a.find(this.gekkos,function(a){return a.id!==t.id&&o.a.isEqual(e,a.config.watch)})},hasLeechers:function(){var t=this;if(this.isStratrunner)return!1;var e=i["a"].util.extend({},this.data.config.watch);return o.a.find(this.gekkos,function(a){return a.id!==t.id&&o.a.isEqual(e,a.config.watch)})}},watch:{"data.events.latest.candle.start":function(){setTimeout(this.getCandles,o.a.random(100,2e3))}},methods:{round:function(t){return(+t).toFixed(5)},humanizeDuration:function(t,e){return window.humanizeDuration(t,e)},moment:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){return moment.utc(t)}),fmt:function(t){return moment.utc(t).format("YYYY-MM-DD HH:mm")},getCandles:function(){var t=this;if(!this.isLoading&&"fetching"!==this.candleFetch){this.candleFetch="fetching";var e=this.data.events.latest.candle.start,a=this.data.events.initial.candle.start,n=1;"watcher"!==this.type&&(n=this.data.config.tradingAdvisor.candleSize);var r={watch:this.data.config.watch,daterange:{to:e,from:a},candleSize:n};setTimeout(function(){Object(c["b"])("getCandles",r,function(e,a){if(t.candleFetch="fetched",!a||a.error||!o.a.isArray(a))return console.log(a);t.candles=a.map(function(t){return t.start=moment.unix(t.start).utc().format(),t})})},o.a.random(150,2500))}},stopGekko:function(){if(this.hasLeechers)return alert("This Gekko is fetching market data for multiple stratrunners, stop these first.");confirm("Are you sure you want to stop this Gekko?")&&Object(c["b"])("stopGekko",{id:this.data.id},function(t,e){console.log("stopped gekko")})},deleteGekko:function(){var t=this;if(!this.isArchived)return alert("This Gekko is still running, stop it first!");confirm("Are you sure you want to delete this Gekko?")&&Object(c["b"])("deleteGekko",{id:this.data.id},function(e,a){t.$router.push({path:"/live-gekkos/"})})}}},m=h,v=(a("/Dpa"),a("KHd+")),p=Object(v["a"])(m,n,r,!1,null,null,null);e["a"]=p.exports},ngcj:function(t,e,a){"use strict";var n=a("EAJ1"),r=a.n(n);r.a},nzng:function(t,e,a){},pd3X:function(t,e,a){},pyMo:function(t,e,a){},q431:function(t,e,a){"use strict";var n=a("ydmZ"),r=a.n(n);r.a},qDq4:function(t,e,a){"use strict";var n=a("nzng"),r=a.n(n);r.a},r0f2:function(t,e,a){"use strict";a.d(e,"b",function(){return i}),a.d(e,"a",function(){return r});var n,r,i,s=window.CONFIG.ui,o="".concat(s.host).concat(80===s.port?"":":".concat(s.port)).concat(s.path);n=s.ssl?"https://".concat(o):"http://".concat(o),r=n+"api/",i=s.ssl?"wss://".concat(o,"api"):"ws://".concat(o,"api")},rloZ:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd"},[a("div",{staticClass:"px1"},[a("h3",[t._v("Paper trader")]),"closed"===t.toggle?a("a",{staticClass:"btn--primary",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.switchToggle(e)}}},[t._v("Change paper trader settings")]):t._e(),"open"===t.toggle?[a("p",[t._v("Settings:")]),a("textarea",{directives:[{name:"model",rawName:"v-model",value:t.rawPaperTraderParams,expression:"rawPaperTraderParams"}],staticClass:"params",domProps:{value:t.rawPaperTraderParams},on:{input:function(e){e.target.composing||(t.rawPaperTraderParams=e.target.value)}}}),t.rawPaperTraderParamsError?a("p",{staticClass:"bg--red p1"},[t._v(t._s(t.rawPaperTraderParamsError.message))]):t._e()]:t._e()],2)])},r=[],i=(a("LvDl"),a("wiDz")),s={created:function(){var t=this;Object(i["a"])("configPart/paperTrader",function(e,a){t.rawPaperTraderParams=a.part})},data:function(){return{rawPaperTraderParams:"",rawPaperTraderParamsError:!1,paperTraderParams:{},toggle:"closed"}},watch:{rawPaperTraderParams:function(){this.emitConfig()}},methods:{switchToggle:function(){"open"===this.toggle?this.toggle="closed":this.toggle="open"},emitConfig:function(){this.parseParams(),this.$emit("settings",this.paperTraderParams)},parseParams:function(){try{this.paperTraderParams=toml.parse(this.rawPaperTraderParams),this.paperTraderParams.reportRoundtrips=!0,this.rawPaperTraderParamsError=!1}catch(t){this.rawPaperTraderParamsError=t,this.paperTraderParams={}}}}},o=s,c=(a("0zrD"),a("KHd+")),u=Object(c["a"])(o,n,r,!1,null,null,null);e["a"]=u.exports},spvI:function(t,e,a){"use strict";a("Vd3H"),a("rGqo");var n=a("wiDz"),r={data:function(){return{datasets:[],datasetScanstate:"idle",unscannableMakets:[]}},methods:{scan:function(){var t=this;this.datasetScanstate="scanning",Object(n["b"])("scansets",{},function(e,a){t.datasetScanstate="scanned",t.unscannableMakets=a.errors;var n=[];a.datasets.forEach(function(t){t.ranges.forEach(function(e,a){n.push({exchange:t.exchange,currency:t.currency,asset:t.asset,from:moment.unix(e.from).utc(),to:moment.unix(e.to).utc(),id:t.exchange+t.asset+t.currency+a})})}),n=n.filter(function(t){if(t.to.diff(t.from,"hours")>2)return!0}),n=n.sort(function(t,e){var a=t.to.diff(t.from),n=e.to.diff(e.from);return an?1:0}).reverse(),t.datasets=n})}}};e["a"]=r},tr8f:function(t,e,a){"use strict";var n=a("h8ks"),r=a.n(n);r.a},tr8z:function(t,e,a){"use strict";var n=a("Ug4+"),r=a.n(n);r.a},uMTv:function(t,e,a){"use strict";var n=a("pyMo"),r=a.n(n);r.a},uXxc:function(t,e,a){},vf3E:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain roundtrips"},[a("h2",[t._v("Roundtrips")]),t.roundtrips.length?a("table",[a("thead",[t._m(0),t._l(t.roundtrips,function(e){return a("tr",[a("td",[t._v(t._s(t.fmt(e.entryAt)))]),a("td",[t._v(t._s(t.fmt(e.exitAt)))]),a("td",[t._v(t._s(t.diff(e.duration)))]),a("td",[t._v(t._s(t.round(e.entryBalance)))]),a("td",[t._v(t._s(t.round(e.exitBalance)))]),-1===Math.sign(e.pnl)?[a("td",{staticClass:"loss"},[t._v(t._s(Math.sign(e.pnl)*e.pnl.toFixed(2)))]),a("td",{staticClass:"loss"},[t._v(t._s(e.profit.toFixed(2))+"%")])]:[a("td",{staticClass:"profit"},[t._v(t._s(e.pnl.toFixed(2)))]),a("td",{staticClass:"profit"},[t._v(t._s(e.profit.toFixed(2))+"%")])]],2)})],2)]):t._e(),t.roundtrips.length?t._e():a("div",[a("p",[t._v("Not enough data to display")])])])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("tr",[a("th",[t._v("Entry at (UTC)")]),a("th",[t._v("Exit at (UTC)")]),a("th",[t._v("Exposure")]),a("th",[t._v("Entry balance")]),a("th",[t._v("Exit balance")]),a("th",[t._v("P&L")]),a("th",[t._v("Profit")])])}],i=a("LvDl"),s=a.n(i),o={props:["roundtrips"],data:function(){return{}},methods:{diff:function(t){return moment.duration(t).humanize()},humanizeDuration:function(t){return window.humanizeDuration(t)},fmt:function(t){var e;return e=s.a.isNumber(t)?moment.unix(t):moment(t).utc(),e.utc().format("YYYY-MM-DD HH:mm")},round:function(t){return(+t).toFixed(3)}}},c=o,u=(a("dW8q"),a("KHd+")),l=Object(u["a"])(c,n,r,!1,null,null,null);e["a"]=l.exports},vwRV:function(t,e,a){},w3yp:function(t,e,a){},wVP4:function(t,e,a){"use strict";var n=a("vwRV"),r=a.n(n);r.a},wVPO:function(t,e,a){"use strict";var n=a("uXxc"),r=a.n(n);r.a},wiDz:function(t,e,a){"use strict";a.d(e,"b",function(){return u}),a.d(e,"a",function(){return l});var n=a("24Ii"),r=a.n(n),i=a("TrxG"),s=a.n(i),o=a("r0f2"),c=function(t){return function(e,a){if(e)return t(e);if(!a.text)return t("no data");var n=JSON.parse(a.text);t(!1,n)}},u=function(t,e,a){r.a.post(o["a"]+t).use(s.a).send(e).end(c(a))},l=function(t,e){r.a.get(o["a"]+t).use(s.a).end(c(e))}},ydmZ:function(t,e,a){},yomC:function(t,e,a){"use strict";var n=a("EfWa"),r=a.n(n);r.a},yuKf:function(t,e,a){}}); +//# sourceMappingURL=app.9aa8dda3.js.map \ No newline at end of file diff --git a/web/vue/dist/app.9aa8dda3.js.map b/web/vue/dist/app.9aa8dda3.js.map new file mode 100644 index 000000000..3b348202f --- /dev/null +++ b/web/vue/dist/app.9aa8dda3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/gekko/singleGekko.vue?6cec","webpack:///./src/components/global/progressBar.vue?7bcc","webpack:///./src/components/global/paperTradeSummary.vue?13b5","webpack:///src/components/global/paperTradeSummary.vue","webpack:///./src/components/global/paperTradeSummary.vue?a8ef","webpack:///./src/components/global/paperTradeSummary.vue","webpack:///./src/components/global/configbuilder/papertrader.vue?c5cd","webpack:///./src/components/gekko/new.vue?c104","webpack:///./src/components/gekko/new.vue?367c","webpack:///./src/components/gekko/gekkoConfigBuilder.vue?035a","webpack:///./src/components/global/configbuilder/typepicker.vue?df24","webpack:///src/components/global/configbuilder/typepicker.vue","webpack:///./src/components/global/configbuilder/typepicker.vue?cf28","webpack:///./src/components/global/configbuilder/typepicker.vue","webpack:///src/components/gekko/gekkoConfigBuilder.vue","webpack:///./src/components/gekko/gekkoConfigBuilder.vue?8d92","webpack:///./src/components/gekko/gekkoConfigBuilder.vue","webpack:///src/components/gekko/new.vue","webpack:///./src/components/gekko/new.vue?ae9a","webpack:///./src/components/gekko/new.vue","webpack:///./src/components/data/data.vue?4abe","webpack:///./src/tools/marked.js","webpack:///./src/components/global/configbuilder/marketpicker.vue?d701","webpack:///src/components/global/configbuilder/marketpicker.vue","webpack:///./src/components/global/configbuilder/marketpicker.vue?200d","webpack:///./src/components/global/configbuilder/marketpicker.vue","webpack:///./src/components/global/configbuilder/stratpicker.vue?fda9","webpack:///src/components/global/configbuilder/stratpicker.vue","webpack:///./src/components/global/configbuilder/stratpicker.vue?8a34","webpack:///./src/components/global/configbuilder/stratpicker.vue","webpack:///./src/components/global/configbuilder/rangepicker.vue?ce7c","webpack:///./src/components/global/configbuilder/rangecreator.vue?8425","webpack:///src/components/global/configbuilder/rangecreator.vue","webpack:///./src/components/global/configbuilder/rangecreator.vue?3f8d","webpack:///./src/components/global/configbuilder/rangecreator.vue","webpack:///./src/components/data/import/importConfigBuilder.vue?3911","webpack:///./src/components/global/blockSpinner.vue?cca6","webpack:///src/components/global/blockSpinner.vue","webpack:///./src/components/global/blockSpinner.vue?7b17","webpack:///./src/components/global/blockSpinner.vue","webpack:///./src/App.vue?77b6","webpack:///./src/components/layout/header.vue?345a","webpack:///src/components/layout/header.vue","webpack:///./src/components/layout/header.vue?8ecd","webpack:///./src/components/layout/header.vue","webpack:///./src/components/layout/footer.vue?0614","webpack:///src/components/layout/footer.vue","webpack:///./src/components/layout/footer.vue?6aff","webpack:///./src/components/layout/footer.vue","webpack:///./src/components/layout/modal.vue?5ed7","webpack:///src/components/layout/modal.vue","webpack:///./src/components/layout/modal.vue?6e33","webpack:///./src/components/layout/modal.vue","webpack:///src/App.vue","webpack:///./src/App.vue?8f16","webpack:///./src/App.vue","webpack:///./src/store/modules/imports/mutations.js","webpack:///./src/store/modules/gekkos/mutations.js","webpack:///./src/store/modules/notifications/mutations.js","webpack:///./src/store/modules/config/mutations.js","webpack:///./src/store/index.js","webpack:///./src/components/backtester/backtestConfigBuilder.vue?fda9","webpack:///./src/components/backtester/result/chartWrapper.vue?d2a0","webpack:///./src/components/global/configbuilder/rangecreator.vue?c7ad","webpack:///./src/components/layout/modal.vue?a2b4","webpack:///./src/components/backtester/result/chartWrapper.vue?cfc8","webpack:///./src/d3/chart4.js","webpack:///./src/d3/message.js","webpack:///src/components/backtester/result/chartWrapper.vue","webpack:///./src/components/backtester/result/chartWrapper.vue?414d","webpack:///./src/components/backtester/result/chartWrapper.vue","webpack:///./src/main.js","webpack:///./src/components/backtester/result/summary.vue?6f4b","webpack:///./src/components/config/config.vue?9014","webpack:///./src/components/config/apiConfigBuilder.vue?901e","webpack:///./src/components/global/configbuilder/exchangepicker.vue?f5ea","webpack:///src/components/global/configbuilder/exchangepicker.vue","webpack:///./src/components/global/configbuilder/exchangepicker.vue?f140","webpack:///./src/components/global/configbuilder/exchangepicker.vue","webpack:///src/components/config/apiConfigBuilder.vue","webpack:///./src/components/config/apiConfigBuilder.vue?a340","webpack:///./src/components/config/apiConfigBuilder.vue","webpack:///src/components/config/config.vue","webpack:///./src/components/config/config.vue?03e8","webpack:///./src/components/config/config.vue","webpack:///./src/components/gekko/gekkoConfigBuilder.vue?c09b","webpack:///./src/components/global/configbuilder/rangepicker.vue?e445","webpack:///src/components/global/configbuilder/rangepicker.vue","webpack:///./src/components/global/configbuilder/rangepicker.vue?6482","webpack:///./src/components/global/configbuilder/rangepicker.vue","webpack:///./src/App.vue?8b0d","webpack:///./src/components/config/apiConfigBuilder.vue?bb40","webpack:///./src/components/backtester/backtester.vue?06dc","webpack:///./src/components/backtester/backtestConfigBuilder.vue?bafa","webpack:///./src/components/global/configbuilder/datasetpicker.vue?dc86","webpack:///src/components/global/configbuilder/datasetpicker.vue","webpack:///./src/components/global/configbuilder/datasetpicker.vue?adbd","webpack:///./src/components/global/configbuilder/datasetpicker.vue","webpack:///src/components/backtester/backtestConfigBuilder.vue","webpack:///./src/components/backtester/backtestConfigBuilder.vue?6bee","webpack:///./src/components/backtester/backtestConfigBuilder.vue","webpack:///./src/components/backtester/result/result.vue?f19d","webpack:///./src/components/backtester/result/summary.vue?a48b","webpack:///src/components/backtester/result/summary.vue","webpack:///./src/components/backtester/result/summary.vue?2c9f","webpack:///./src/components/backtester/result/summary.vue","webpack:///src/components/backtester/result/result.vue","webpack:///./src/components/backtester/result/result.vue?a333","webpack:///./src/components/backtester/result/result.vue","webpack:///src/components/backtester/backtester.vue","webpack:///./src/components/backtester/backtester.vue?b754","webpack:///./src/components/backtester/backtester.vue","webpack:///../state/reduceState.js","webpack:///./src/components/data/data.vue?5f3a","webpack:///src/components/data/data.vue","webpack:///./src/components/data/data.vue?7897","webpack:///./src/components/data/data.vue","webpack:///./src/components/backtester/result/roundtripTable.vue?cb8d","webpack:///./src/components/gekko/list.vue?dec3","webpack:///./src/components/data/import/single.vue?892b","webpack:///./src/components/global/progressBar.vue?f48f","webpack:///src/components/global/progressBar.vue","webpack:///./src/components/global/progressBar.vue?3819","webpack:///./src/components/global/progressBar.vue","webpack:///src/components/data/import/single.vue","webpack:///./src/components/data/import/single.vue?ea36","webpack:///./src/components/data/import/single.vue","webpack:///./src/store/modules/imports/sync.js","webpack:///./src/store/modules/gekkos/sync.js","webpack:///./src/store/modules/notifications/sync.js","webpack:///./src/store/modules/config/sync.js","webpack:///./src/store/init.js","webpack:///./src/components/global/ws.js","webpack:///./src/components/gekko/list.vue?889e","webpack:///src/components/gekko/list.vue","webpack:///./src/components/gekko/list.vue?1de5","webpack:///./src/components/gekko/list.vue","webpack:///./src/components/data/import/importer.vue?370b","webpack:///./src/components/data/import/importConfigBuilder.vue?d697","webpack:///src/components/data/import/importConfigBuilder.vue","webpack:///./src/components/data/import/importConfigBuilder.vue?4a12","webpack:///./src/components/data/import/importConfigBuilder.vue","webpack:///src/components/data/import/importer.vue","webpack:///./src/components/data/import/importer.vue?5b1c","webpack:///./src/components/data/import/importer.vue","webpack:///./src/components/layout/home.vue?d339","webpack:///src/components/layout/home.vue","webpack:///./src/components/layout/home.vue?334a","webpack:///./src/components/layout/home.vue","webpack:///./src/components/gekko/singleGekko.vue?a7f7","webpack:///src/components/gekko/singleGekko.vue","webpack:///./src/components/gekko/singleGekko.vue?71ef","webpack:///./src/components/gekko/singleGekko.vue","webpack:///./src/components/global/configbuilder/datasetpicker.vue?0d02","webpack:///./src/components/global/blockSpinner.vue?69ce","webpack:///./src/components/data/import/single.vue?dfe8","webpack:///./src/tools/api.js","webpack:///./src/components/global/configbuilder/papertrader.vue?4204","webpack:///src/components/global/configbuilder/papertrader.vue","webpack:///./src/components/global/configbuilder/papertrader.vue?fdb2","webpack:///./src/components/global/configbuilder/papertrader.vue","webpack:///./src/components/global/mixins/dataset.js","webpack:///./src/components/global/configbuilder/stratpicker.vue?808f","webpack:///./src/components/global/paperTradeSummary.vue?c6c2","webpack:///./src/components/layout/header.vue?b5b8","webpack:///./src/components/backtester/result/roundtripTable.vue?64de","webpack:///src/components/backtester/result/roundtripTable.vue","webpack:///./src/components/backtester/result/roundtripTable.vue?35c4","webpack:///./src/components/backtester/result/roundtripTable.vue","webpack:///./src/components/backtester/result/result.vue?65dd","webpack:///./src/components/global/configbuilder/typepicker.vue?09f6","webpack:///./src/tools/ajax.js","webpack:///./src/components/data/import/importer.vue?3808"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_singleGekko_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_progressBar_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","report","trades","round2","sharpe","round","startBalance","currency","balance","_m","class","profitClass","relativeProfit","staticRenderFns","paperTradeSummaryvue_type_script_lang_js","props","methods","toFixed","computed","global_paperTradeSummaryvue_type_script_lang_js","component","componentNormalizer","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_papertrader_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_new_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","on","config","updateConfig","pendingStratrunner","_e","attrs","href","click","$event","preventDefault","start","gekkoConfigBuildervue_type_template_id_6015a1e6_lang_pug_render","only-tradable","isTradebot","market","updateMarketConfig","type","updateType","stratConfig","updateStrat","settings","updatePaperTrader","gekkoConfigBuildervue_type_template_id_6015a1e6_lang_pug_staticRenderFns","typepickervue_type_template_id_4a1aa84c_lang_pug_render","for","_l","directives","rawName","expression","domProps","checked","_q","selectedTypeIndex","change","typepickervue_type_template_id_4a1aa84c_lang_pug_staticRenderFns","typepickervue_type_script_lang_js","created","emitType","types","$emit","watch","configbuilder_typepickervue_type_script_lang_js","typepicker","gekkoConfigBuildervue_type_script_lang_js","_this","ajax","error","response","candleWriter","toml","parse","part","performanceAnalyzer","enabled","range","strat","paperTrader","components","marketPicker","marketpicker","typePicker","stratPicker","stratpicker","papertrader","assign","trader","valid","validConfig","tradingAdvisor","lodash_default","a","isNaN","candleSize","method","isEmpty","mc","emitConfig","pt","gekko_gekkoConfigBuildervue_type_script_lang_js","gekkoConfigBuilder_component","gekkoConfigBuilder","newvue_type_script_lang_js","spinner","blockSpinner","gekkos","$store","state","watchConfig","raw","pick","vue_runtime_esm","util","extend","requiredHistoricalData","stratSettings","historySize","gekkoConfig","startAt","existingMarketWatcher","optimal","moment","utc","startOf","subtract","unix","available","events","initial","candle","Math","max","format","from","find","exchange","existingTradebot","g","logType","availableApiKeys","apiKeys","val","prev","_this2","gekko","latest","startGekko","err","resp","$router","path","concat","id","_this3","str","alert","includes","startWatcher","routeToGekko","console","next","gekko_newvue_type_script_lang_js","new_component","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_data_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","marked","myRenderer","Renderer","link","title","text","external","newWindow","out","test","setOptions","renderer","$$selectedVal","Array","filter","target","options","selected","map","_value","multiple","e","cur","asset","asst","marketpickervue_type_script_lang_js","exchanges","onlyTradable","each","tradable","onlyImportable","importable","markets","assets","currencies","keys","configbuilder_marketpickervue_type_script_lang_js","strategy","input","composing","rawCandleSize","candleSizeUnit","singularCandleSizeUnit","humanizeDuration","rawStratParams","rawStratParamsError","message","stratpickervue_type_script_lang_js","strategies","emptyStrat","stratParams","empty","params","__empty","parseParams","configbuilder_stratpickervue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_rangepicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","to","rangecreatorvue_type_script_lang_js","now","then","clone","fmt","emitRange","fmtTs","mom","emitManualEntry","isValid","scanned","tab","selectedRangeIndex","selectedRange","ranges","configbuilder_rangecreatorvue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_importConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","blockSpinnervue_type_script_lang_js","global_blockSpinnervue_type_script_lang_js","headervue_type_template_id_0a62d360_lang_pug_render","headervue_type_template_id_0a62d360_lang_pug_staticRenderFns","headervue_type_script_lang_js","layout_headervue_type_script_lang_js","header","footervue_type_template_id_7782dc11_lang_pug_render","version","ui","footervue_type_template_id_7782dc11_lang_pug_staticRenderFns","gekkoPackage","uiPackage","footervue_type_script_lang_js","layout_footervue_type_script_lang_js","footer_component","footer","modalvue_type_template_id_340a7d17_lang_pug_render","innerHTML","content","modalvue_type_template_id_340a7d17_lang_pug_staticRenderFns","messages","disconnected","modalvue_type_script_lang_js","active","warnings","connected","layout_modalvue_type_script_lang_js","modal_component","modal","Appvue_type_script_lang_js","top","bottom","src_Appvue_type_script_lang_js","App_component","addImport","imp","imports","syncImports","mutations_updateImport","update","index","findIndex","import_id","item","updated","updates","set","reduceState","syncGekkos","live","archivedGekkos","archive","mutations_addGekko","objectSpread","mutations_updateGekko","has","event","mutations_archiveGekko","stopped","omit","mutations_errorGekko","errored","errorMessage","mutations_deleteGekko","setGlobalWarning","warning","mutations_syncApiKeys","mutations_syncExchanges","use","vuex_esm","debug","mutations","merge","mutations_namespaceObject","gekkos_mutations_namespaceObject","notifications_mutations_namespaceObject","config_mutations_namespaceObject","Store","connection","reconnected","strict","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_backtestConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_chartWrapper_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_rangecreator_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","chartWrappervue_type_template_id_12bcb8d8_lang_pug_render","clickable","isClicked","width","height","_data","_trades","_height","toDate","isNumber","price","date","action","open","dates","prices","svg","d3","select","attr","innerWidth","margin","right","left","margin2","height2","x","scaleUtc","x2","y","scaleLinear","y2","xAxis","axisBottom","xAxis2","yAxis","axisLeft","ticks","brush","brushX","extent","brushed","zoom","scaleExtent","translateExtent","zoomed","line","line2","append","focus","context","domain","min","datum","circles","selectAll","enter","sourceEvent","selection","invert","scaleY","transform","zoomIdentity","scale","translate","_domain","slicedToArray","minIndex","sortedIndex","maxIndex","rescaleX","move","invertX","draw","MIN_CANDLES","chartWrappervue_type_script_lang_js","setTimeout","beforeDestroy","remove","_","size","candles","chart4","html","result_chartWrappervue_type_script_lang_js","vue__WEBPACK_IMPORTED_MODULE_1__","vue_router__WEBPACK_IMPORTED_MODULE_3__","router","base","__dirname","routes","redirect","_components_layout_home_vue__WEBPACK_IMPORTED_MODULE_6__","_components_backtester_backtester_vue__WEBPACK_IMPORTED_MODULE_5__","_components_config_config_vue__WEBPACK_IMPORTED_MODULE_10__","_components_data_data_vue__WEBPACK_IMPORTED_MODULE_7__","_components_data_import_importer_vue__WEBPACK_IMPORTED_MODULE_8__","_components_data_import_single_vue__WEBPACK_IMPORTED_MODULE_9__","_components_gekko_list_vue__WEBPACK_IMPORTED_MODULE_11__","_components_gekko_new_vue__WEBPACK_IMPORTED_MODULE_12__","_components_gekko_singleGekko_vue__WEBPACK_IMPORTED_MODULE_13__","_components_global_ws__WEBPACK_IMPORTED_MODULE_14__","store","_store__WEBPACK_IMPORTED_MODULE_4__","el","h","_App_vue__WEBPACK_IMPORTED_MODULE_2__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","apiKeySets","removeApiKey","addApiToggle","openAddApi","apiConfigBuildervue_type_template_id_4a31b09e_lang_pug_render","updateExchange","cred","credentials","$set","upload","apiConfigBuildervue_type_template_id_4a31b09e_lang_pug_staticRenderFns","exchangepickervue_type_template_id_50c29cb0_lang_pug_render","exchangepickervue_type_template_id_50c29cb0_lang_pug_staticRenderFns","exchangepickervue_type_script_lang_js","emitExchange","configbuilder_exchangepickervue_type_script_lang_js","exchangepicker","apiConfigBuildervue_type_script_lang_js","exchangePicker","requires","values","confirm","config_apiConfigBuildervue_type_script_lang_js","apiConfigBuilder_component","apiConfigBuilder","configvue_type_script_lang_js","config_configvue_type_script_lang_js","config_component","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_gekkoConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","scan","printRange","rangepickervue_type_script_lang_js","diff","duration","humanize","reset","configbuilder_rangepickervue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_apiConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","check","backtestState","run","backtestResult","backtestConfigBuildervue_type_template_id_0b74d9a3_lang_pug_render","dataset","updateDataset","backtestConfigBuildervue_type_template_id_0b74d9a3_lang_pug_staticRenderFns","datasetpickervue_type_template_id_689b8a00_lang_pug_render","datasetScanstate","datasets","setIndex","rangeVisible","openRange","customFrom","customTo","datasetpickervue_type_template_id_689b8a00_lang_pug_staticRenderFns","datasetpickervue_type_script_lang_js","mixins","largest","updateCustomRange","emitSet","configbuilder_datasetpickervue_type_script_lang_js","datasetpicker","backtestConfigBuildervue_type_script_lang_js","datasetPicker","backtest","daterange","backtestResultExporter","writeToDisk","stratUpdates","roundtrips","stratCandles","stratCandleProps","sc","backtester_backtestConfigBuildervue_type_script_lang_js","backtestConfigBuilder_component","backtestConfigBuilder","resultvue_type_template_id_72b63acc_lang_pug_render","performanceReport","resultvue_type_template_id_72b63acc_lang_pug_staticRenderFns","summaryvue_type_template_id_5bfc891d_lang_pug_render","startTime","endTime","timespan","startPrice","endPrice","summaryvue_type_template_id_5bfc891d_lang_pug_staticRenderFns","summaryvue_type_script_lang_js","paperTradeSummary","result_summaryvue_type_script_lang_js","summary_component","summary","resultvue_type_script_lang_js","roundtripTable","resultSummary","chart","chartWrapper","result_resultvue_type_script_lang_js","result_component","backtestervue_type_script_lang_js","backtestable","configBuilder","backtester_backtestervue_type_script_lang_js","backtester_component","skipInitialEvents","skipLatestEvents","trackAllEvents","reduce","payload","latestUpdate","Date","[object Object]","intro","unscannableMakets","viewUnscannable","toggleUnscannable","datavue_type_script_lang_js","data_datavue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_roundtripTable_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_list_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","done","fromEnd","initialized","progress","progressBarvue_type_template_id_2b42ff94_lang_pug_render","style","progressBarvue_type_template_id_2b42ff94_lang_pug_staticRenderFns","progressBarvue_type_script_lang_js","global_progressBarvue_type_script_lang_js","progressBar","singlevue_type_script_lang_js","$route","fromEndMs","current","import_singlevue_type_script_lang_js","single_component","sync_init","commit","sync_sync","bus","$on","imports_sync","gekkos_sync_init","gekkos_sync_sync","gekkos_sync","notifications_sync_init","notifications_sync_sync","ws","notifications_sync","sync_transformMarkets","backendData","exchangesRaw","exchangesTemp","forEach","slug","pair","_pair$pair","exchangeMaxHistoryAge","providesFullHistory","config_sync_init","config_sync_sync","config_sync","store_init","socket","log","info","ws_connect","ReconnectingWebSocket","api","maxReconnectInterval","onopen","onclose","onerror","onmessage","JSON","watchers","status","stratrunners","profit","tradeCompleted","listvue_type_script_lang_js","timer","setInterval","destroyed","clearTimeout","_moment","_x","arguments","toString","b","gekko_listvue_type_script_lang_js","_import","importConfigBuildervue_type_template_id_a8c578c6_lang_pug_render","only-importable","updateRange","importConfigBuildervue_type_template_id_a8c578c6_lang_pug_staticRenderFns","importConfigBuildervue_type_script_lang_js","rangeCreator","rangecreator","importer","import_importConfigBuildervue_type_script_lang_js","importConfigBuilder","importervue_type_script_lang_js","daysApart","import_importervue_type_script_lang_js","importer_component","src","homevue_type_script_lang_js","layout_homevue_type_script_lang_js","isLoading","initialEvents","latestEvents","warmupRemaining","replace","stratName","isArchived","alpha","isStratrunner","watcher","stopGekko","deleteGekko","candleFetch","chartData","singleGekkovue_type_script_lang_js","getCandles","isLive","stratWarmupCompleted","warmupTime","add","stringify","isEqual","hasLeechers","data.events.latest.candle.start","random","res","isArray","_this4","gekko_singleGekkovue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_datasetpicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_blockSpinner_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_single_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","basePath","restPath","wsPath","CONFIG","endpoint","host","port","ssl","toggle","switchToggle","rawPaperTraderParams","rawPaperTraderParamsError","papertradervue_type_script_lang_js","paperTraderParams","reportRoundtrips","configbuilder_papertradervue_type_script_lang_js","mixin","_tools_ajax__WEBPACK_IMPORTED_MODULE_2__","errors","sets","sort","adiff","bdiff","reverse","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_stratpicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_paperTradeSummary_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_header_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","rt","entryAt","exitAt","entryBalance","exitBalance","sign","pnl","roundtripTablevue_type_script_lang_js","result_roundtripTablevue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_result_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_typepicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","processResponse","post","superagent__WEBPACK_IMPORTED_MODULE_0___default","_api_js__WEBPACK_IMPORTED_MODULE_2__","superagent_no_cache__WEBPACK_IMPORTED_MODULE_1___default","send","end","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_importer_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default"],"mappings":"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","file":"app.9aa8dda3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([26,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-3-6\"},[_c('table',{staticClass:\"p1\"},[_c('tr',[_c('th',[_vm._v(\"amount of trades\")]),_c('td',[_vm._v(_vm._s(_vm.report.trades))])]),_c('tr',[_c('th',[_vm._v(\"sharpe ratio\")]),_c('td',[_vm._v(_vm._s(_vm.round2(_vm.report.sharpe)))])]),_c('tr',[_c('th',[_vm._v(\"start balance\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.startBalance))+\" \"+_vm._s(_vm.report.currency))])]),_c('tr',[_c('th',[_vm._v(\"final balance\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.balance))+\" \"+_vm._s(_vm.report.currency))])]),_vm._m(0)]),_c('div',{staticClass:\"big txt--right price\",class:_vm.profitClass},[_vm._v(_vm._s(_vm.round(_vm.report.relativeProfit))+\"%\")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('th',[_vm._v(\"simulated profit\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./paperTradeSummary.vue?vue&type=template&id=637e135e&lang=pug\"\nimport script from \"./paperTradeSummary.vue?vue&type=script&lang=js\"\nexport * from \"./paperTradeSummary.vue?vue&type=script&lang=js\"\nimport style0 from \"./paperTradeSummary.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain my2\"},[_c('h3',[_vm._v(\"Start a new gekko\")]),_c('gekko-config-builder',{on:{\"config\":_vm.updateConfig}}),_c('div',{staticClass:\"hr\"}),(_vm.config.valid)?_c('div',{staticClass:\"txt--center\"},[(!_vm.pendingStratrunner)?_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.start($event)}}},[_vm._v(\"Start\")]):_vm._e(),(_vm.pendingStratrunner)?_c('spinner'):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd contain\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Market\")]),_c('market-picker',{attrs:{\"only-tradable\":_vm.isTradebot},on:{\"market\":_vm.updateMarketConfig}})],1),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('type-picker',{on:{\"type\":_vm.updateType}})],1)]),(_vm.type !== \"market watcher\")?[_c('div',{staticClass:\"hr\"}),_c('strat-picker',{staticClass:\"contain my2\",on:{\"stratConfig\":_vm.updateStrat}}),(_vm.type === \"paper trader\")?_c('div',{staticClass:\"hr\"}):_vm._e(),(_vm.type === \"paper trader\")?_c('paper-trader',{on:{\"settings\":_vm.updatePaperTrader}}):_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Type\")]),[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"type\"}},[_vm._v(\"What do you want to do with gekko?\")]),_c('form',{staticClass:\"radio grd\"},_vm._l((_vm.types),function(type,i){return _c('div',{staticClass:\"grd-row m1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedTypeIndex),expression:\"selectedTypeIndex\"}],staticClass:\"grd-row-col-1-6\",attrs:{\"type\":\"radio\"},domProps:{\"value\":i,\"checked\":_vm._q(_vm.selectedTypeIndex,i)},on:{\"change\":function($event){_vm.selectedTypeIndex=i}}}),_c('label',{staticClass:\"grd-row-col-5-6\",attrs:{\"for\":i}},[_vm._v(_vm._s(type))])])}))]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./typepicker.vue?vue&type=template&id=4a1aa84c&lang=pug\"\nimport script from \"./typepicker.vue?vue&type=script&lang=js\"\nexport * from \"./typepicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./typepicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./gekkoConfigBuilder.vue?vue&type=template&id=6015a1e6&lang=pug\"\nimport script from \"./gekkoConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./gekkoConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./gekkoConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./new.vue?vue&type=template&id=da0dc488&lang=pug\"\nimport script from \"./new.vue?vue&type=script&lang=js\"\nexport * from \"./new.vue?vue&type=script&lang=js\"\nimport style0 from \"./new.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=style&index=0&lang=css\"","const marked = require('marked');\n\n// add `target='_blank'` to outgoing links\n\n// https://github.com/chjj/marked/pull/451#issuecomment-49976076\n\nvar myRenderer = new marked.Renderer();\nmyRenderer.link = function(href, title, text) {\n var external, newWindow, out;\n external = /^https?:\\/\\/.+$/.test(href);\n newWindow = external || title === 'newWindow';\n out = \"\" + text + \"\";\n};\n\nmarked.setOptions({renderer: myRenderer});\n\nexport default marked;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mx1\"},[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"exchange\"}},[_vm._v(\"Exchange:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.exchange),expression:\"exchange\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.exchange=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.exchanges),function(market,e){return _c('option',[_vm._v(_vm._s(e))])}))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('label',{attrs:{\"for\":\"currency\"}},[_vm._v(\"Currency:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currency),expression:\"currency\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.currency=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.currencies),function(cur){return _c('option',[_vm._v(_vm._s(cur))])}))])]),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('label',{attrs:{\"for\":\"asset\"}},[_vm._v(\"Asset:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.asset),expression:\"asset\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.asset=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.assets),function(asst){return _c('option',[_vm._v(_vm._s(asst))])}))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./marketpicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./marketpicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./marketpicker.vue?vue&type=template&id=df4a8b2a&lang=pug\"\nimport script from \"./marketpicker.vue?vue&type=script&lang=js\"\nexport * from \"./marketpicker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 px1\"},[_c('h3',[_vm._v(\"Strategy\")]),_c('div',[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"strat\"}},[_vm._v(\"Strategy:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.strategy),expression:\"strategy\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.strategy=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.strategies),function(strat){return _c('option',[_vm._v(_vm._s(strat.name))])}))])]),_c('div',[_c('label',{attrs:{\"for\":\"candleSize\"}},[_vm._v(\"Candle Size\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rawCandleSize),expression:\"rawCandleSize\"}],domProps:{\"value\":(_vm.rawCandleSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.rawCandleSize=$event.target.value}}})]),_c('div',{staticClass:\"grd-row-col-3-6 align\"},[_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.candleSizeUnit),expression:\"candleSizeUnit\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.candleSizeUnit=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',[_vm._v(\"minutes\")]),_c('option',[_vm._v(\"hours\")]),_c('option',[_vm._v(\"days\")])])])])])]),_c('div',[_c('label',{attrs:{\"for\":\"historySize\"}},[_vm._v(\"Warmup period (in \"+_vm._s(_vm.rawCandleSize)+\" \"+_vm._s(_vm.singularCandleSizeUnit)+\" candles):\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.historySize),expression:\"historySize\"}],domProps:{\"value\":(_vm.historySize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.historySize=$event.target.value}}}),_c('em',{staticClass:\"label-like\"},[_vm._v(\"(will use \"+_vm._s(_vm.humanizeDuration(_vm.candleSize * _vm.historySize * 1000 * 60))+\" of data as history)\")])])]),_c('div',{staticClass:\"grd-row-col-3-6 px1\"},[_c('div',[_c('h3',[_vm._v(\"Parameters\")]),_c('p',[_vm._v(_vm._s(_vm.strategy)+\" Parameters:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rawStratParams),expression:\"rawStratParams\"}],staticClass:\"params\",domProps:{\"value\":(_vm.rawStratParams)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.rawStratParams=$event.target.value}}}),(_vm.rawStratParamsError)?_c('p',{staticClass:\"bg--red p1\"},[_vm._v(_vm._s(_vm.rawStratParamsError.message))]):_vm._e()])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./stratpicker.vue?vue&type=template&id=1df710ae&lang=pug\"\nimport script from \"./stratpicker.vue?vue&type=script&lang=js\"\nexport * from \"./stratpicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./stratpicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Daterange\")]),_c('div',[_c('label',{attrs:{\"for\":\"from\"}},[_vm._v(\"From\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.from),expression:\"from\"}],domProps:{\"value\":(_vm.from)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.from=$event.target.value}}})]),_c('div',[_c('label',{attrs:{\"for\":\"to\"}},[_vm._v(\"To\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.to),expression:\"to\"}],domProps:{\"value\":(_vm.to)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.to=$event.target.value}}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./rangecreator.vue?vue&type=template&id=8c51143a&lang=pug\"\nimport script from \"./rangecreator.vue?vue&type=script&lang=js\"\nexport * from \"./rangecreator.vue?vue&type=script&lang=js\"\nimport style0 from \"./rangecreator.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spinner\"},[_c('div',{staticClass:\"rect1\"}),_c('div',{staticClass:\"rect2\"}),_c('div',{staticClass:\"rect3\"}),_c('div',{staticClass:\"rect4\"})])}]\n\nexport { render, staticRenderFns }","// http://tobiasahlin.com/spinkit/\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./blockSpinner.vue?vue&type=template&id=45447ea6&lang=pug\"\nimport script from \"./blockSpinner.vue?vue&type=script&lang=js\"\nexport * from \"./blockSpinner.vue?vue&type=script&lang=js\"\nimport style0 from \"./blockSpinner.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('top'),_c('div',{staticClass:\"fill\"},[_c('router-view',{staticClass:\"view\"})],1),_c('bottom'),_c('modal')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"top\"}}),_vm._m(0),_c('nav',{staticClass:\"bg--light-gray\"},[_c('div',{staticClass:\"menu contain\"},[_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/home\"}},[_vm._v(\"Home\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/live-gekkos\"}},[_vm._v(\"Live Gekkos\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/backtest\"}},[_vm._v(\"Backtest\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/data\"}},[_vm._v(\"Local data\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/config\"}},[_vm._v(\"Config\")]),_c('a',{staticClass:\"py1\",attrs:{\"href\":\"https://gekko.wizb.it/docs/introduction/about_gekko.html\",\"target\":\"_blank\"}},[_vm._v(\"Documentation\")])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"bg--off-white grd\"},[_c('div',{staticClass:\"contain grd-row\"},[_c('h3',{staticClass:\"py1 px2 col-2\"},[_vm._v(\"Gekko UI\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=0a62d360&lang=pug\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.vue?vue&type=script&lang=js\"\nimport style0 from \"./header.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"p2 bg--off-white\"},[_c('div',{staticClass:\"contain\"},[_vm._m(0),_c('p',[_vm._v(\"Using Gekko v\"+_vm._s(_vm.version.gekko)+\" and Gekko UI v\"+_vm._s(_vm.version.ui)+\".\")])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('em',[_vm._v(\"Use Gekko at your own risk.\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./footer.vue?vue&type=template&id=7782dc11&lang=pug\"\nimport script from \"./footer.vue?vue&type=script&lang=js\"\nexport * from \"./footer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.active)?_c('div',[_c('div',{attrs:{\"id\":\"modal-background\"}}),_c('div',{staticClass:\"modal\",attrs:{\"id\":\"modal\"}},[_c('div',{staticClass:\"modal-guts\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./modal.vue?vue&type=template&id=340a7d17&lang=pug\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\nimport style0 from \"./modal.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=29e7b8c2&lang=pug\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\n\nexport const addImport = (state, imp) => {\n state.imports.push(imp);\n return state;\n}\n\nexport const syncImports = (state, imports) => {\n state.imports = imports;\n return state;\n}\n\nexport const updateImport = (state, update) => {\n let index = state.imports.findIndex(i => i.id === update.import_id);\n let item = state.imports[index];\n if(!item)\n return state;\n\n let updated = Vue.util.extend(item, update.updates);\n Vue.set(state.imports, index, updated);\n\n return state;\n}","import Vue from 'vue'\nimport _ from 'lodash';\nconst reduceState = require('../../../../../state/reduceState');\n\nexport const syncGekkos = (state, data) => {\n if(!data) {\n return state;\n }\n\n state.gekkos = data.live;\n state.archivedGekkos = data.archive;\n return state;\n}\n\nexport const addGekko = (state, gekko) => {\n state.gekkos = {\n ...state.gekkos,\n [gekko.id]: gekko\n }\n return state;\n}\n\nexport const updateGekko = (state, update) => {\n if(!update.id || !_.has(state.gekkos, update.id)) {\n return console.error('cannot update unknown gekko..');;\n }\n\n state.gekkos = {\n ...state.gekkos,\n [update.id]: reduceState(state.gekkos[update.id], update.event)\n }\n return state;\n}\n\nexport const archiveGekko = (state, id) => {\n if(!_.has(state.gekkos, id)) {\n return console.error('cannot archive unknown gekko..');\n }\n\n state.archivedGekkos = {\n ...state.archivedGekkos,\n [id]: {\n ...state.gekkos[id],\n stopped: true,\n active: false\n }\n }\n\n state.gekkos = _.omit(state.gekkos, id);\n return state;\n}\n\nexport const errorGekko = (state, data) => {\n if(!_.has(state.gekkos, data.id)) {\n return console.error('cannot error unknown gekko..');\n }\n\n state.gekkos = {\n ...state.gekkos,\n [data.id]: {\n ...state.gekkos[data.id],\n errored: true,\n errorMessage: data.error\n }\n }\n\n return state;\n}\n\nexport const deleteGekko = (state, id) => {\n if(!_.has(state.archivedGekkos, id)) {\n return console.error('cannot delete unknown gekko..');\n }\n\n state.archivedGekkos = _.omit(state.archivedGekkos, id);\n return state;\n}","import Vue from 'vue'\nimport _ from 'lodash'\n\nexport const setGlobalWarning = (state, warning) => {\n state.warnings[warning.key] = warning.value;\n return state;\n}","import Vue from 'vue'\n\nexport const syncApiKeys = (state, apiKeys) => {\n Vue.set(state, 'apiKeys', apiKeys);\n return state;\n}\n\nexport const syncExchanges = (state, exchanges) => {\n Vue.set(state, 'exchanges', exchanges);\n return state;\n}","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport _ from 'lodash'\n\nimport * as importMutations from './modules/imports/mutations'\nimport * as gekkoMutations from './modules/gekkos/mutations'\nimport * as notificationMutations from './modules/notifications/mutations'\nimport * as configMutations from './modules/config/mutations'\n\nVue.use(Vuex);\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nlet mutations = {};\n\n_.merge(mutations, importMutations);\n_.merge(mutations, gekkoMutations);\n_.merge(mutations, notificationMutations);\n_.merge(mutations, configMutations);\n\nexport default new Vuex.Store({\n state: {\n warnings: {\n connected: true, // assume we will connect\n },\n imports: [],\n gekkos: {},\n archivedGekkos: {},\n connection: {\n disconnected: false,\n reconnected: false\n },\n apiKeys: [],\n exchanges: {}\n },\n mutations,\n strict: debug\n})","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ clickable: !_vm.isClicked },attrs:{\"id\":\"chartWrapper\"}},[_c('div',{staticClass:\"shield\",on:{\"click\":function($event){$event.preventDefault();return _vm.click($event)}}}),_c('svg',{attrs:{\"id\":\"chart\",\"width\":\"960\",\"height\":_vm.height}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import _ from 'lodash';\n// global moment\n\nexport default function(_data, _trades, _height) {\n\n const toDate = i => {\n if(_.isNumber(i)) {\n return moment.unix(i).utc().toDate();\n } else {\n return moment.utc(i).toDate();\n }\n }\n\n const trades = _trades.map(t => {\n return {\n price: t.price,\n date: toDate(t.date),\n action: t.action\n }\n });\n\n const data = _data.map(c => {\n return {\n price: c.open,\n date: toDate(c.start)\n }\n });\n\n var dates = data.map(c => +c.date);\n var prices = data.map(c => +c.price)\n\n var svg = d3.select(\"#chart\");\n\n svg.attr(\"width\", window.innerWidth - 20);\n\n var margin = {top: 20, right: 20, bottom: 110, left: 40};\n var height = _height - margin.top - margin.bottom;\n var margin2 = {top: _height - 70, right: 20, bottom: 30, left: 40};\n var width = +svg.attr(\"width\") - margin.left - margin.right;\n var height2 = _height - margin2.top - margin2.bottom;\n\n var x = d3.scaleUtc().range([0, width]),\n x2 = d3.scaleUtc().range([0, width]),\n y = d3.scaleLinear().range([height, 0]),\n y2 = d3.scaleLinear().range([height2, 0]);\n\n var xAxis = d3.axisBottom(x),\n xAxis2 = d3.axisBottom(x2),\n yAxis = d3.axisLeft(y).ticks(_height / 50);\n\n var brush = d3.brushX()\n .extent([[0, 0], [width, height2]])\n .on(\"brush end\", brushed);\n\n var zoom = d3.zoom()\n .scaleExtent([1, 100])\n .translateExtent([[0, 0], [width, height]])\n .extent([[0, 0], [width, height]])\n .on(\"zoom\", zoomed);\n\n var line = d3.line()\n .x(function(d) { return x(d.date); })\n .y(function(d) { return y(d.price); });\n\n var line2 = d3.line()\n .x(function(d) { return x2(d.date); })\n .y(function(d) { return y2(d.price); });\n\n svg.append(\"defs\").append(\"clipPath\")\n .attr(\"id\", \"clip\")\n .append(\"rect\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n var focus = svg.append(\"g\")\n .attr(\"class\", \"focus\")\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n var context = svg.append(\"g\")\n .attr(\"class\", \"context\")\n .attr(\"transform\", \"translate(\" + margin2.left + \",\" + margin2.top + \")\");\n\n x.domain(d3.extent(data, function(d) { return d.date; }));\n y.domain([\n d3.min(prices) * 0.99,\n d3.max(prices) * 1.01\n ]);\n x2.domain(x.domain());\n y2.domain(y.domain());\n\n focus.append(\"path\")\n .datum(data)\n .attr(\"class\", \"line price\")\n .attr(\"d\", line);\n\n focus.append(\"g\")\n .attr(\"class\", \"axis axis--x\")\n .attr(\"transform\", \"translate(0,\" + height + \")\")\n .call(xAxis);\n\n focus.append(\"g\")\n .attr(\"class\", \"axis axis--y\")\n .call(yAxis);\n\n context.append(\"path\")\n .datum(data)\n .attr(\"class\", \"line\")\n .attr(\"d\", line2);\n\n context.append(\"g\")\n .attr(\"class\", \"axis axis--x\")\n .attr(\"transform\", \"translate(0,\" + height2 + \")\")\n .call(xAxis2);\n\n var circles = svg\n .append('g')\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .selectAll(\"circle\")\n .data(trades)\n .enter().append(\"circle\")\n .attr('class', function(d) { return d.action })\n .attr(\"cx\", function(d) { return x(d.date); })\n .attr(\"cy\", function(d) { return y(d.price); })\n .attr('r', 5);\n\n var brushCircles = context\n .append('g')\n // .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .selectAll(\"circle\")\n .data(trades)\n .enter().append(\"circle\")\n .attr('class', function(d) { return d.action })\n .attr(\"cx\", function(d) { return x2(d.date); })\n .attr(\"cy\", function(d) { return y2(d.price); })\n .attr('r', 3);\n\n\n context.append(\"g\")\n .attr(\"class\", \"brush\")\n .call(brush)\n .call(brush.move, x.range());\n\n svg.append(\"rect\")\n .attr(\"class\", \"zoom\")\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .call(zoom);\n\n function brushed() {\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === \"zoom\") return; // ignore brush-by-zoom\n var s = d3.event.selection || x2.range();\n x.domain(s.map(x2.invert, x2));\n\n scaleY(x.domain());\n\n svg.select(\".axis--y\")\n .call(yAxis);\n\n circles\n .attr(\"cx\", function(d) { return x(d.date); })\n .attr(\"cy\", function(d) { return y(d.price); })\n\n focus.select(\".line\").attr(\"d\", line);\n focus.select(\".axis--x\").call(xAxis);\n svg.select(\".zoom\").call(zoom.transform, d3.zoomIdentity\n .scale(width / (s[1] - s[0]))\n .translate(-s[0], 0));\n }\n\n function scaleY(domain) {\n let [min, max] = domain;\n\n let minIndex = _.sortedIndex(dates, min);\n let maxIndex = _.sortedIndex(dates, max);\n\n let set = prices.slice(minIndex, maxIndex);\n y.domain([\n d3.min(set) * 0.9995,\n d3.max(set) * 1.0005\n ]);\n }\n\n function zoomed() {\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === \"brush\") return; // ignore zoom-by-brush\n var t = d3.event.transform;\n\n scaleY(t.rescaleX(x2).domain()); \n\n svg.select(\".axis--y\")\n .call(yAxis);\n\n x.domain(t.rescaleX(x2).domain());\n focus.select(\".line\").attr(\"d\", line);\n\n circles\n .attr(\"cx\", function(d) { return x(d.date); })\n .attr(\"cy\", function(d) { return y(d.price); })\n\n\n focus.select(\".axis--x\").call(xAxis);\n context.select(\".brush\").call(brush.move, x.range().map(t.invertX, t));\n }\n}","export const draw = function(message) {\n d3.select(\"#chart\").append(\"text\")\n .attr('class', 'message')\n .attr('x', 150)\n .attr('y', 150)\n .text(message);\n}\n\nexport const clear = function() {\n d3.select(\"#chart\").find('text').remove();\n}","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./chartWrapper.vue?vue&type=template&id=12bcb8d8&lang=pug\"\nimport script from \"./chartWrapper.vue?vue&type=script&lang=js\"\nexport * from \"./chartWrapper.vue?vue&type=script&lang=js\"\nimport style0 from \"./chartWrapper.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\n\nimport VueRouter from 'vue-router'\nVue.use(VueRouter);\n\nimport store from './store'\n\nimport backtester from './components/backtester/backtester.vue'\nimport home from './components/layout/home.vue'\n\nimport data from './components/data/data.vue'\nimport importer from './components/data/import/importer.vue'\nimport singleImport from './components/data/import/single.vue'\nimport config from './components/config/config.vue'\n\nimport gekkoList from './components/gekko/list.vue'\nimport newGekko from './components/gekko/new.vue'\nimport singleGekko from './components/gekko/singleGekko.vue'\nimport { connect as connectWS } from './components/global/ws'\n\nconst router = new VueRouter({\n mode: 'hash',\n base: __dirname,\n routes: [\n { path: '/', redirect: '/home' },\n { path: '/home', component: home },\n { path: '/backtest', component: backtester },\n { path: '/config', component: config },\n { path: '/data', component: data },\n { path: '/data/importer', component: importer },\n { path: '/data/importer/import/:id', component: singleImport },\n { path: '/live-gekkos', component: gekkoList },\n { path: '/live-gekkos/new', component: newGekko },\n { path: '/live-gekkos/:id', component: singleGekko },\n ]\n});\n\n// setup some stuff\nconnectWS();\n\nnew Vue({\n router,\n store,\n el: '#app',\n render: h => h(App)\n})","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('h2',[_vm._v(\"Config\")]),_c('div',{staticClass:\"hr\"}),_c('h3',[_vm._v(\"Available API keys\")]),(!_vm.apiKeySets.length)?_c('p',[_c('em',[_vm._v(\"You don't have any API keys yet.\")])]):_vm._e(),_c('ul',_vm._l((_vm.apiKeySets),function(exchange){return _c('li',[_vm._v(_vm._s(exchange)+\" (\"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.removeApiKey(exchange)}}},[_vm._v(\"remove\")]),_vm._v(\")\")])})),(!_vm.addApiToggle)?_c('a',{staticClass:\"btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.openAddApi($event)}}},[_vm._v(\"Add an API key\")]):_vm._e(),(_vm.addApiToggle)?[_c('div',{staticClass:\"hr\"}),_c('apiConfigBuilder')]:_vm._e(),_c('div',{staticClass:\"hr\"})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd contain\"},[_c('h3',[_vm._v(\"Add an API key\")]),_c('p',[_vm._v(\"Make sure that the API key has the permissions to create and cancel orders and view balances.\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Exchange\")]),_c('exchange-picker',{attrs:{\"only-tradable\":\"true\"},on:{\"exchange\":_vm.updateExchange}})],1),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Credentials\")]),_vm._l((_vm.requires),function(cred){return [_c('label',[_vm._v(_vm._s(cred))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.credentials[cred]),expression:\"credentials[cred]\"}],domProps:{\"value\":(_vm.credentials[cred])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.credentials, cred, $event.target.value)}}})]})],2)]),_c('div',{staticClass:\"txt--center\"},[_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.upload($event)}}},[_vm._v(\"Add\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mx1\"},[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"exchange\"}},[_vm._v(\"Exchange:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.exchange),expression:\"exchange\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.exchange=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.exchanges),function(market,e){return _c('option',[_vm._v(_vm._s(e))])}))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exchangepicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exchangepicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./exchangepicker.vue?vue&type=template&id=50c29cb0&lang=pug\"\nimport script from \"./exchangepicker.vue?vue&type=script&lang=js\"\nexport * from \"./exchangepicker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./apiConfigBuilder.vue?vue&type=template&id=4a31b09e&lang=pug\"\nimport script from \"./apiConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./apiConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./apiConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./config.vue?vue&type=template&id=d21dbde6&lang=pug\"\nimport script from \"./config.vue?vue&type=script&lang=js\"\nexport * from \"./config.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Daterange\")]),(_vm.tab === \"scan\")?[(!_vm.scanned)?_c('div',{staticClass:\"txt--center\"},[_c('a',{staticClass:\"w100--s btn--primary scan-btn\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"Scan available data\")])]):_vm._e(),(_vm.scanned == \"fetching\")?_c('div',{staticClass:\"txt--center\"},[_c('p',{staticClass:\"scan-btn\"},[_vm._v(\"Scanning..\")])]):_vm._e(),(_vm.scanned == true)?[(_vm.ranges.length === 0)?[_c('p',[_c('strong',[_vm._v(\"Unable to find any local data, do you have local data available for\\\"\"+_vm._s(_vm.config.watch.exchange)+\":\"+_vm._s(_vm.config.watch.currency)+\"/\"+_vm._s(_vm.config.watch.asset)+\"\\\"?\")])])]:[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"exchange\"}},[_vm._v(\"Run simulation over:\")]),_c('form',{staticClass:\"radio grd\"},_vm._l((_vm.ranges),function(range,i){return _c('div',{staticClass:\"grd-row m1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedRangeIndex),expression:\"selectedRangeIndex\"}],staticClass:\"grd-row-col-1-6\",attrs:{\"type\":\"radio\"},domProps:{\"value\":i,\"checked\":_vm._q(_vm.selectedRangeIndex,i)},on:{\"change\":function($event){_vm.selectedRangeIndex=i}}}),_c('label',{staticClass:\"grd-row-col-5-6\",attrs:{\"for\":i}},[_vm._v(_vm._s(_vm.printRange(range)))])])}))],_c('p',[_c('em',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"rescan\")])])])]:_vm._e(),_c('p',{staticClass:\"txt--center\"},[_c('em',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.tab = \"manual\"}}},[_vm._v(\"Or manually set a daterange\")])])])]:_vm._e(),(_vm.tab === \"manual\")?[_c('div',[_c('label',{attrs:{\"for\":\"from\"}},[_vm._v(\"From:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.from),expression:\"from\"}],domProps:{\"value\":(_vm.from)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.from=$event.target.value}}})]),_c('div',[_c('label',{attrs:{\"for\":\"to\"}},[_vm._v(\"To:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.to),expression:\"to\"}],domProps:{\"value\":(_vm.to)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.to=$event.target.value}}})]),_c('p',{staticClass:\"txt--center\"}),_c('em',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.tab = \"scan\"}}},[_vm._v(\"Or scan for a daterange\")])])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./rangepicker.vue?vue&type=template&id=5037047f&lang=pug\"\nimport script from \"./rangepicker.vue?vue&type=script&lang=js\"\nexport * from \"./rangepicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./rangepicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',{staticClass:\"contain\"},[_vm._v(\"Backtest\")]),_c('div',{staticClass:\"hr\"}),_c('config-builder',{on:{\"config\":_vm.check}}),(_vm.backtestable)?_c('div',[_c('div',{staticClass:\"txt--center\"},[(_vm.backtestState !== \"fetching\")?_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.run($event)}}},[_vm._v(\"Backtest\")]):_vm._e(),(_vm.backtestState === \"fetching\")?_c('div',{staticClass:\"scan-btn\"},[_c('p',[_vm._v(\"Running backtest..\")]),_c('spinner')],1):_vm._e()])]):_vm._e(),(_vm.backtestResult && _vm.backtestState === \"fetched\")?_c('result',{attrs:{\"result\":_vm.backtestResult}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('dataset-picker',{staticClass:\"my2 contain\",on:{\"dataset\":_vm.updateDataset}}),_c('div',{staticClass:\"hr\"}),_c('strat-picker',{staticClass:\"my2 contain\",on:{\"stratConfig\":_vm.updateStrat}}),_c('div',{staticClass:\"hr\"}),_c('paper-trader',{staticClass:\"contain\",on:{\"settings\":_vm.updatePaperTrader}}),_c('div',{staticClass:\"hr\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Select a dataset\")]),(_vm.datasetScanstate === \"idle\")?_c('div',{staticClass:\"txt--center my2\"},[_c('a',{staticClass:\"w100--s btn--primary scan-btn\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"Scan available data\")])]):_vm._e(),(_vm.datasetScanstate === \"scanning\")?_c('div',{staticClass:\"txt--center my2\"},[_c('spinner')],1):_vm._e(),(_vm.datasetScanstate === \"scanned\")?_c('div',{staticClass:\"my2\"},[(_vm.datasets.length != 0)?_c('div',[_c('table',{staticClass:\"full\"},[_vm._m(0),_c('tbody',_vm._l((_vm.datasets),function(set,i){return _c('tr',[_c('td',{staticClass:\"radio\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.setIndex),expression:\"setIndex\"}],attrs:{\"type\":\"radio\",\"name\":\"dataset\",\"id\":set.id},domProps:{\"value\":i,\"checked\":_vm._q(_vm.setIndex,i)},on:{\"change\":function($event){_vm.setIndex=i}}})]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(set.exchange))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(set.currency))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(set.asset))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(_vm.fmt(set.from)))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(_vm.fmt(set.to)))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(_vm.humanizeDuration(set.to.diff(set.from))))])])])}))]),(!_vm.rangeVisible)?_c('a',{staticClass:\"btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.openRange($event)}}},[_vm._v(\"Adjust range\")]):_vm._e(),(_vm.rangeVisible)?[_c('div',[_c('label',{attrs:{\"for\":\"customFrom\"}},[_vm._v(\"From:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customFrom),expression:\"customFrom\"}],domProps:{\"value\":(_vm.customFrom)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.customFrom=$event.target.value}}})]),_c('div',[_c('label',{attrs:{\"for\":\"customTo\"}},[_vm._v(\"To:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customTo),expression:\"customTo\"}],domProps:{\"value\":(_vm.customTo)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.customTo=$event.target.value}}})])]:_vm._e()],2):_c('em',[_vm._v(\"No Data found \"),_c('a',{attrs:{\"href\":\"#/data/importer\"}},[_vm._v(\"Lets add some\")])])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th'),_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"from\")]),_c('th',[_vm._v(\"to\")]),_c('th',[_vm._v(\"duration\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./datasetpicker.vue?vue&type=template&id=689b8a00&lang=pug\"\nimport script from \"./datasetpicker.vue?vue&type=script&lang=js\"\nexport * from \"./datasetpicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./datasetpicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./backtestConfigBuilder.vue?vue&type=template&id=0b74d9a3&lang=pug\"\nimport script from \"./backtestConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./backtestConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./backtestConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"hr contain\"}),_vm._m(0),_c('result-summary',{attrs:{\"report\":_vm.result.performanceReport}}),_c('div',{staticClass:\"hr contain\"}),_c('chart',{attrs:{\"data\":_vm.candles,\"height\":\"500\"}}),_c('div',{staticClass:\"hr contain\"}),_c('roundtripTable',{attrs:{\"roundtrips\":_vm.result.roundtrips}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('h3',[_vm._v(\"Backtest result\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('div',{staticClass:\"grd-row summary\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('table',{staticClass:\"p1\"},[_c('tr',[_c('th',[_vm._v(\"start time\")]),_c('td',[_vm._v(_vm._s(_vm.report.startTime))])]),_c('tr',[_c('th',[_vm._v(\"end time\")]),_c('td',[_vm._v(_vm._s(_vm.report.endTime))])]),_c('tr',[_c('th',[_vm._v(\"timespan\")]),_c('td',[_vm._v(_vm._s(_vm.report.timespan))])]),_c('tr',[_c('th',[_vm._v(\"start price\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.startPrice))+\" \"+_vm._s(_vm.report.currency))])]),_c('tr',[_c('th',[_vm._v(\"end price\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.endPrice))+\" \"+_vm._s(_vm.report.currency))])]),_c('tr',[_c('th',[_vm._v(\"market\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.market))+\"%\")])])])]),_c('paperTradeSummary',{attrs:{\"report\":_vm.report}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./summary.vue?vue&type=template&id=5bfc891d&lang=pug\"\nimport script from \"./summary.vue?vue&type=script&lang=js\"\nexport * from \"./summary.vue?vue&type=script&lang=js\"\nimport style0 from \"./summary.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./result.vue?vue&type=template&id=72b63acc&lang=pug\"\nimport script from \"./result.vue?vue&type=script&lang=js\"\nexport * from \"./result.vue?vue&type=script&lang=js\"\nimport style0 from \"./result.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtester.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtester.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./backtester.vue?vue&type=template&id=da4202e8&lang=pug\"\nimport script from \"./backtester.vue?vue&type=script&lang=js\"\nexport * from \"./backtester.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Redux/vuex inspired reducer, reduces an event into a gekko state.\n// NOTE: this is used by the backend as well as the frontend.\n\nconst skipInitialEvents = ['marketUpdate'];\nconst skipLatestEvents = ['marketStart', 'stratWarmupCompleted'];\nconst trackAllEvents = ['tradeCompleted', 'advice', 'roundtrip'];\n\nconst reduce = (state, event) => {\n const type = event.type;\n const payload = event.payload;\n\n state = {\n ...state,\n latestUpdate: new Date()\n }\n\n if(trackAllEvents.includes(type)) {\n if(!state.events[type]) {\n state = {\n ...state,\n events: {\n ...state.events,\n [type]: [ payload ]\n }\n }\n } else {\n state = {\n ...state,\n events: {\n ...state.events,\n [type]: [ ...state.events[type], payload ]\n }\n }\n }\n }\n\n if(!state.events.initial[type] && !skipInitialEvents.includes(type)) {\n state = {\n ...state,\n events: {\n ...state.events,\n initial: {\n ...state.events.initial,\n [type]: payload\n }\n }\n }\n }\n\n if(!skipLatestEvents.includes(type)) {\n state = {\n ...state,\n events: {\n ...state.events,\n latest: {\n ...state.events.latest,\n [type]: payload\n }\n }\n }\n }\n\n return state;\n}\n\n// export default reduce;\nmodule.exports = reduce;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('div',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.intro)}}),_c('div',{staticClass:\"hr\"}),_c('h2',[_vm._v(\"Available datasets\")]),(_vm.datasetScanstate === \"idle\")?_c('div',{staticClass:\"txt--center my2\"},[_c('a',{staticClass:\"w100--s btn--primary scan-btn\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"Scan available data\")])]):_vm._e(),(_vm.datasetScanstate === \"scanning\")?_c('div',{staticClass:\"txt--center my2\"},[_c('spinner')],1):_vm._e(),(_vm.datasetScanstate === \"scanned\")?_c('div',{staticClass:\"my2\"},[(_vm.unscannableMakets.length)?_c('div',{staticClass:\"bg--orange p1 warning my1\"},[(!_vm.viewUnscannable)?_c('p',{staticClass:\"clickable\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleUnscannable($event)}}},[_vm._v(\"Some markets were unscannable, click here for details.\")]):_vm._e(),(_vm.viewUnscannable)?[_c('p',[_vm._v(\"Unable to find datasets in the following markets:\")]),_vm._l((_vm.unscannableMakets),function(market){return _c('div',{staticClass:\"mx2\"},[_vm._v(\"- \"+_vm._s(market.exchange)+\":\"+_vm._s(market.currency)+\":\"+_vm._s(market.asset))])})]:_vm._e()],2):_vm._e(),(_vm.datasets.length)?[_c('table',{staticClass:\"full data\"},[_vm._m(0),_c('tbody',_vm._l((_vm.datasets),function(set){return _c('tr',[_c('td',[_vm._v(_vm._s(set.exchange))]),_c('td',[_vm._v(_vm._s(set.currency))]),_c('td',[_vm._v(_vm._s(set.asset))]),_c('td',[_vm._v(_vm._s(_vm.fmt(set.from)))]),_c('td',[_vm._v(_vm._s(_vm.fmt(set.to)))]),_c('td',[_vm._v(_vm._s(_vm.humanizeDuration(set.to.diff(set.from))))])])}))])]:_vm._e(),(!_vm.datasets.length)?[_c('p',[_vm._v(\"It looks like you don't have any local data yet.\")])]:_vm._e()],2):_vm._e(),_c('div',{staticClass:\"my2\"},[_c('h2',[_vm._v(\"Import more data\")]),_c('p',{staticClass:\"text\"},[_vm._v(\"You can easily import more market data directly from exchanges using the importer.\")]),_c('router-link',{staticClass:\"btn--primary\",attrs:{\"to\":\"/data/importer\"}},[_vm._v(\"Go to the importer!\")])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"from\")]),_c('th',[_vm._v(\"to\")]),_c('th',[_vm._v(\"duration\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./data.vue?vue&type=template&id=6009d44c&lang=pug\"\nimport script from \"./data.vue?vue&type=script&lang=js\"\nexport * from \"./data.vue?vue&type=script&lang=js\"\nimport style0 from \"./data.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain my2\"},[(_vm.data && !_vm.data.done)?_c('div',[_c('h2',[_vm._v(\"Importing data..\")]),_c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"grd-row\"},[_vm._m(0),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.data.watch.exchange))])]),_c('div',{staticClass:\"grd-row\"},[_vm._m(1),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.data.watch.currency)+\"/\"+_vm._s(_vm.data.watch.asset))])])]),_c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"grd-row\"},[_vm._m(2),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.from)))])]),_c('div',{staticClass:\"grd-row\"},[_vm._m(3),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.to)))])]),(_vm.initialized)?_c('div',{staticClass:\"grd-row\"},[_vm._m(4),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.latest)))])]):_vm._e(),(_vm.initialized)?_c('div',{staticClass:\"grd-row\"},[_vm._m(5),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fromEnd))])]):_vm._e()]),(!_vm.initialized)?_c('spinner'):_vm._e(),(_vm.initialized)?_c('div',{staticClass:\"contain\"},[_c('progressBar',{attrs:{\"progress\":_vm.progress}})],1):_vm._e(),_c('p',[_c('em',[_vm._v(\"(you don't have to wait until the import is done,you can already start \"),_c('router-link',{attrs:{\"to\":\"/backtest\"}},[_vm._v(\"backtesting\")]),_vm._v(\").\")],1)])],1):_vm._e(),(_vm.data && _vm.data.done)?_c('div',{staticClass:\"txt--center\"},[_c('h2',[_vm._v(\"Import done\")]),_c('p',[_vm._v(\" Go and \"),_c('router-link',{attrs:{\"to\":\"/backtest\"}},[_vm._v(\"backtest\")]),_vm._v(\" with your new data!\")],1)]):_vm._e(),(!_vm.data)?_c('div',{staticClass:\"txt--center\"},[_c('h2',[_vm._v(\"ERROR: Unknown import\")]),_c('p',[_c('I',[_vm._v(\"don't know this import..\")])],1)]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Market:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Currency/Asset:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"From:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"To:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Imported data until:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Remaining:\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.progress)?_c('div',{staticClass:\"progressbarWrapper\"},[_c('p',[_c('strong',[_vm._v(_vm._s(_vm.round(_vm.progress))+\"%\")])]),_c('div',{staticClass:\"progressbar\"},[_c('div',{style:({width: _vm.progress + \"%\"})})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// http://stackoverflow.com/questions/7190898/progress-bar-with-html-and-css\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./progressBar.vue?vue&type=template&id=2b42ff94&lang=pug\"\nimport script from \"./progressBar.vue?vue&type=script&lang=js\"\nexport * from \"./progressBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./progressBar.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./single.vue?vue&type=template&id=b930fa5e&lang=pug\"\nimport script from \"./single.vue?vue&type=script&lang=js\"\nexport * from \"./single.vue?vue&type=script&lang=js\"\nimport style0 from \"./single.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { get } from '../../../tools/ajax'\nimport store from '../../'\nimport { bus } from '../../../components/global/ws'\n\nconst init = () => {\n get('imports', (err, resp) => {\n store.commit('syncImports', resp);\n });\n}\n\nconst sync = () => {\n bus.$on('import_update', data => {\n store.commit('updateImport', data);\n });\n}\n\nexport default function() {\n init();\n sync();\n}","import { get } from '../../../tools/ajax'\nimport store from '../../'\nimport { bus } from '../../../components/global/ws'\nimport _ from 'lodash'\n\nconst init = () => {\n get('gekkos', (err, resp) => {\n const gekkos = resp;\n store.commit('syncGekkos', gekkos);\n });\n}\n\nconst sync = () => {\n bus.$on('gekko_new', data => store.commit('addGekko', data.state));\n bus.$on('gekko_event', data => store.commit('updateGekko', data));\n bus.$on('gekko_archived', data => store.commit('archiveGekko', data.id));\n bus.$on('gekko_error', data => store.commit('errorGekko', data));\n bus.$on('gekko_deleted', data => store.commit('deleteGekko', data.id));\n\n // unused:\n // bus.$on('gekko_stopped', data => store.commit('x', data.id));\n // bus.$on('gekko_deleted', data => store.commit('x', data.id));\n}\n\nexport default function() {\n init();\n sync();\n}","import store from '../../'\nimport { bus } from '../../../components/global/ws'\n\nconst init = () => {}\n\nconst sync = () => {\n bus.$on('WS_STATUS_CHANGE', ws => {\n return store.commit('setGlobalWarning', {key: 'connected', value: ws.connected});\n });\n}\n\nexport default function() {\n init();\n sync();\n}","import { get } from '../../../tools/ajax'\nimport store from '../../'\nimport { bus } from '../../../components/global/ws'\n\nconst transformMarkets = backendData => {\n if(!backendData) {\n return {};\n }\n\n var exchangesRaw = backendData;\n var exchangesTemp = {};\n\n exchangesRaw.forEach(e => {\n exchangesTemp[e.slug] = exchangesTemp[e.slug] || {markets: {}};\n\n e.markets.forEach( pair => {\n let [ currency, asset ] = pair['pair'];\n exchangesTemp[e.slug].markets[currency] = exchangesTemp[e.slug].markets[currency] || [];\n exchangesTemp[e.slug].markets[currency].push( asset );\n });\n\n if (\"exchangeMaxHistoryAge\" in e) {\n exchangesTemp[e.slug].exchangeMaxHistoryAge = e.exchangeMaxHistoryAge;\n }\n\n exchangesTemp[e.slug].importable = e.providesFullHistory ? true : false;\n exchangesTemp[e.slug].tradable = e.tradable ? true : false;\n exchangesTemp[e.slug].requires = e.requires;\n });\n\n return exchangesTemp;\n}\n\n\nconst init = () => {\n get('apiKeys', (err, resp) => {\n store.commit('syncApiKeys', resp);\n });\n\n get('exchanges', (err, resp) => {\n store.commit('syncExchanges', transformMarkets(resp));\n })\n}\n\nconst sync = () => {\n bus.$on('apiKeys', data => {\n store.commit('syncApiKeys', data.exchanges);\n });\n}\n\nexport default function() {\n init();\n sync();\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport syncImports from './modules/imports/sync'\nimport syncGekkos from './modules/gekkos/sync'\nimport syncNotifications from './modules/notifications/sync'\nimport syncConfig from './modules/config/sync'\n\nexport default function() {\n syncImports();\n syncGekkos();\n syncNotifications();\n syncConfig();\n}","import _ from 'lodash'\nimport Vue from 'vue'\n\nimport { wsPath } from '../../tools/api'\nimport initializeState from '../../store/init'\n\nvar socket = null;\n\nexport const bus = new Vue();\n\nbus.$on('gekko_update', data => console.log(data))\n\nbus.$on('import_update', data => console.log(data))\nbus.$on('import_error', data => {\n alert('IMPORT ERROR: ' + data.error);\n});\n\nconst info = {\n connected: false\n}\n\nexport const connect = () => {\n socket = new ReconnectingWebSocket(wsPath, null, { maxReconnectInterval: 4000 });\n\n setTimeout(() => {\n // in case we cannot connect\n if(!info.connected) {\n initializeState();\n bus.$emit('WS_STATUS_CHANGE', info);\n }\n }, 500);\n\n socket.onopen = () => {\n if(info.connected)\n return;\n\n info.connected = true;\n bus.$emit('WS_STATUS_CHANGE', info);\n initializeState();\n }\n socket.onclose = () => {\n if(!info.connected)\n return;\n\n info.connected = false;\n bus.$emit('WS_STATUS_CHANGE', info);\n }\n socket.onerror = () => {\n if(!info.connected)\n return;\n\n info.connected = false;\n bus.$emit('WS_STATUS_CHANGE', info);\n }\n socket.onmessage = function(message) {\n const payload = JSON.parse(message.data);\n // console.log('ws message:', payload);\n bus.$emit(payload.type, payload);\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain py2\"},[_c('h3',[_vm._v(\"Market watchers\")]),(!_vm.watchers.length)?_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"You don't have any market watchers.\")])]):_vm._e(),(_vm.watchers.length)?_c('table',{staticClass:\"full clickable\"},[_vm._m(0),_c('tbody',_vm._l((_vm.watchers),function(gekko){return _c('tr',{staticClass:\"clickable\",on:{\"click\":function($event){_vm.$router.push({path: (\"/live-gekkos/\" + (gekko.id))})}}},[_c('td',[_vm._v(_vm._s(gekko.config.watch.exchange))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.currency))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.asset))]),_c('td',[_vm._v(_vm._s(_vm.status(gekko)))]),_c('td',[(gekko.events.initial.candle)?[_vm._v(_vm._s(_vm.fmt(gekko.events.initial.candle.start)))]:_vm._e()],2),_c('td',[(gekko.events.latest.candle)?[_vm._v(_vm._s(_vm.fmt(gekko.events.latest.candle.start)))]:_vm._e()],2),_c('td',[(gekko.events.initial.candle && gekko.events.latest.candle)?[_vm._v(_vm._s(_vm.timespan(gekko.events.latest.candle.start, gekko.events.initial.candle.start)))]:_vm._e()],2)])}))]):_vm._e(),_c('h3',[_vm._v(\"Strat runners\")]),(!_vm.stratrunners.length)?_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"You don't have any stratrunners.\")])]):_vm._e(),(_vm.stratrunners.length)?_c('table',{staticClass:\"full\"},[_vm._m(1),_c('tbody',_vm._l((_vm.stratrunners),function(gekko){return _c('tr',{staticClass:\"clickable\",on:{\"click\":function($event){_vm.$router.push({path: (\"/live-gekkos/\" + (gekko.id))})}}},[_c('td',[_vm._v(_vm._s(gekko.config.watch.exchange))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.currency))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.asset))]),_c('td',[_vm._v(_vm._s(_vm.status(gekko)))]),_c('td',[(gekko.events.initial.candle && gekko.events.latest.candle)?[_vm._v(_vm._s(_vm.timespan(gekko.events.latest.candle.start, gekko.events.initial.candle.start)))]:_vm._e()],2),_c('td',[_vm._v(_vm._s(gekko.config.tradingAdvisor.method))]),_c('td',[(!_vm.report(gekko))?[_vm._v(\"0\")]:_vm._e(),(_vm.report(gekko))?[_vm._v(_vm._s(_vm.round(_vm.report(gekko).profit))+\" \"+_vm._s(_vm.report(gekko).currency))]:_vm._e()],2),_c('td',[_vm._v(_vm._s(gekko.logType))]),_c('td',[(!gekko.events.tradeCompleted)?[_vm._v(\"0\")]:_vm._e(),(gekko.events.tradeCompleted)?[_vm._v(_vm._s(gekko.events.tradeCompleted.length))]:_vm._e()],2)])}))]):_vm._e(),_c('div',{staticClass:\"hr\"}),_c('h2',[_vm._v(\"Start a new live Gekko\")]),_c('router-link',{staticClass:\"btn--primary\",attrs:{\"to\":\"/live-gekkos/new\"}},[_vm._v(\"Start a new live Gekko!\")])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"status\")]),_c('th',[_vm._v(\"started at\")]),_c('th',[_vm._v(\"last update\")]),_c('th',[_vm._v(\"duration\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"status\")]),_c('th',[_vm._v(\"duration\")]),_c('th',[_vm._v(\"strategy\")]),_c('th',[_vm._v(\"PnL\")]),_c('th',[_vm._v(\"type\")]),_c('th',[_vm._v(\"trades\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./list.vue?vue&type=template&id=55dd2514&lang=pug\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\nimport style0 from \"./list.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain my2\"},[_c('div',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.intro)}}),_c('div',{staticClass:\"hr\"}),_c('h3',[_vm._v(\"Currently running imports\")]),(_vm.imports.length === 0)?_c('p',[_vm._v(\"You currently don't have any imports running.\")]):_vm._e(),(_vm.imports.length)?_c('ul',_vm._l((_vm.imports),function(_import){return _c('li',[_c('router-link',{attrs:{\"to\":\"/data/importer/import/\" + _import.id}},[_vm._v(_vm._s(_import.watch.exchange)+\":\"+_vm._s(_import.watch.currency)+\"/\"+_vm._s(_import.watch.asset))])],1)})):_vm._e(),_c('div',{staticClass:\"hr\"}),_c('h3',[_vm._v(\"Start a new import\")]),_c('import-config-builder',{on:{\"config\":_vm.updateConfig}}),_c('div',{staticClass:\"hr\"}),_c('div',{staticClass:\"txt--center\"},[_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.run($event)}}},[_vm._v(\"Import\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd contain\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Market\")]),_c('market-picker',{attrs:{\"only-importable\":\"true\"},on:{\"market\":_vm.updateMarketConfig}})],1),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('range-creator',{on:{\"range\":_vm.updateRange}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./importConfigBuilder.vue?vue&type=template&id=a8c578c6&lang=pug\"\nimport script from \"./importConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./importConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./importConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./importer.vue?vue&type=template&id=3e819299&lang=pug\"\nimport script from \"./importer.vue?vue&type=script&lang=js\"\nexport * from \"./importer.vue?vue&type=script&lang=js\"\nimport style0 from \"./importer.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"contain grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\",domProps:{\"innerHTML\":_vm._s(_vm.left)}}),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-3-6 txt--center\"},[_c('img',{attrs:{\"src\":\"static/gekko.jpg\"}}),_c('p',[_c('em',[_vm._v(\"The most valuable commodity I know of is information.\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=2758f780&lang=pug\"\nimport script from \"./home.vue?vue&type=script&lang=js\"\nexport * from \"./home.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"my2\"},[(!_vm.data)?_c('div',{staticClass:\"contain\"},[_c('h1',[_vm._v(\"Unknown Gekko instance\")]),_c('p',[_vm._v(\"Gekko doesn't know what gekko this is...\")])]):_vm._e(),(_vm.data)?_c('div',[_c('h2',{staticClass:\"contain\"},[_vm._v(\"Gekko \"+_vm._s(_vm.type))]),(_vm.isArchived)?_c('div',{staticClass:\"contain brdr--mid-gray p1 bg--orange\"},[_vm._v(\"This is an archived Gekko, it is currently not running anymore.\")]):_vm._e(),(_vm.data.errorMessage)?_c('div',{staticClass:\"contain brdr--mid-gray p1 bg--orange\"},[_vm._v(\"This is Gekko crashed with the following error: \"+_vm._s(_vm.data.errorMessage))]):_vm._e(),_c('div',{staticClass:\"grd contain\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Market\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Exchange\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.config.watch.exchange))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Currency\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.config.watch.currency))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Asset\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.config.watch.asset))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Type\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.type))])])]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Runtime\")]),(_vm.isLoading)?_c('spinner'):_vm._e(),(!_vm.isLoading)?[(_vm.initialEvents.candle)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Watching since\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.initialEvents.candle.start)))])]):_vm._e(),(_vm.latestEvents.candle)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Received data until\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.latestEvents.candle.start)))])]):_vm._e(),(_vm.latestEvents.candle)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Data spanning\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.humanizeDuration(_vm.moment(_vm.latestEvents.candle.start).diff(_vm.moment(_vm.initialEvents.candle.start)))))])]):_vm._e(),(_vm.isStratrunner)?[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Amount of trades\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.trades.length))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Candle size\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.config.tradingAdvisor.candleSize))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"History size\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.config.tradingAdvisor.historySize))])])]:_vm._e()]:_vm._e()],2)]),(_vm.warmupRemaining)?_c('div',{staticClass:\"contain brdr--mid-gray p1 bg--orange\"},[_vm._v(\"This stratrunner is still warming up for the next \"),_c('i',[_vm._v(_vm._s(_vm.warmupRemaining.replace(',', ' and ')))]),_vm._v(\", it will not trade until it is warmed up.\")]):_vm._e(),(_vm.isStratrunner)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Strategy\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Name\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('strong',[_vm._v(_vm._s(_vm.stratName))])])]),_vm._v(\"Parameters\"),_c('pre',[_vm._v(_vm._s(_vm.stratParams))])]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Profit report\")]),(!_vm.report)?[_c('p',[(_vm.isArchived)?_c('em',[_vm._v(\"This Gekko never executed a trade..\")]):_vm._e(),(!_vm.isArchived)?_c('em',[_vm._v(\"Waiting for at least one trade..\")]):_vm._e()])]:_vm._e(),(_vm.report)?[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Start balance\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.startBalance)))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Current balance\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.balance)))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Market\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.market / 100 * _vm.report.startPrice))+\" \"+_vm._s(_vm.config.watch.currency)+\" (\"+_vm._s(_vm.round(_vm.report.market))+\" %)\")])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Profit\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.profit))+\" \"+_vm._s(_vm.config.watch.currency)+\" (\"+_vm._s(_vm.round(_vm.report.relativeProfit))+\" %)\")])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Alpha\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.alpha))+\" \"+_vm._s(_vm.config.watch.currency))])])]:_vm._e()],2)]):_vm._e(),(_vm.isStratrunner && !_vm.watcher && !_vm.isArchived)?_c('p',[_vm._v(\"WARNING: stale gekko, not attached to a watcher, please report \"),_c('a',{attrs:{\"href\":\"https://github.com/askmike/gekko/issues\"}},[_vm._v(\"here\")]),_vm._v(\".\")]):_vm._e(),(!_vm.isArchived)?_c('p',[_c('a',{staticClass:\"w100--s my1 btn--red\",on:{\"click\":_vm.stopGekko}},[_vm._v(\"Stop Gekko\")])]):_vm._e(),(_vm.isArchived)?_c('p',[_c('a',{staticClass:\"w100--s my1 btn--red\",on:{\"click\":_vm.deleteGekko}},[_vm._v(\"Delete Gekko\")])]):_vm._e(),(_vm.isStratrunner && _vm.watcher && !_vm.isArchived)?_c('p',[_c('em',[_vm._v(\"This gekko gets market data from \"),_c('router-link',{attrs:{\"to\":\"/live-gekkos/\" + _vm.watcher.id}},[_vm._v(\"this market watcher\")])],1),_vm._v(\".\")]):_vm._e()]),(!_vm.isLoading)?[_c('h3',{staticClass:\"contain\"},[_vm._v(\"Market graph\")]),(_vm.candleFetch === \"fetching\")?_c('spinner'):_vm._e(),(_vm.candleFetch === \"fetched\")?[_c('chart',{attrs:{\"data\":_vm.chartData,\"height\":300}})]:_vm._e(),(_vm.isStratrunner)?_c('roundtrips',{attrs:{\"roundtrips\":_vm.roundtrips}}):_vm._e()]:_vm._e()],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./singleGekko.vue?vue&type=template&id=5ce0f611&lang=pug\"\nimport script from \"./singleGekko.vue?vue&type=script&lang=js\"\nexport * from \"./singleGekko.vue?vue&type=script&lang=js\"\nimport style0 from \"./singleGekko.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=style&index=0&lang=css\"","// global window.CONFIG\n\nconst config = window.CONFIG.ui;\nconst endpoint = `${config.host}${config.port === 80 ? '' : `:${config.port}`}${config.path}`;\n\nlet basePath, restPath, wsPath;\n\n// rest API path\nif(config.ssl) {\n basePath = `https://${endpoint}`;\n} else {\n basePath = `http://${endpoint}`;\n}\n\nrestPath = basePath + 'api/';\n\n// ws API path\nif(config.ssl) {\n wsPath = `wss://${endpoint}api`;\n} else {\n wsPath = `ws://${endpoint}api`;\n}\n\nexport {\n wsPath,\n restPath,\n basePath\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"px1\"},[_c('h3',[_vm._v(\"Paper trader\")]),(_vm.toggle === \"closed\")?_c('a',{staticClass:\"btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.switchToggle($event)}}},[_vm._v(\"Change paper trader settings\")]):_vm._e(),(_vm.toggle === \"open\")?[_c('p',[_vm._v(\"Settings:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rawPaperTraderParams),expression:\"rawPaperTraderParams\"}],staticClass:\"params\",domProps:{\"value\":(_vm.rawPaperTraderParams)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.rawPaperTraderParams=$event.target.value}}}),(_vm.rawPaperTraderParamsError)?_c('p',{staticClass:\"bg--red p1\"},[_vm._v(_vm._s(_vm.rawPaperTraderParamsError.message))]):_vm._e()]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./papertrader.vue?vue&type=template&id=6a733e04&lang=pug\"\nimport script from \"./papertrader.vue?vue&type=script&lang=js\"\nexport * from \"./papertrader.vue?vue&type=script&lang=js\"\nimport style0 from \"./papertrader.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { post } from '../../../tools/ajax'\n\nvar mixin = {\n data: () => {\n return {\n datasets: [],\n datasetScanstate: 'idle',\n unscannableMakets: []\n } \n },\n methods: {\n scan: function() {\n this.datasetScanstate = 'scanning';\n\n post('scansets', {}, (error, response) => {\n this.datasetScanstate = 'scanned';\n\n this.unscannableMakets = response.errors;\n\n let sets = [];\n\n response.datasets.forEach(market => {\n market.ranges.forEach((range, i) => {\n sets.push({\n exchange: market.exchange,\n currency: market.currency,\n asset: market.asset,\n from: moment.unix(range.from).utc(),\n to: moment.unix(range.to).utc(),\n id: market.exchange + market.asset + market.currency + i\n });\n });\n });\n\n // for now, filter out sets smaller than 3 hours..\n sets = sets.filter(set => {\n if(set.to.diff(set.from, 'hours') > 2)\n return true;\n });\n\n sets = sets.sort((a, b) => {\n let adiff = a.to.diff(a.from);\n let bdiff = b.to.diff(b.from);\n\n if(adiff < bdiff)\n return -1;\n\n if(adiff > bdiff)\n return 1;\n\n return 0;\n }).reverse();\n\n this.datasets = sets;\n })\n }\n }\n}\n\nexport default mixin;","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain roundtrips\"},[_c('h2',[_vm._v(\"Roundtrips\")]),(_vm.roundtrips.length)?_c('table',[_c('thead',[_vm._m(0),_vm._l((_vm.roundtrips),function(rt){return _c('tr',[_c('td',[_vm._v(_vm._s(_vm.fmt(rt.entryAt)))]),_c('td',[_vm._v(_vm._s(_vm.fmt(rt.exitAt)))]),_c('td',[_vm._v(_vm._s(_vm.diff(rt.duration)))]),_c('td',[_vm._v(_vm._s(_vm.round(rt.entryBalance)))]),_c('td',[_vm._v(_vm._s(_vm.round(rt.exitBalance)))]),(Math.sign(rt.pnl)===-1)?[_c('td',{staticClass:\"loss\"},[_vm._v(_vm._s(Math.sign(rt.pnl)*rt.pnl.toFixed(2)))]),_c('td',{staticClass:\"loss\"},[_vm._v(_vm._s(rt.profit.toFixed(2))+\"%\")])]:[_c('td',{staticClass:\"profit\"},[_vm._v(_vm._s(rt.pnl.toFixed(2)))]),_c('td',{staticClass:\"profit\"},[_vm._v(_vm._s(rt.profit.toFixed(2))+\"%\")])]],2)})],2)]):_vm._e(),(!_vm.roundtrips.length)?_c('div',[_c('p',[_vm._v(\"Not enough data to display\")])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('th',[_vm._v(\"Entry at (UTC)\")]),_c('th',[_vm._v(\"Exit at (UTC)\")]),_c('th',[_vm._v(\"Exposure\")]),_c('th',[_vm._v(\"Entry balance\")]),_c('th',[_vm._v(\"Exit balance\")]),_c('th',[_vm._v(\"P&L\")]),_c('th',[_vm._v(\"Profit\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./roundtripTable.vue?vue&type=template&id=3c32021a&lang=pug\"\nimport script from \"./roundtripTable.vue?vue&type=script&lang=js\"\nexport * from \"./roundtripTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./roundtripTable.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=style&index=0&lang=css\"","import superagent from 'superagent'\nimport noCache from 'superagent-no-cache'\nimport { restPath } from './api.js'\n\nconst processResponse = next => (err, res) => {\n if(err)\n return next(err);\n\n if(!res.text)\n return next('no data');\n\n let data = JSON.parse(res.text);\n\n next(false, data);\n}\n\nexport const post = (to, data, next) => {\n superagent\n .post(restPath + to)\n .use(noCache)\n .send(data)\n .end(processResponse(next));\n}\n\nexport const get = (to, next) => {\n superagent\n .get(restPath + to)\n .use(noCache)\n .end(processResponse(next));\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=style&index=0&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/web/vue/dist/app.bd655fc0.js b/web/vue/dist/app.bd655fc0.js deleted file mode 100644 index e76399540..000000000 --- a/web/vue/dist/app.bd655fc0.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(t){function e(e){for(var n,s,o=e[0],c=e[1],u=e[2],d=0,f=[];d0?"profit":"loss"}}},s=i,o=(a("tr8z"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},"0zrD":function(t,e,a){"use strict";var n=a("jf14"),r=a.n(n);r.a},26:function(t,e,a){t.exports=a("Vtdi")},"2A8w":function(t,e,a){"use strict";var n=a("TDb6"),r=a.n(n);r.a},"2Yda":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain my2"},[a("h3",[t._v("Start a new gekko")]),a("gekko-config-builder",{on:{config:t.updateConfig}}),a("div",{staticClass:"hr"}),t.config.valid?a("div",{staticClass:"txt--center"},[t.pendingStratrunner?t._e():a("a",{staticClass:"w100--s my1 btn--primary",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.start(e)}}},[t._v("Start")]),t.pendingStratrunner?a("spinner"):t._e()],1):t._e()],1)},r=[],i=(a("Z2Ku"),a("L9s1"),a("dRSK"),a("LvDl")),s=a.n(i),o=a("Kw5r"),c=a("wiDz"),u=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd contain"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("h3",[t._v("Market")]),a("market-picker",{attrs:{"only-tradable":t.isTradebot},on:{market:t.updateMarketConfig}})],1),a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("type-picker",{on:{type:t.updateType}})],1)]),"market watcher"!==t.type?[a("div",{staticClass:"hr"}),a("strat-picker",{staticClass:"contain my2",on:{stratConfig:t.updateStrat}}),"paper trader"===t.type?a("div",{staticClass:"hr"}):t._e(),"paper trader"===t.type?a("paper-trader",{on:{settings:t.updatePaperTrader}}):t._e()]:t._e()],2)},l=[],d=(a("91GP"),a("6BxS")),f=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("h3",[t._v("Type")]),[a("label",{staticClass:"wrapper",attrs:{for:"type"}},[t._v("What do you want to do with gekko?")]),a("form",{staticClass:"radio grd"},t._l(t.types,function(e,n){return a("div",{staticClass:"grd-row m1"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.selectedTypeIndex,expression:"selectedTypeIndex"}],staticClass:"grd-row-col-1-6",attrs:{type:"radio"},domProps:{value:n,checked:t._q(t.selectedTypeIndex,n)},on:{change:function(e){t.selectedTypeIndex=n}}}),a("label",{staticClass:"grd-row-col-5-6",attrs:{for:n}},[t._v(t._s(e))])])}))]],2)},h=[],m={created:function(){this.emitType()},data:function(){return{types:["paper trader","market watcher","tradebot"],selectedTypeIndex:0}},methods:{emitType:function(){this.$emit("type",this.type)}},watch:{type:function(){this.emitType()}},computed:{type:function(){return this.types[this.selectedTypeIndex]}}},v=m,p=(a("wVPO"),a("KHd+")),g=Object(p["a"])(v,f,h,!1,null,null,null),_=g.exports,k=a("6Wkr"),y=a("rloZ"),w={created:function(){var t=this;Object(c["a"])("configPart/candleWriter",function(e,a){t.candleWriter=toml.parse(a.part)}),Object(c["a"])("configPart/performanceAnalyzer",function(e,a){t.performanceAnalyzer=toml.parse(a.part),t.performanceAnalyzer.enabled=!0})},data:function(){return{market:{},range:{},type:"",strat:{},paperTrader:{},candleWriter:{},performanceAnalyzer:{}}},components:{marketPicker:d["a"],typePicker:_,stratPicker:k["a"],paperTrader:y["a"]},computed:{isTradebot:function(){return"tradebot"===this.type},config:function(){var t={};return Object.assign(t,this.market,this.strat,{paperTrader:this.paperTrader},{candleWriter:this.candleWriter},{type:this.type},{performanceAnalyzer:this.performanceAnalyzer}),this.isTradebot&&(delete t.paperTrader,t.trader={enabled:!0}),t.valid=this.validConfig(t),t}},methods:{validConfig:function(t){if("market watcher"===t.type)return!0;if(!t.tradingAdvisor)return!1;if(s.a.isNaN(t.tradingAdvisor.candleSize))return!1;if(0==t.tradingAdvisor.candleSize)return!1;var e=t.tradingAdvisor.method;return!s.a.isEmpty(t[e])},updateMarketConfig:function(t){this.market=t,this.emitConfig()},updateType:function(t){this.type=t,this.emitConfig()},updateStrat:function(t){this.strat=t,this.emitConfig()},updatePaperTrader:function(t){this.paperTrader=t,this.paperTrader.enabled=!0,this.emitConfig()},emitConfig:function(){this.$emit("config",this.config)}}},b=w,C=(a("YEdZ"),Object(p["a"])(b,u,l,!1,null,null,null)),x=C.exports,S=a("MB/c"),T={components:{gekkoConfigBuilder:x,spinner:S["a"]},data:function(){return{pendingStratrunner:!1,config:{}}},computed:{gekkos:function(){return this.$store.state.gekkos},watchConfig:function(){var t=s.a.pick(this.config,"watch","candleWriter"),e=o["a"].util.extend({},t);return e.type="market watcher",e.mode="realtime",e},requiredHistoricalData:function(){if(this.config.tradingAdvisor&&this.config.valid){var t=this.config.tradingAdvisor;return t.candleSize*t.historySize}},gekkoConfig:function(){var t;if(this.existingMarketWatcher){if(this.requiredHistoricalData){var e=moment().utc().startOf("minute").subtract(this.requiredHistoricalData,"minutes").unix(),a=moment.utc(this.existingMarketWatcher.events.initial.candle.start).unix();t=moment.unix(Math.max(e,a)).utc().format()}else t=moment().utc().startOf("minute").format();var n=o["a"].util.extend({market:{type:"leech",from:t},mode:"realtime"},this.config);return n}},existingMarketWatcher:function(){var t=o["a"].util.extend({},this.watchConfig.watch);return s.a.find(this.gekkos,{config:{watch:t}})},exchange:function(){return this.watchConfig.watch.exchange},existingTradebot:function(){var t=this;return s.a.find(this.gekkos,function(e){return"tradebot"===e.logType&&e.config.watch.exchange===t.exchange})},availableApiKeys:function(){return this.$store.state.apiKeys}},watch:{existingMarketWatcher:function(t,e){var a=this;if(this.pendingStratrunner){var n=this.existingMarketWatcher;n.events.latest.candle&&(this.pendingStratrunner=!1,this.startGekko(function(t,e){a.$router.push({path:"/live-gekkos/".concat(e.id)})}))}}},methods:{updateConfig:function(t){this.config=t},start:function(){var t=this;if("tradebot"===this.config.type){if(this.existingTradebot){var e="You already have a tradebot running on this exchange";return e+=", you can only run one tradebot per exchange.",alert(e)}if(!this.availableApiKeys.includes(this.exchange))return alert("Please first configure API keys for this exchange in the config page.")}"market watcher"===this.config.type?this.existingMarketWatcher?(alert("This market is already being watched, redirecting you now..."),this.$router.push({path:"/live-gekkos/".concat(this.existingMarketWatcher.id)})):this.startWatcher(function(e,a){t.$router.push({path:"/live-gekkos/".concat(a.id)})}):this.existingMarketWatcher?this.startGekko(this.routeToGekko):this.startWatcher(function(e,a){t.pendingStratrunner=a.id})},routeToGekko:function(t,e){if(t||e.error)return console.error(t,e.error);this.$router.push({path:"/live-gekkos/".concat(e.id)})},startWatcher:function(t){Object(c["b"])("startGekko",this.watchConfig,t)},startGekko:function(t){Object(c["b"])("startGekko",this.gekkoConfig,t)}}},E=T,P=(a("2A8w"),Object(p["a"])(E,n,r,!1,null,null,null));e["a"]=P.exports},"2rY9":function(t,e,a){"use strict";var n=a("SWS5"),r=a.n(n);r.a},"5/bm":function(t,e,a){},"5shn":function(t,e,a){"use strict";var n=a("DlQD"),r=new n.Renderer;r.link=function(t,e,a){var n,r,i;return n=/^https?:\/\/.+$/.test(t),r=n||"newWindow"===e,i='"+a+""},n.setOptions({renderer:r}),e["a"]=n},"6BxS":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{staticClass:"mx1"},[a("label",{staticClass:"wrapper",attrs:{for:"exchange"}},[t._v("Exchange:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.exchange,expression:"exchange"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.exchange=e.target.multiple?a:a[0]}}},t._l(t.exchanges,function(e,n){return a("option",[t._v(t._s(n))])}))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("label",{attrs:{for:"currency"}},[t._v("Currency:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.currency,expression:"currency"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.currency=e.target.multiple?a:a[0]}}},t._l(t.currencies,function(e){return a("option",[t._v(t._s(e))])}))])]),a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("label",{attrs:{for:"asset"}},[t._v("Asset:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.asset,expression:"asset"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.asset=e.target.multiple?a:a[0]}}},t._l(t.assets,function(e){return a("option",[t._v(t._s(e))])}))])])])])},r=[],i=(a("rGqo"),a("yt8O"),a("f3/d"),a("91GP"),a("LvDl")),s=a.n(i),o=(a("YIjs"),a("FhOJ"),a("wiDz"),{props:["onlyTradable","onlyImportable"],data:function(){return{exchange:"poloniex",currency:"USDT",asset:"BTC"}},created:function(){this.emitConfig()},computed:{exchanges:function(){var t=Object.assign({},this.$store.state.exchanges);return!s.a.isEmpty(t)&&(this.onlyTradable&&s.a.each(t,function(e,a){e.tradable||delete t[a]}),this.onlyImportable&&s.a.each(t,function(e,a){e.importable||delete t[a]}),t)},markets:function(){return this.exchanges?this.exchanges[this.exchange]:null},assets:function(){return this.exchanges?this.exchanges[this.exchange].markets[this.currency]:null},currencies:function(){return this.exchanges?s.a.keys(this.exchanges[this.exchange].markets):null},watchConfig:function(){return{watch:{exchange:this.exchange,currency:this.currency,asset:this.asset}}}},watch:{currency:function(){this.emitConfig()},asset:function(){this.emitConfig()},market:function(){this.emitConfig()},exchanges:function(){this.emitConfig()},exchange:function(){this.emitConfig()}},methods:{emitConfig:function(){this.$emit("market",this.watchConfig)}}}),c=o,u=a("KHd+"),l=Object(u["a"])(c,n,r,!1,null,null,null);e["a"]=l.exports},"6Wkr":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 px1"},[a("h3",[t._v("Strategy")]),a("div",[a("label",{staticClass:"wrapper",attrs:{for:"strat"}},[t._v("Strategy:")]),a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.strategy,expression:"strategy"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.strategy=e.target.multiple?a:a[0]}}},t._l(t.strategies,function(e){return a("option",[t._v(t._s(e.name))])}))])]),a("div",[a("label",{attrs:{for:"candleSize"}},[t._v("Candle Size")]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.rawCandleSize,expression:"rawCandleSize"}],domProps:{value:t.rawCandleSize},on:{input:function(e){e.target.composing||(t.rawCandleSize=e.target.value)}}})]),a("div",{staticClass:"grd-row-col-3-6 align"},[a("div",{staticClass:"custom-select button"},[a("select",{directives:[{name:"model",rawName:"v-model",value:t.candleSizeUnit,expression:"candleSizeUnit"}],on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){var e="_value"in t?t._value:t.value;return e});t.candleSizeUnit=e.target.multiple?a:a[0]}}},[a("option",[t._v("minutes")]),a("option",[t._v("hours")]),a("option",[t._v("days")])])])])])]),a("div",[a("label",{attrs:{for:"historySize"}},[t._v("Warmup period (in "+t._s(t.rawCandleSize)+" "+t._s(t.singularCandleSizeUnit)+" candles):")]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.historySize,expression:"historySize"}],domProps:{value:t.historySize},on:{input:function(e){e.target.composing||(t.historySize=e.target.value)}}}),a("em",{staticClass:"label-like"},[t._v("(will use "+t._s(t.humanizeDuration(t.candleSize*t.historySize*1e3*60))+" of data as history)")])])]),a("div",{staticClass:"grd-row-col-3-6 px1"},[a("div",[a("h3",[t._v("Parameters")]),a("p",[t._v(t._s(t.strategy)+" Parameters:")]),a("textarea",{directives:[{name:"model",rawName:"v-model",value:t.rawStratParams,expression:"rawStratParams"}],staticClass:"params",domProps:{value:t.rawStratParams},on:{input:function(e){e.target.composing||(t.rawStratParams=e.target.value)}}}),t.rawStratParamsError?a("p",{staticClass:"bg--red p1"},[t._v(t._s(t.rawStratParamsError.message))]):t._e()])])])])},r=[],i=(a("dRSK"),a("LvDl")),s=a.n(i),o=a("wiDz"),c={data:function(){return{strategies:[],candleSizeUnit:"hours",rawCandleSize:1,strategy:"MACD",historySize:10,rawStratParams:"",rawStratParamsError:!1,emptyStrat:!1,stratParams:{}}},created:function(){var t=this;Object(o["a"])("strategies",function(e,a){t.strategies=a,s.a.each(t.strategies,function(t){t.empty=""===t.params}),t.rawStratParams=s.a.find(t.strategies,{name:t.strategy}).params,t.emptyStrat=s.a.find(t.strategies,{name:t.strategy}).empty,t.emitConfig()})},watch:{strategy:function(t){t=s.a.find(this.strategies,{name:t}),this.rawStratParams=t.params,this.emptyStrat=t.empty,this.emitConfig()},candleSize:function(){this.emitConfig()},historySize:function(){this.emitConfig()},rawStratParams:function(){this.emitConfig()}},computed:{candleSize:function(){return"minutes"===this.candleSizeUnit?this.rawCandleSize:"hours"===this.candleSizeUnit?60*this.rawCandleSize:"days"===this.candleSizeUnit?60*this.rawCandleSize*24:void 0},singularCandleSizeUnit:function(){return this.candleSizeUnit.slice(0,-1)},config:function(){var t={tradingAdvisor:{enabled:!0,method:this.strategy,candleSize:+this.candleSize,historySize:+this.historySize}};return this.emptyStrat?t[this.strategy]={__empty:!0}:t[this.strategy]=this.stratParams,t}},methods:{humanizeDuration:function(t){return window.humanizeDuration(t)},emitConfig:function(){this.parseParams(),this.$emit("stratConfig",this.config)},parseParams:function(){try{this.stratParams=toml.parse(this.rawStratParams),this.rawStratParamsError=!1}catch(t){this.rawStratParamsError=t,this.stratParams={}}}}},u=c,l=(a("tr8f"),a("KHd+")),d=Object(l["a"])(u,n,r,!1,null,null,null);e["a"]=d.exports},"7LpK":function(t,e,a){},"8KAT":function(t,e,a){},"9RND":function(t){t.exports={name:"gekko",version:"0.6.3",description:"A bitcoin trading bot for auto trading at various exchanges",keywords:["trading","bot","bitcoin","TA","finance"],scripts:{test:"./node_modules/.bin/mocha test/*.js --recursive test -u tdd --reporter spec",start:"node ./gekko --config config.js --ui"},author:"Mike van Rossum ",dependencies:{"@slack/client":"^3.10.0",async:"2.1.2",bitx:"^1.5.0","co-fs":"^1.2.0",commander:"^2.13.0",gekko:"0.0.9","humanize-duration":"^3.10.0",koa:"^1.2.0","koa-bodyparser":"^2.2.0","koa-cors":"0.0.16","koa-logger":"^1.3.0","koa-router":"^5.4.0","koa-static":"^2.0.0",lodash:"2.x",moment:"^2.20.1",opn:"^4.0.2","promisify-node":"^0.5.0","prompt-lite":"0.1.1",pushbullet:"1.4.3",relieve:"^2.1.3",retry:"^0.10.1",semver:"5.4.1",sqlite3:"^4.0.0","stats-lite":"^2.0.4","tiny-promisify":"^0.1.1",toml:"^2.3.0",twitter:"^1.7.1"},devDependencies:{chai:"^4.1.2",mocha:"^5.0.0",proxyquire:"^1.7.10",request:"^2.83.0","request-promise":"^4.2.2",sinon:"^4.2.0"},engines:{node:">=8.11.2"},license:"MIT",repository:{type:"git",url:"https://github.com/askmike/gekko.git"}}},CyGp:function(t,e,a){"use strict";var n=a("jTvs"),r=a.n(n);r.a},EAJ1:function(t,e,a){},EDI0:function(t,e,a){},EfWa:function(t,e,a){},FhOJ:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("h3",[t._v("Daterange")]),a("div",[a("label",{attrs:{for:"from"}},[t._v("From")]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.from,expression:"from"}],domProps:{value:t.from},on:{input:function(e){e.target.composing||(t.from=e.target.value)}}})]),a("div",[a("label",{attrs:{for:"to"}},[t._v("To")]),a("input",{directives:[{name:"model",rawName:"v-model",value:t.to,expression:"to"}],domProps:{value:t.to},on:{input:function(e){e.target.composing||(t.to=e.target.value)}}})])])},r=[],i=(a("LvDl"),a("wiDz"),{data:function(){return{from:"",to:""}},created:function(){var t=moment().startOf("minute"),e=t.clone().subtract(3,"months");this.to=this.fmt(t),this.from=this.fmt(e),this.emitRange()},methods:{fmtTs:function(t){return moment.unix(t).utc()},fmt:function(t){return t.utc().format("YYYY-MM-DD HH:mm")},emitRange:function(){this.$emit("range",{from:this.fmtTs(this.from),to:this.fmtTs(this.to)})},emitManualEntry:function(){if(this.from.length<"4"||this.from.length<"4")return this.$emit("range",{});var t=moment.utc(this.from),e=moment.utc(this.to);t.isValid()&&e.isValid()?this.$emit("range",{from:this.fmt(t),to:this.fmt(e)}):this.$emit("range",{})}},watch:{from:function(){this.emitManualEntry()},to:function(){this.emitManualEntry()},config:function(){this.scanned=!1},tab:function(){this.scanned=!1,this.$emit("range",{})},selectedRangeIndex:function(){var t=this.ranges[this.selectedRangeIndex];t&&this.emitRange(t)}}}),s=i,o=(a("TPp/"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},"H+ir":function(t,e,a){"use strict";var n=a("5/bm"),r=a.n(n);r.a},Kd0R:function(t,e,a){},"MB/c":function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"spinner"},[a("div",{staticClass:"rect1"}),a("div",{staticClass:"rect2"}),a("div",{staticClass:"rect3"}),a("div",{staticClass:"rect4"})])}],i={},s=i,o=(a("q431"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},Pf3K:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app"}},[a("top"),a("div",{staticClass:"fill"},[a("router-view",{staticClass:"view"})],1),a("bottom"),a("modal")],1)},r=[],i=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{attrs:{id:"top"}}),t._m(0),a("nav",{staticClass:"bg--light-gray"},[a("div",{staticClass:"menu contain"},[a("router-link",{staticClass:"py1",attrs:{to:"/home"}},[t._v("Home")]),a("router-link",{staticClass:"py1",attrs:{to:"/live-gekkos"}},[t._v("Live Gekkos")]),a("router-link",{staticClass:"py1",attrs:{to:"/backtest"}},[t._v("Backtest")]),a("router-link",{staticClass:"py1",attrs:{to:"/data"}},[t._v("Local data")]),a("router-link",{staticClass:"py1",attrs:{to:"/config"}},[t._v("Config")]),a("a",{staticClass:"py1",attrs:{href:"https://gekko.wizb.it/docs/introduction/about_gekko.html",target:"_blank"}},[t._v("Documentation")])],1)])])},s=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("header",{staticClass:"bg--off-white grd"},[a("div",{staticClass:"contain grd-row"},[a("h3",{staticClass:"py1 px2 col-2"},[t._v("Gekko UI")])])])}],o={},c=o,u=(a("uMTv"),a("KHd+")),l=Object(u["a"])(c,i,s,!1,null,null,null),d=l.exports,f=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("footer",{staticClass:"p2 bg--off-white"},[a("div",{staticClass:"contain"},[t._m(0),a("p",[t._v("Using Gekko v"+t._s(t.version.gekko)+" and Gekko UI v"+t._s(t.version.ui)+".")])])])},h=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("p",[a("em",[t._v("Use Gekko at your own risk.")])])}],m=a("9RND"),v=a("kiQV"),p={data:function(){return{version:{gekko:m.version,ui:v.version}}}},g=p,_=Object(u["a"])(g,f,h,!1,null,null,null),k=_.exports,y=function(){var t=this,e=t.$createElement,a=t._self._c||e;return t.active?a("div",[a("div",{attrs:{id:"modal-background"}}),a("div",{staticClass:"modal",attrs:{id:"modal"}},[a("div",{staticClass:"modal-guts",domProps:{innerHTML:t._s(t.content)}})])]):t._e()},w=[],b=a("5shn"),C={disconnected:Object(b["a"])("\n\n## Disconnected\n\nSomething happened to either Gekko or the connection.\nPlease check the terminal where Gekko is running or\nyour network connection.\n\n*This message is shown when the UI is unable to open a websocket connection with the Gekko Server.*\n\n ")},x={computed:{active:function(){return!this.$store.state.warnings.connected},content:function(){return this.$store.state.warnings.connected?"":C.disconnected}}},S=x,T=(a("TfKe"),Object(u["a"])(S,y,w,!1,null,null,null)),E=T.exports,P={name:"app",components:{top:d,bottom:k,modal:E}},A=P,D=(a("ZL7j"),Object(u["a"])(A,n,r,!1,null,null,null));e["a"]=D.exports},Q2AE:function(t,e,a){"use strict";var n={};a.r(n),a.d(n,"addImport",function(){return d}),a.d(n,"syncImports",function(){return f}),a.d(n,"updateImport",function(){return h});var r={};a.r(r),a.d(r,"syncGekkos",function(){return g}),a.d(r,"addGekko",function(){return _}),a.d(r,"updateGekko",function(){return k}),a.d(r,"archiveGekko",function(){return y}),a.d(r,"errorGekko",function(){return w}),a.d(r,"deleteGekko",function(){return b});var i={};a.r(i),a.d(i,"setGlobalWarning",function(){return C});var s={};a.r(s),a.d(s,"syncApiKeys",function(){return x}),a.d(s,"syncExchanges",function(){return S});a("VRzm");var o=a("Kw5r"),c=a("L2JU"),u=a("LvDl"),l=a.n(u),d=(a("INYr"),function(t,e){return t.imports.push(e),t}),f=function(t,e){return t.imports=e,t},h=function(t,e){var a=t.imports.findIndex(function(t){return t.id===e.import_id}),n=t.imports[a];if(!n)return t;var r=o["a"].util.extend(n,e.updates);return o["a"].set(t.imports,a,r),t},m=a("oyJW"),v=a("yT7P"),p=a("c7Wa"),g=function(t,e){return e?(t.gekkos=e.live,t.archivedGekkos=e.archive,t):t},_=function(t,e){return t.gekkos=Object(v["a"])({},t.gekkos,Object(m["a"])({},e.id,e)),t},k=function(t,e){return e.id&&l.a.has(t.gekkos,e.id)?(t.gekkos=Object(v["a"])({},t.gekkos,Object(m["a"])({},e.id,p(t.gekkos[e.id],e.event))),t):console.error("cannot update unknown gekko..")},y=function(t,e){return l.a.has(t.gekkos,e)?(t.archivedGekkos=Object(v["a"])({},t.archivedGekkos,Object(m["a"])({},e,Object(v["a"])({},t.gekkos[e],{stopped:!0,active:!1}))),t.gekkos=l.a.omit(t.gekkos,e),t):console.error("cannot archive unknown gekko..")},w=function(t,e){return l.a.has(t.gekkos,e.id)?(t.gekkos=Object(v["a"])({},t.gekkos,Object(m["a"])({},e.id,Object(v["a"])({},t.gekkos[e.id],{errored:!0,errorMessage:e.error}))),t):console.error("cannot error unknown gekko..")},b=function(t,e){return l.a.has(t.archivedGekkos,e)?(t.archivedGekkos=l.a.omit(t.archivedGekkos,e),t):console.error("cannot delete unknown gekko..")},C=function(t,e){return t.warnings[e.key]=e.value,t},x=function(t,e){return o["a"].set(t,"apiKeys",e),t},S=function(t,e){return o["a"].set(t,"exchanges",e),t};o["a"].use(c["a"]);var T=!1,E={};l.a.merge(E,n),l.a.merge(E,r),l.a.merge(E,i),l.a.merge(E,s);e["a"]=new c["a"].Store({state:{warnings:{connected:!0},imports:[],gekkos:{},archivedGekkos:{},connection:{disconnected:!1,reconnected:!1},apiKeys:[],exchanges:{}},mutations:E,strict:T})},Q6eY:function(t,e,a){"use strict";var n=a("SDwi"),r=a.n(n);r.a},SDwi:function(t,e,a){},SWS5:function(t,e,a){},T0Mt:function(t,e,a){"use strict";var n=a("pd3X"),r=a.n(n);r.a},TDb6:function(t,e,a){},"TPp/":function(t,e,a){"use strict";var n=a("7LpK"),r=a.n(n);r.a},TfKe:function(t,e,a){"use strict";var n=a("ZpQ2"),r=a.n(n);r.a},UeuA:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{class:{clickable:!t.isClicked},attrs:{id:"chartWrapper"}},[a("div",{staticClass:"shield",on:{click:function(e){return e.preventDefault(),t.click(e)}}}),a("svg",{attrs:{id:"chart",width:"960",height:t.height}})])},r=[],i=a("k5N+"),s=a("LvDl"),o=a.n(s),c=function(t,e,a){var n=e.map(function(t){return{price:t.price,date:moment.utc(t.date).toDate(),action:t.action}}),r=t.map(function(t){return{price:t.open,date:moment.utc(t.start).toDate()}}),s=r.map(function(t){return+t.date}),c=r.map(function(t){return+t.price}),u=d3.select("#chart");u.attr("width",window.innerWidth-20);var l={top:20,right:20,bottom:110,left:40},d=a-l.top-l.bottom,f={top:a-70,right:20,bottom:30,left:40},h=+u.attr("width")-l.left-l.right,m=a-f.top-f.bottom,v=d3.scaleUtc().range([0,h]),p=d3.scaleUtc().range([0,h]),g=d3.scaleLinear().range([d,0]),_=d3.scaleLinear().range([m,0]),k=d3.axisBottom(v),y=d3.axisBottom(p),w=d3.axisLeft(g).ticks(a/50),b=d3.brushX().extent([[0,0],[h,m]]).on("brush end",A),C=d3.zoom().scaleExtent([1,100]).translateExtent([[0,0],[h,d]]).extent([[0,0],[h,d]]).on("zoom",z),x=d3.line().x(function(t){return v(t.date)}).y(function(t){return g(t.price)}),S=d3.line().x(function(t){return p(t.date)}).y(function(t){return _(t.price)});u.append("defs").append("clipPath").attr("id","clip").append("rect").attr("width",h).attr("height",d);var T=u.append("g").attr("class","focus").attr("transform","translate("+l.left+","+l.top+")"),E=u.append("g").attr("class","context").attr("transform","translate("+f.left+","+f.top+")");v.domain(d3.extent(r,function(t){return t.date})),g.domain([.99*d3.min(c),1.01*d3.max(c)]),p.domain(v.domain()),_.domain(g.domain()),T.append("path").datum(r).attr("class","line price").attr("d",x),T.append("g").attr("class","axis axis--x").attr("transform","translate(0,"+d+")").call(k),T.append("g").attr("class","axis axis--y").call(w),E.append("path").datum(r).attr("class","line").attr("d",S),E.append("g").attr("class","axis axis--x").attr("transform","translate(0,"+m+")").call(y);var P=u.append("g").attr("transform","translate("+l.left+","+l.top+")").selectAll("circle").data(n).enter().append("circle").attr("class",function(t){return t.action}).attr("cx",function(t){return v(t.date)}).attr("cy",function(t){return g(t.price)}).attr("r",5);E.append("g").selectAll("circle").data(n).enter().append("circle").attr("class",function(t){return t.action}).attr("cx",function(t){return p(t.date)}).attr("cy",function(t){return _(t.price)}).attr("r",3);function A(){if(!d3.event.sourceEvent||"zoom"!==d3.event.sourceEvent.type){var t=d3.event.selection||p.range();v.domain(t.map(p.invert,p)),D(v.domain()),u.select(".axis--y").call(w),P.attr("cx",function(t){return v(t.date)}).attr("cy",function(t){return g(t.price)}),T.select(".line").attr("d",x),T.select(".axis--x").call(k),u.select(".zoom").call(C.transform,d3.zoomIdentity.scale(h/(t[1]-t[0])).translate(-t[0],0))}}function D(t){var e=Object(i["a"])(t,2),a=e[0],n=e[1],r=o.a.sortedIndex(s,a),u=o.a.sortedIndex(s,n),l=c.slice(r,u);g.domain([.9995*d3.min(l),1.0005*d3.max(l)])}function z(){if(!d3.event.sourceEvent||"brush"!==d3.event.sourceEvent.type){var t=d3.event.transform;D(t.rescaleX(p).domain()),u.select(".axis--y").call(w),v.domain(t.rescaleX(p).domain()),T.select(".line").attr("d",x),P.attr("cx",function(t){return v(t.date)}).attr("cy",function(t){return g(t.price)}),T.select(".axis--x").call(k),E.select(".brush").call(b.move,v.range().map(t.invertX,t))}}E.append("g").attr("class","brush").call(b).call(b.move,v.range()),u.append("rect").attr("class","zoom").attr("width",h).attr("height",d).attr("transform","translate("+l.left+","+l.top+")").call(C)},u=(a("dRSK"),function(t){d3.select("#chart").append("text").attr("class","message").attr("x",150).attr("y",150).text(t)}),l=4,d={props:["data","height"],data:function(){return{isClicked:!1}},watch:{data:function(){this.render()}},created:function(){setTimeout(this.render,100)},beforeDestroy:function(){this.remove()},methods:{click:function(){this.isClicked=!0},render:function(){this.remove(),_.size(this.data.candles)0?"profit":"loss"}}},$=z,j=(a("WlXR"),Object(g["a"])($,P,A,!1,null,null,null)),O=j.exports,M=a("UeuA"),G=a("vf3E"),I={props:["result"],data:function(){return{}},methods:{},components:{roundtripTable:G["a"],resultSummary:O,chart:M["a"]},computed:{candles:function(){return{candles:this.result.stratCandles,trades:this.result.trades}}}},R=I,H=(a("wVP4"),Object(g["a"])(R,T,E,!1,null,null,null)),K=H.exports,Y={data:function(){return{backtestable:!1,backtestState:"idle",backtestResult:!1,config:!1}},methods:{check:function(t){if(this.config=t,!t.valid)return this.backtestable=!1;this.backtestable=!0},run:function(){var t=this;this.backtestState="fetching",Object(f["b"])("backtest",this.config,function(e,a){t.backtestState="fetched",t.backtestResult=a})}},components:{configBuilder:S,result:K,spinner:h["a"]}},W=Y,N=Object(g["a"])(W,n,r,!1,null,null,null);e["a"]=N.exports},c7Wa:function(t,e){const a=["marketUpdate"],n=["marketStart","stratWarmupCompleted"],r=["tradeCompleted","advice","roundtrip"],i=(t,e)=>{const i=e.type,s=e.payload;return t={...t,latestUpdate:new Date},r.includes(i)&&(t=t.events[i]?{...t,events:{...t.events,[i]:[...t.events[i],s]}}:{...t,events:{...t.events,[i]:[s]}}),t.events.initial[i]||a.includes(i)||(t={...t,events:{...t.events,initial:{...t.events.initial,[i]:s}}}),n.includes(i)||(t={...t,events:{...t.events,latest:{...t.events.latest,[i]:s}}}),t};t.exports=i},dHeD:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain"},[a("div",{staticClass:"text",domProps:{innerHTML:t._s(t.intro)}}),a("div",{staticClass:"hr"}),a("h2",[t._v("Available datasets")]),"idle"===t.datasetScanstate?a("div",{staticClass:"txt--center my2"},[a("a",{staticClass:"w100--s btn--primary scan-btn",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.scan(e)}}},[t._v("Scan available data")])]):t._e(),"scanning"===t.datasetScanstate?a("div",{staticClass:"txt--center my2"},[a("spinner")],1):t._e(),"scanned"===t.datasetScanstate?a("div",{staticClass:"my2"},[t.unscannableMakets.length?a("div",{staticClass:"bg--orange p1 warning my1"},[t.viewUnscannable?t._e():a("p",{staticClass:"clickable",on:{click:function(e){return e.preventDefault(),t.toggleUnscannable(e)}}},[t._v("Some markets were unscannable, click here for details.")]),t.viewUnscannable?[a("p",[t._v("Unable to find datasets in the following markets:")]),t._l(t.unscannableMakets,function(e){return a("div",{staticClass:"mx2"},[t._v("- "+t._s(e.exchange)+":"+t._s(e.currency)+":"+t._s(e.asset))])})]:t._e()],2):t._e(),t.datasets.length?[a("table",{staticClass:"full data"},[t._m(0),a("tbody",t._l(t.datasets,function(e){return a("tr",[a("td",[t._v(t._s(e.exchange))]),a("td",[t._v(t._s(e.currency))]),a("td",[t._v(t._s(e.asset))]),a("td",[t._v(t._s(t.fmt(e.from)))]),a("td",[t._v(t._s(t.fmt(e.to)))]),a("td",[t._v(t._s(t.humanizeDuration(e.to.diff(e.from))))])])}))])]:t._e(),t.datasets.length?t._e():[a("p",[t._v("It looks like you don't have any local data yet.")])]],2):t._e(),a("div",{staticClass:"my2"},[a("h2",[t._v("Import more data")]),a("p",{staticClass:"text"},[t._v("You can easily import more market data directly from exchanges using the importer.")]),a("router-link",{staticClass:"btn--primary",attrs:{to:"/data/importer"}},[t._v("Go to the importer!")])],1)])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("thead",[a("tr",[a("th",[t._v("exchange")]),a("th",[t._v("currency")]),a("th",[t._v("asset")]),a("th",[t._v("from")]),a("th",[t._v("to")]),a("th",[t._v("duration")])])])}],i=(a("VRzm"),a("MB/c")),s=a("5shn"),o=a("spvI"),c=Object(s["a"])("\n\n## Local data\n\nGekko needs local market data in order to backtest strategies. The local\ndata can also be used in a warmup period when running a strategy against a\nlive market.\n\n"),u={mixins:[o["a"]],components:{spinner:i["a"]},data:function(){return{intro:c,viewUnscannable:!1}},methods:{toggleUnscannable:function(){this.viewUnscannable=!0},humanizeDuration:function(t){return window.humanizeDuration(t)},fmt:function(t){return t.format("YYYY-MM-DD HH:mm")}}},l=u,d=(a("2rY9"),a("KHd+")),f=Object(d["a"])(l,n,r,!1,null,null,null);e["a"]=f.exports},dW8q:function(t,e,a){"use strict";var n=a("w3yp"),r=a.n(n);r.a},daul:function(t,e,a){"use strict";var n=a("Kd0R"),r=a.n(n);r.a},g298:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain my2"},[t.data&&!t.data.done?a("div",[a("h2",[t._v("Importing data..")]),a("div",{staticClass:"grd"},[a("div",{staticClass:"grd-row"},[t._m(0),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.data.watch.exchange))])]),a("div",{staticClass:"grd-row"},[t._m(1),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.data.watch.currency)+"/"+t._s(t.data.watch.asset))])])]),a("div",{staticClass:"grd"},[a("div",{staticClass:"grd-row"},[t._m(2),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.from)))])]),a("div",{staticClass:"grd-row"},[t._m(3),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.to)))])]),t.initialized?a("div",{staticClass:"grd-row"},[t._m(4),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.latest)))])]):t._e(),t.initialized?a("div",{staticClass:"grd-row"},[t._m(5),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fromEnd))])]):t._e()]),t.initialized?t._e():a("spinner"),t.initialized?a("div",{staticClass:"contain"},[a("progressBar",{attrs:{progress:t.progress}})],1):t._e(),a("p",[a("em",[t._v("(you don't have to wait until the import is done,you can already start "),a("router-link",{attrs:{to:"/backtest"}},[t._v("backtesting")]),t._v(").")],1)])],1):t._e(),t.data&&t.data.done?a("div",{staticClass:"txt--center"},[a("h2",[t._v("Import done")]),a("p",[t._v(" Go and "),a("router-link",{attrs:{to:"/backtest"}},[t._v("backtest")]),t._v(" with your new data!")],1)]):t._e(),t.data?t._e():a("div",{staticClass:"txt--center"},[a("h2",[t._v("ERROR: Unknown import")]),a("p",[a("I",[t._v("don't know this import..")])],1)])])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Market:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Currency/Asset:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("From:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("To:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Imported data until:")])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-2-6"},[a("strong",[t._v("Remaining:")])])}],i=(a("dRSK"),a("LvDl")),s=a.n(i),o=function(){var t=this,e=t.$createElement,a=t._self._c||e;return t.progress?a("div",{staticClass:"progressbarWrapper"},[a("p",[a("strong",[t._v(t._s(t.round(t.progress))+"%")])]),a("div",{staticClass:"progressbar"},[a("div",{style:{width:t.progress+"%"}})])]):t._e()},c=[],u={props:["progress"],methods:{round:function(t){return(+t).toFixed(2)}}},l=u,d=(a("/vJE"),a("KHd+")),f=Object(d["a"])(l,o,c,!1,null,null,null),h=f.exports,m=a("MB/c"),v={components:{progressBar:h,spinner:m["a"]},computed:{data:function(){return s.a.find(this.$store.state.imports,{id:this.$route.params.id})},initialized:function(){if(this.data&&this.latest.isValid())return!0},latest:function(){if(this.data)return this.mom(this.data.latest)},fromEndMs:function(){if(this.data)return this.to.diff(this.latest)},fromEnd:function(){return this.latest?humanizeDuration(this.fromEndMs):"LOADING"},from:function(){if(this.data)return this.mom(this.data.from)},to:function(){if(this.data)return this.mom(this.data.to)},timespan:function(){if(this.data)return this.to.diff(this.from)},progress:function(){if(this.data){var t=this.timespan-this.fromEndMs;return 100*t/this.timespan}}},methods:{fmt:function(t){return t.format("YYYY-MM-DD HH:mm:ss")},mom:function(t){return moment.utc(t)}}},p=v,g=(a("qDq4"),Object(d["a"])(p,n,r,!1,null,null,null));e["a"]=g.exports},gYof:function(t,e,a){"use strict";a("LvDl");var n=a("Kw5r"),r=a("r0f2"),i=(a("L2JU"),a("wiDz")),s=a("Q2AE"),o=function(){Object(i["a"])("imports",function(t,e){s["a"].commit("syncImports",e)})},c=function(){C.$on("import_update",function(t){s["a"].commit("updateImport",t)})},u=function(){o(),c()},l=function(){Object(i["a"])("gekkos",function(t,e){var a=e;s["a"].commit("syncGekkos",a)})},d=function(){C.$on("gekko_new",function(t){return s["a"].commit("addGekko",t.state)}),C.$on("gekko_event",function(t){return s["a"].commit("updateGekko",t)}),C.$on("gekko_archived",function(t){return s["a"].commit("archiveGekko",t.id)}),C.$on("gekko_error",function(t){return s["a"].commit("errorGekko",t)}),C.$on("gekko_deleted",function(t){return s["a"].commit("deleteGekko",t.id)})},f=function(){l(),d()},h=function(){},m=function(){C.$on("WS_STATUS_CHANGE",function(t){return s["a"].commit("setGlobalWarning",{key:"connected",value:t.connected})})},v=function(){h(),m()},p=a("k5N+"),g=(a("rGqo"),function(t){if(!t)return{};var e=t,a={};return e.forEach(function(t){a[t.slug]=a[t.slug]||{markets:{}},t.markets.forEach(function(e){var n=Object(p["a"])(e["pair"],2),r=n[0],i=n[1];a[t.slug].markets[r]=a[t.slug].markets[r]||[],a[t.slug].markets[r].push(i)}),"exchangeMaxHistoryAge"in t&&(a[t.slug].exchangeMaxHistoryAge=t.exchangeMaxHistoryAge),a[t.slug].importable=!!t.providesFullHistory,a[t.slug].tradable=!!t.tradable,a[t.slug].requires=t.requires}),a}),_=function(){Object(i["a"])("apiKeys",function(t,e){s["a"].commit("syncApiKeys",e)}),Object(i["a"])("exchanges",function(t,e){s["a"].commit("syncExchanges",g(e))})},k=function(){C.$on("apiKeys",function(t){s["a"].commit("syncApiKeys",t.exchanges)})},y=function(){_(),k()},w=function(){u(),f(),v(),y()};a.d(e,"a",function(){return C}),a.d(e,"b",function(){return S});var b=null,C=new n["a"];C.$on("gekko_update",function(t){return console.log(t)}),C.$on("import_update",function(t){return console.log(t)}),C.$on("import_error",function(t){alert("IMPORT ERROR: "+t.error)});var x={connected:!1},S=function(){b=new ReconnectingWebSocket(r["b"],null,{maxReconnectInterval:4e3}),setTimeout(function(){x.connected||(w(),C.$emit("WS_STATUS_CHANGE",x))},500),b.onopen=function(){x.connected||(x.connected=!0,C.$emit("WS_STATUS_CHANGE",x),w())},b.onclose=function(){x.connected&&(x.connected=!1,C.$emit("WS_STATUS_CHANGE",x))},b.onerror=function(){x.connected&&(x.connected=!1,C.$emit("WS_STATUS_CHANGE",x))},b.onmessage=function(t){var e=JSON.parse(t.data);C.$emit(e.type,e)}}},h8ks:function(t,e,a){},hGnM:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain py2"},[a("h3",[t._v("Market watchers")]),t.watchers.length?t._e():a("div",{staticClass:"text"},[a("p",[t._v("You don't have any market watchers.")])]),t.watchers.length?a("table",{staticClass:"full clickable"},[t._m(0),a("tbody",t._l(t.watchers,function(e){return a("tr",{staticClass:"clickable",on:{click:function(a){t.$router.push({path:"/live-gekkos/"+e.id})}}},[a("td",[t._v(t._s(e.config.watch.exchange))]),a("td",[t._v(t._s(e.config.watch.currency))]),a("td",[t._v(t._s(e.config.watch.asset))]),a("td",[t._v(t._s(t.status(e)))]),a("td",[e.events.initial.candle?[t._v(t._s(t.fmt(e.events.initial.candle.start)))]:t._e()],2),a("td",[e.events.latest.candle?[t._v(t._s(t.fmt(e.events.latest.candle.start)))]:t._e()],2),a("td",[e.events.initial.candle&&e.events.latest.candle?[t._v(t._s(t.timespan(e.events.latest.candle.start,e.events.initial.candle.start)))]:t._e()],2)])}))]):t._e(),a("h3",[t._v("Strat runners")]),t.stratrunners.length?t._e():a("div",{staticClass:"text"},[a("p",[t._v("You don't have any stratrunners.")])]),t.stratrunners.length?a("table",{staticClass:"full"},[t._m(1),a("tbody",t._l(t.stratrunners,function(e){return a("tr",{staticClass:"clickable",on:{click:function(a){t.$router.push({path:"/live-gekkos/"+e.id})}}},[a("td",[t._v(t._s(e.config.watch.exchange))]),a("td",[t._v(t._s(e.config.watch.currency))]),a("td",[t._v(t._s(e.config.watch.asset))]),a("td",[t._v(t._s(t.status(e)))]),a("td",[e.events.initial.candle&&e.events.latest.candle?[t._v(t._s(t.timespan(e.events.latest.candle.start,e.events.initial.candle.start)))]:t._e()],2),a("td",[t._v(t._s(e.config.tradingAdvisor.method))]),a("td",[t.report(e)?t._e():[t._v("0")],t.report(e)?[t._v(t._s(t.round(t.report(e).profit))+" "+t._s(t.report(e).currency))]:t._e()],2),a("td",[t._v(t._s(e.logType))]),a("td",[e.events.tradeCompleted?t._e():[t._v("0")],e.events.tradeCompleted?[t._v(t._s(e.events.tradeCompleted.length))]:t._e()],2)])}))]):t._e(),a("div",{staticClass:"hr"}),a("h2",[t._v("Start a new live Gekko")]),a("router-link",{staticClass:"btn--primary",attrs:{to:"/live-gekkos/new"}},[t._v("Start a new live Gekko!")])],1)},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("thead",[a("tr",[a("th",[t._v("exchange")]),a("th",[t._v("currency")]),a("th",[t._v("asset")]),a("th",[t._v("status")]),a("th",[t._v("started at")]),a("th",[t._v("last update")]),a("th",[t._v("duration")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("thead",[a("tr",[a("th",[t._v("exchange")]),a("th",[t._v("currency")]),a("th",[t._v("asset")]),a("th",[t._v("status")]),a("th",[t._v("duration")]),a("th",[t._v("strategy")]),a("th",[t._v("PnL")]),a("th",[t._v("type")]),a("th",[t._v("trades")])])])}],i=(a("a1Th"),a("rGqo"),a("yt8O"),a("VRzm"),{created:function(){var t=this;this.timer=setInterval(function(){t.now=moment()},1e3)},destroyed:function(){clearTimeout(this.timer)},data:function(){return{timer:!1,now:moment()}},computed:{stratrunners:function(){return _.values(this.$store.state.gekkos).concat(_.values(this.$store.state.archivedGekkos)).filter(function(t){return"papertrader"===t.logType||"tradebot"===t.logType})},watchers:function(){return _.values(this.$store.state.gekkos).concat(_.values(this.$store.state.archivedGekkos)).filter(function(t){return"watcher"===t.logType})}},methods:{humanizeDuration:function(t){return window.humanizeDuration(t)},moment:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){return moment.utc(t)}),fmt:function(t){return moment.utc(t).format("YYYY-MM-DD HH:mm")},round:function(t){return(+t).toFixed(3)},timespan:function(t,e){return this.humanizeDuration(this.moment(t).diff(this.moment(e)))},status:function(t){return t.errored?"errored":t.stopped?"stopped":t.active?"running":void console.log("unknown state:",t)},report:function(t){return _.get(t,"events.latest.performanceReport")}}}),s=i,o=(a("daul"),a("KHd+")),c=Object(o["a"])(s,n,r,!1,null,null,null);e["a"]=c.exports},jTvs:function(t,e,a){},jVW9:function(t,e,a){},jf14:function(t,e,a){},jloR:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain my2"},[a("div",{staticClass:"text",domProps:{innerHTML:t._s(t.intro)}}),a("div",{staticClass:"hr"}),a("h3",[t._v("Currently running imports")]),0===t.imports.length?a("p",[t._v("You currently don't have any imports running.")]):t._e(),t.imports.length?a("ul",t._l(t.imports,function(e){return a("li",[a("router-link",{attrs:{to:"/data/importer/import/"+e.id}},[t._v(t._s(e.watch.exchange)+":"+t._s(e.watch.currency)+"/"+t._s(e.watch.asset))])],1)})):t._e(),a("div",{staticClass:"hr"}),a("h3",[t._v("Start a new import")]),a("import-config-builder",{on:{config:t.updateConfig}}),a("div",{staticClass:"hr"}),a("div",{staticClass:"txt--center"},[a("a",{staticClass:"w100--s my1 btn--primary",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.run(e)}}},[t._v("Import")])])],1)},r=[],i=a("wiDz"),s=a("MB/c"),o=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd contain"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("h3",[t._v("Market")]),a("market-picker",{attrs:{"only-importable":"true"},on:{market:t.updateMarketConfig}})],1),a("div",{staticClass:"grd-row-col-3-6 mx1"},[a("range-creator",{on:{range:t.updateRange}})],1)])])},c=[],u=(a("91GP"),a("6BxS")),l=a("FhOJ"),d=(a("LvDl"),{data:function(){return{market:{},range:{}}},components:{marketPicker:u["a"],rangeCreator:l["a"]},computed:{config:function(){var t={};return Object.assign(t,this.market,{importer:{daterange:this.range}},{candleWriter:{enabled:!0}}),t}},methods:{updateMarketConfig:function(t){this.market=t,this.emitConfig()},updateRange:function(t){this.range=t,this.emitConfig()},emitConfig:function(){this.$emit("config",this.config)}}}),f=d,h=(a("H+ir"),a("KHd+")),m=Object(h["a"])(f,o,c,!1,null,null,null),v=m.exports,p=a("5shn"),g=Object(p["a"])("\n\n## Import data\n\nThe importer can download historical market data directly from the exchange.\n\n"),_={components:{importConfigBuilder:v,spinner:s["a"]},data:function(){return{intro:g,config:{}}},computed:{imports:function(){return this.$store.state.imports}},methods:{daysApart:function(t){var e=moment(t.to),a=moment(t.from);return e.diff(a,"days")},updateConfig:function(t){this.config=t},run:function(){var t=this,e=this.daysApart(this.config.importer.daterange);if(e<1)return alert("You can only import at least one day of data..");var a=this.$store.state.exchanges[this.config.watch.exchange];if("exchangeMaxHistoryAge"in a&&moment(this.config.importer.daterange.from) 1%","last 2 versions","not ie <= 8"]}},ldlP:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("section",{staticClass:"contain grd-row"},[a("div",{staticClass:"grd-row-col-3-6",domProps:{innerHTML:t._s(t.left)}}),t._m(0)])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd-row-col-3-6 txt--center"},[a("img",{attrs:{src:"/static/gekko.jpg"}}),a("p",[a("em",[t._v("The most valuable commodity I know of is information.")])])])}],i=a("5shn"),s=Object(i["a"])("\n\n## Gekko\n\nGekko is a Bitcoin trading bot and backtesting platform that\nconnects to popular Bitcoin exchanges. It is written in javascript\nand runs on nodejs.\n\n[Find out more](https://gekko.wizb.it/).\n\n*Gekko is 100% open source and free, if you paid for this you have been scammed.*\n\n"),o={data:function(){return{left:s}}},c=o,u=a("KHd+"),l=Object(u["a"])(c,n,r,!1,null,null,null);e["a"]=l.exports},mf2E:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"my2"},[t.data?t._e():a("div",{staticClass:"contain"},[a("h1",[t._v("Unknown Gekko instance")]),a("p",[t._v("Gekko doesn't know what gekko this is...")])]),t.data?a("div",[a("h2",{staticClass:"contain"},[t._v("Gekko "+t._s(t.type))]),t.isArchived?a("div",{staticClass:"contain brdr--mid-gray p1 bg--orange"},[t._v("This is an archived Gekko, it is currently not running anymore.")]):t._e(),t.data.errorMessage?a("div",{staticClass:"contain brdr--mid-gray p1 bg--orange"},[t._v("This is Gekko crashed with the following error: "+t._s(t.data.errorMessage))]):t._e(),a("div",{staticClass:"grd contain"},[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Market")]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Exchange")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.config.watch.exchange))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Currency")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.config.watch.currency))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Asset")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.config.watch.asset))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Type")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.type))])])]),a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Runtime")]),t.isLoading?a("spinner"):t._e(),t.isLoading?t._e():[t.initialEvents.candle?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Watching since")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.initialEvents.candle.start)))])]):t._e(),t.latestEvents.candle?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Received data until")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.fmt(t.latestEvents.candle.start)))])]):t._e(),t.latestEvents.candle?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Data spanning")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.humanizeDuration(t.moment(t.latestEvents.candle.start).diff(t.moment(t.initialEvents.candle.start)))))])]):t._e(),t.isStratrunner?[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Amount of trades")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.trades.length))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("Candle size")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.config.tradingAdvisor.candleSize))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-2-6"},[t._v("History size")]),a("div",{staticClass:"grd-row-col-4-6"},[t._v(t._s(t.config.tradingAdvisor.historySize))])])]:t._e()]],2)]),t.warmupRemaining?a("div",{staticClass:"contain brdr--mid-gray p1 bg--orange"},[t._v("This stratrunner is still warming up for the next "),a("i",[t._v(t._s(t.warmupRemaining.replace(","," and ")))]),t._v(", it will not trade until it is warmed up.")]):t._e(),t.isStratrunner?a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Strategy")]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Name")]),a("div",{staticClass:"grd-row-col-3-6"},[a("strong",[t._v(t._s(t.stratName))])])]),t._v("Parameters"),a("pre",[t._v(t._s(t.stratParams))])]),a("div",{staticClass:"grd-row-col-3-6"},[a("h3",[t._v("Profit report")]),t.report?t._e():[a("p",[t.isArchived?a("em",[t._v("This Gekko never executed a trade..")]):t._e(),t.isArchived?t._e():a("em",[t._v("Waiting for at least one trade..")])])],t.report?[a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Start balance")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.startBalance)))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Current balance")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.balance)))])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Market")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.market/100*t.report.startPrice))+" "+t._s(t.config.watch.currency)+" ("+t._s(t.round(t.report.market))+" %)")])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Profit")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.profit))+" "+t._s(t.config.watch.currency)+" ("+t._s(t.round(t.report.relativeProfit))+" %)")])]),a("div",{staticClass:"grd-row"},[a("div",{staticClass:"grd-row-col-3-6"},[t._v("Alpha")]),a("div",{staticClass:"grd-row-col-3-6"},[t._v(t._s(t.round(t.report.alpha))+" "+t._s(t.config.watch.currency))])])]:t._e()],2)]):t._e(),!t.isStratrunner||t.watcher||t.isArchived?t._e():a("p",[t._v("WARNING: stale gekko, not attached to a watcher, please report "),a("a",{attrs:{href:"https://github.com/askmike/gekko/issues"}},[t._v("here")]),t._v(".")]),t.isArchived?t._e():a("p",[a("a",{staticClass:"w100--s my1 btn--red",on:{click:t.stopGekko}},[t._v("Stop Gekko")])]),t.isArchived?a("p",[a("a",{staticClass:"w100--s my1 btn--red",on:{click:t.deleteGekko}},[t._v("Delete Gekko")])]):t._e(),t.isStratrunner&&t.watcher&&!t.isArchived?a("p",[a("em",[t._v("This gekko gets market data from "),a("router-link",{attrs:{to:"/live-gekkos/"+t.watcher.id}},[t._v("this market watcher")])],1),t._v(".")]):t._e()]),t.isLoading?t._e():[a("h3",{staticClass:"contain"},[t._v("Market graph")]),"fetching"===t.candleFetch?a("spinner"):t._e(),"fetched"===t.candleFetch?[a("chart",{attrs:{data:t.chartData,height:300}})]:t._e(),t.isStratrunner?a("roundtrips",{attrs:{roundtrips:t.roundtrips}}):t._e()]],2):t._e()])},r=[],i=(a("a1Th"),a("dRSK"),a("Kw5r")),s=a("LvDl"),o=a.n(s),c=a("wiDz"),u=a("MB/c"),l=a("UeuA"),d=a("vf3E"),f=a("0Bu0"),h={created:function(){this.isLoading||this.getCandles()},components:{spinner:u["a"],chart:l["a"],paperTradeSummary:f["a"],roundtrips:d["a"]},data:function(){return{candleFetch:"idle",candles:!1}},computed:{id:function(){return this.$route.params.id},gekkos:function(){return this.$store.state.gekkos},archivedGekkos:function(){return this.$store.state.archivedGekkos},data:function(){return!!this.gekkos&&(o.a.has(this.gekkos,this.id)?this.gekkos[this.id]:!!o.a.has(this.archivedGekkos,this.id)&&this.archivedGekkos[this.id])},config:function(){return o.a.get(this,"data.config")},latestEvents:function(){return o.a.get(this,"data.events.latest")},initialEvents:function(){return o.a.get(this,"data.events.initial")},trades:function(){return o.a.get(this,"data.events.tradeCompleted")||[]},roundtrips:function(){return o.a.get(this,"data.events.roundtrip")||[]},isLive:function(){return o.a.has(this.gekkos,this.id)},type:function(){return this.data.logType},isStratrunner:function(){return"watcher"!==this.type},isArchived:function(){return this.data.stopped},warmupRemaining:function(){if(!this.isStratrunner)return!1;if(this.isArchived)return!1;if(this.initialEvents.stratWarmupCompleted)return!1;if(!this.initialEvents.candle)return!1;var t=o.a.get(this.config,"tradingAdvisor.candleSize")*o.a.get(this.config,"tradingAdvisor.historySize");return humanizeDuration(moment(this.initialEvents.candle.start).add(t,"m").diff(moment()),{largest:2})},chartData:function(){return{candles:this.candles,trades:this.trades}},report:function(){return o.a.get(this.latestEvents,"performanceReport")},stratName:function(){if(this.data)return this.data.config.tradingAdvisor.method},stratParams:function(){if(!this.data)return"Loading...";var t=i["a"].util.extend({},this.data.config[this.stratName]);return delete t.__empty,o.a.isEmpty(t)?"No parameters":JSON.stringify(t,null,4)},isLoading:function(){return!this.data||(!o.a.get(this.data,"events.initial.candle")||!o.a.get(this.data,"events.latest.candle"))},watcher:function(){var t=this;if(!this.isStratrunner)return!1;var e=i["a"].util.extend({},this.data.config.watch);return o.a.find(this.gekkos,function(a){return a.id!==t.id&&o.a.isEqual(e,a.config.watch)})},hasLeechers:function(){var t=this;if(this.isStratrunner)return!1;var e=i["a"].util.extend({},this.data.config.watch);return o.a.find(this.gekkos,function(a){return a.id!==t.id&&o.a.isEqual(e,a.config.watch)})}},watch:{"data.events.latest.candle.start":function(){setTimeout(this.getCandles,o.a.random(100,2e3))}},methods:{round:function(t){return(+t).toFixed(5)},humanizeDuration:function(t,e){return window.humanizeDuration(t,e)},moment:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){return moment.utc(t)}),fmt:function(t){return moment.utc(t).format("YYYY-MM-DD HH:mm")},getCandles:function(){var t=this;if(!this.isLoading&&"fetching"!==this.candleFetch){this.candleFetch="fetching";var e=this.data.events.latest.candle.start,a=this.data.events.initial.candle.start,n=1;"watcher"!==this.type&&(n=this.data.config.tradingAdvisor.candleSize);var r={watch:this.data.config.watch,daterange:{to:e,from:a},candleSize:n};setTimeout(function(){Object(c["b"])("getCandles",r,function(e,a){if(t.candleFetch="fetched",!a||a.error||!o.a.isArray(a))return console.log(a);t.candles=a.map(function(t){return t.start=moment.unix(t.start).utc().format(),t})})},o.a.random(150,2500))}},stopGekko:function(){if(this.hasLeechers)return alert("This Gekko is fetching market data for multiple stratrunners, stop these first.");confirm("Are you sure you want to stop this Gekko?")&&Object(c["b"])("stopGekko",{id:this.data.id},function(t,e){console.log("stopped gekko")})},deleteGekko:function(){var t=this;if(!this.isArchived)return alert("This Gekko is still running, stop it first!");confirm("Are you sure you want to delete this Gekko?")&&Object(c["b"])("deleteGekko",{id:this.data.id},function(e,a){t.$router.push({path:"/live-gekkos/"})})}}},m=h,v=(a("/Dpa"),a("KHd+")),p=Object(v["a"])(m,n,r,!1,null,null,null);e["a"]=p.exports},ngcj:function(t,e,a){"use strict";var n=a("EAJ1"),r=a.n(n);r.a},nzng:function(t,e,a){},pd3X:function(t,e,a){},pyMo:function(t,e,a){},q431:function(t,e,a){"use strict";var n=a("ydmZ"),r=a.n(n);r.a},qDq4:function(t,e,a){"use strict";var n=a("nzng"),r=a.n(n);r.a},r0f2:function(t,e,a){"use strict";a.d(e,"b",function(){return i}),a.d(e,"a",function(){return r});var n,r,i,s=window.CONFIG.ui,o="".concat(s.host).concat(80===s.port?"":":".concat(s.port)).concat(s.path);n=s.ssl?"https://".concat(o):"http://".concat(o),r=n+"api/",i=s.ssl?"wss://".concat(o,"api"):"ws://".concat(o,"api")},rloZ:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"grd"},[a("div",{staticClass:"px1"},[a("h3",[t._v("Paper trader")]),"closed"===t.toggle?a("a",{staticClass:"btn--primary",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.switchToggle(e)}}},[t._v("Change paper trader settings")]):t._e(),"open"===t.toggle?[a("p",[t._v("Settings:")]),a("textarea",{directives:[{name:"model",rawName:"v-model",value:t.rawPaperTraderParams,expression:"rawPaperTraderParams"}],staticClass:"params",domProps:{value:t.rawPaperTraderParams},on:{input:function(e){e.target.composing||(t.rawPaperTraderParams=e.target.value)}}}),t.rawPaperTraderParamsError?a("p",{staticClass:"bg--red p1"},[t._v(t._s(t.rawPaperTraderParamsError.message))]):t._e()]:t._e()],2)])},r=[],i=(a("LvDl"),a("wiDz")),s={created:function(){var t=this;Object(i["a"])("configPart/paperTrader",function(e,a){t.rawPaperTraderParams=a.part})},data:function(){return{rawPaperTraderParams:"",rawPaperTraderParamsError:!1,paperTraderParams:{},toggle:"closed"}},watch:{rawPaperTraderParams:function(){this.emitConfig()}},methods:{switchToggle:function(){"open"===this.toggle?this.toggle="closed":this.toggle="open"},emitConfig:function(){this.parseParams(),this.$emit("settings",this.paperTraderParams)},parseParams:function(){try{this.paperTraderParams=toml.parse(this.rawPaperTraderParams),this.paperTraderParams.reportRoundtrips=!0,this.rawPaperTraderParamsError=!1}catch(t){this.rawPaperTraderParamsError=t,this.paperTraderParams={}}}}},o=s,c=(a("0zrD"),a("KHd+")),u=Object(c["a"])(o,n,r,!1,null,null,null);e["a"]=u.exports},spvI:function(t,e,a){"use strict";a("Vd3H"),a("rGqo");var n=a("wiDz"),r={data:function(){return{datasets:[],datasetScanstate:"idle",unscannableMakets:[]}},methods:{scan:function(){var t=this;this.datasetScanstate="scanning",Object(n["b"])("scansets",{},function(e,a){t.datasetScanstate="scanned",t.unscannableMakets=a.errors;var n=[];a.datasets.forEach(function(t){t.ranges.forEach(function(e,a){n.push({exchange:t.exchange,currency:t.currency,asset:t.asset,from:moment.unix(e.from).utc(),to:moment.unix(e.to).utc(),id:t.exchange+t.asset+t.currency+a})})}),n=n.filter(function(t){if(t.to.diff(t.from,"hours")>2)return!0}),n=n.sort(function(t,e){var a=t.to.diff(t.from),n=e.to.diff(e.from);return an?1:0}).reverse(),t.datasets=n})}}};e["a"]=r},tr8f:function(t,e,a){"use strict";var n=a("h8ks"),r=a.n(n);r.a},tr8z:function(t,e,a){"use strict";var n=a("Ug4+"),r=a.n(n);r.a},uMTv:function(t,e,a){"use strict";var n=a("pyMo"),r=a.n(n);r.a},uXxc:function(t,e,a){},vf3E:function(t,e,a){"use strict";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"contain roundtrips"},[a("h2",[t._v("Roundtrips")]),t.roundtrips.length?a("table",[a("thead",[t._m(0),t._l(t.roundtrips,function(e){return a("tr",[a("td",[t._v(t._s(t.fmt(e.entryAt)))]),a("td",[t._v(t._s(t.fmt(e.exitAt)))]),a("td",[t._v(t._s(t.diff(e.duration)))]),a("td",[t._v(t._s(t.round(e.entryBalance)))]),a("td",[t._v(t._s(t.round(e.exitBalance)))]),-1===Math.sign(e.pnl)?[a("td",{staticClass:"loss"},[t._v(t._s(Math.sign(e.pnl)*e.pnl.toFixed(2)))]),a("td",{staticClass:"loss"},[t._v(t._s(e.profit.toFixed(2))+"%")])]:[a("td",{staticClass:"profit"},[t._v(t._s(e.pnl.toFixed(2)))]),a("td",{staticClass:"profit"},[t._v(t._s(e.profit.toFixed(2))+"%")])]],2)})],2)]):t._e(),t.roundtrips.length?t._e():a("div",[a("p",[t._v("Not enough data to display")])])])},r=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("tr",[a("th",[t._v("Entry at (UTC)")]),a("th",[t._v("Exit at (UTC)")]),a("th",[t._v("Exposure")]),a("th",[t._v("Entry balance")]),a("th",[t._v("Exit balance")]),a("th",[t._v("P&L")]),a("th",[t._v("Profit")])])}],i=(a("VRzm"),a("LvDl")),s=a.n(i),o={props:["roundtrips"],data:function(){return{}},methods:{diff:function(t){return moment.duration(t).humanize()},humanizeDuration:function(t){return window.humanizeDuration(t)},fmt:function(t){var e;return e=s.a.isNumber(t)?moment.unix(t):moment(t).utc(),e.utc().format("YYYY-MM-DD HH:mm")},round:function(t){return(+t).toFixed(3)}}},c=o,u=(a("dW8q"),a("KHd+")),l=Object(u["a"])(c,n,r,!1,null,null,null);e["a"]=l.exports},vwRV:function(t,e,a){},w3yp:function(t,e,a){},wVP4:function(t,e,a){"use strict";var n=a("vwRV"),r=a.n(n);r.a},wVPO:function(t,e,a){"use strict";var n=a("uXxc"),r=a.n(n);r.a},wiDz:function(t,e,a){"use strict";a.d(e,"b",function(){return u}),a.d(e,"a",function(){return l});var n=a("24Ii"),r=a.n(n),i=a("TrxG"),s=a.n(i),o=a("r0f2"),c=function(t){return function(e,a){if(e)return t(e);if(!a.text)return t("no data");var n=JSON.parse(a.text);t(!1,n)}},u=function(t,e,a){r.a.post(o["a"]+t).use(s.a).send(e).end(c(a))},l=function(t,e){r.a.get(o["a"]+t).use(s.a).end(c(e))}},ydmZ:function(t,e,a){},yomC:function(t,e,a){"use strict";var n=a("EfWa"),r=a.n(n);r.a},yuKf:function(t,e,a){}}); -//# sourceMappingURL=app.bd655fc0.js.map \ No newline at end of file diff --git a/web/vue/dist/app.bd655fc0.js.map b/web/vue/dist/app.bd655fc0.js.map deleted file mode 100644 index d96924bf5..000000000 --- a/web/vue/dist/app.bd655fc0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/gekko/singleGekko.vue?6cec","webpack:///./src/components/global/progressBar.vue?7bcc","webpack:///./src/components/global/paperTradeSummary.vue?13b5","webpack:///src/components/global/paperTradeSummary.vue","webpack:///./src/components/global/paperTradeSummary.vue?a8ef","webpack:///./src/components/global/paperTradeSummary.vue","webpack:///./src/components/global/configbuilder/papertrader.vue?c5cd","webpack:///./src/components/gekko/new.vue?c104","webpack:///./src/components/gekko/new.vue?367c","webpack:///./src/components/gekko/gekkoConfigBuilder.vue?035a","webpack:///./src/components/global/configbuilder/typepicker.vue?df24","webpack:///src/components/global/configbuilder/typepicker.vue","webpack:///./src/components/global/configbuilder/typepicker.vue?cf28","webpack:///./src/components/global/configbuilder/typepicker.vue","webpack:///src/components/gekko/gekkoConfigBuilder.vue","webpack:///./src/components/gekko/gekkoConfigBuilder.vue?8d92","webpack:///./src/components/gekko/gekkoConfigBuilder.vue","webpack:///src/components/gekko/new.vue","webpack:///./src/components/gekko/new.vue?ae9a","webpack:///./src/components/gekko/new.vue","webpack:///./src/components/data/data.vue?4abe","webpack:///./src/tools/marked.js","webpack:///./src/components/global/configbuilder/marketpicker.vue?d701","webpack:///src/components/global/configbuilder/marketpicker.vue","webpack:///./src/components/global/configbuilder/marketpicker.vue?200d","webpack:///./src/components/global/configbuilder/marketpicker.vue","webpack:///./src/components/global/configbuilder/stratpicker.vue?fda9","webpack:///src/components/global/configbuilder/stratpicker.vue","webpack:///./src/components/global/configbuilder/stratpicker.vue?8a34","webpack:///./src/components/global/configbuilder/stratpicker.vue","webpack:///./src/components/global/configbuilder/rangepicker.vue?ce7c","webpack:///./src/components/global/configbuilder/rangecreator.vue?8425","webpack:///src/components/global/configbuilder/rangecreator.vue","webpack:///./src/components/global/configbuilder/rangecreator.vue?3f8d","webpack:///./src/components/global/configbuilder/rangecreator.vue","webpack:///./src/components/data/import/importConfigBuilder.vue?3911","webpack:///./src/components/global/blockSpinner.vue?cca6","webpack:///src/components/global/blockSpinner.vue","webpack:///./src/components/global/blockSpinner.vue?7b17","webpack:///./src/components/global/blockSpinner.vue","webpack:///./src/App.vue?77b6","webpack:///./src/components/layout/header.vue?345a","webpack:///src/components/layout/header.vue","webpack:///./src/components/layout/header.vue?8ecd","webpack:///./src/components/layout/header.vue","webpack:///./src/components/layout/footer.vue?0614","webpack:///src/components/layout/footer.vue","webpack:///./src/components/layout/footer.vue?6aff","webpack:///./src/components/layout/footer.vue","webpack:///./src/components/layout/modal.vue?5ed7","webpack:///src/components/layout/modal.vue","webpack:///./src/components/layout/modal.vue?6e33","webpack:///./src/components/layout/modal.vue","webpack:///src/App.vue","webpack:///./src/App.vue?8f16","webpack:///./src/App.vue","webpack:///./src/store/modules/imports/mutations.js","webpack:///./src/store/modules/gekkos/mutations.js","webpack:///./src/store/modules/notifications/mutations.js","webpack:///./src/store/modules/config/mutations.js","webpack:///./src/store/index.js","webpack:///./src/components/backtester/backtestConfigBuilder.vue?fda9","webpack:///./src/components/backtester/result/chartWrapper.vue?d2a0","webpack:///./src/components/global/configbuilder/rangecreator.vue?c7ad","webpack:///./src/components/layout/modal.vue?a2b4","webpack:///./src/components/backtester/result/chartWrapper.vue?cfc8","webpack:///./src/d3/chart4.js","webpack:///./src/d3/message.js","webpack:///src/components/backtester/result/chartWrapper.vue","webpack:///./src/components/backtester/result/chartWrapper.vue?414d","webpack:///./src/components/backtester/result/chartWrapper.vue","webpack:///./src/main.js","webpack:///./src/components/backtester/result/summary.vue?6f4b","webpack:///./src/components/config/config.vue?9014","webpack:///./src/components/config/apiConfigBuilder.vue?901e","webpack:///./src/components/global/configbuilder/exchangepicker.vue?f5ea","webpack:///src/components/global/configbuilder/exchangepicker.vue","webpack:///./src/components/global/configbuilder/exchangepicker.vue?f140","webpack:///./src/components/global/configbuilder/exchangepicker.vue","webpack:///src/components/config/apiConfigBuilder.vue","webpack:///./src/components/config/apiConfigBuilder.vue?a340","webpack:///./src/components/config/apiConfigBuilder.vue","webpack:///src/components/config/config.vue","webpack:///./src/components/config/config.vue?03e8","webpack:///./src/components/config/config.vue","webpack:///./src/components/gekko/gekkoConfigBuilder.vue?c09b","webpack:///./src/components/global/configbuilder/rangepicker.vue?e445","webpack:///src/components/global/configbuilder/rangepicker.vue","webpack:///./src/components/global/configbuilder/rangepicker.vue?6482","webpack:///./src/components/global/configbuilder/rangepicker.vue","webpack:///./src/App.vue?8b0d","webpack:///./src/components/config/apiConfigBuilder.vue?bb40","webpack:///./src/components/backtester/backtester.vue?06dc","webpack:///./src/components/backtester/backtestConfigBuilder.vue?bafa","webpack:///./src/components/global/configbuilder/datasetpicker.vue?dc86","webpack:///src/components/global/configbuilder/datasetpicker.vue","webpack:///./src/components/global/configbuilder/datasetpicker.vue?adbd","webpack:///./src/components/global/configbuilder/datasetpicker.vue","webpack:///src/components/backtester/backtestConfigBuilder.vue","webpack:///./src/components/backtester/backtestConfigBuilder.vue?6bee","webpack:///./src/components/backtester/backtestConfigBuilder.vue","webpack:///./src/components/backtester/result/result.vue?f19d","webpack:///./src/components/backtester/result/summary.vue?a48b","webpack:///src/components/backtester/result/summary.vue","webpack:///./src/components/backtester/result/summary.vue?2c9f","webpack:///./src/components/backtester/result/summary.vue","webpack:///src/components/backtester/result/result.vue","webpack:///./src/components/backtester/result/result.vue?a333","webpack:///./src/components/backtester/result/result.vue","webpack:///src/components/backtester/backtester.vue","webpack:///./src/components/backtester/backtester.vue?b754","webpack:///./src/components/backtester/backtester.vue","webpack:///../state/reduceState.js","webpack:///./src/components/data/data.vue?5f3a","webpack:///src/components/data/data.vue","webpack:///./src/components/data/data.vue?7897","webpack:///./src/components/data/data.vue","webpack:///./src/components/backtester/result/roundtripTable.vue?cb8d","webpack:///./src/components/gekko/list.vue?dec3","webpack:///./src/components/data/import/single.vue?892b","webpack:///./src/components/global/progressBar.vue?f48f","webpack:///src/components/global/progressBar.vue","webpack:///./src/components/global/progressBar.vue?3819","webpack:///./src/components/global/progressBar.vue","webpack:///src/components/data/import/single.vue","webpack:///./src/components/data/import/single.vue?ea36","webpack:///./src/components/data/import/single.vue","webpack:///./src/store/modules/imports/sync.js","webpack:///./src/store/modules/gekkos/sync.js","webpack:///./src/store/modules/notifications/sync.js","webpack:///./src/store/modules/config/sync.js","webpack:///./src/store/init.js","webpack:///./src/components/global/ws.js","webpack:///./src/components/gekko/list.vue?889e","webpack:///src/components/gekko/list.vue","webpack:///./src/components/gekko/list.vue?1de5","webpack:///./src/components/gekko/list.vue","webpack:///./src/components/data/import/importer.vue?370b","webpack:///./src/components/data/import/importConfigBuilder.vue?d697","webpack:///src/components/data/import/importConfigBuilder.vue","webpack:///./src/components/data/import/importConfigBuilder.vue?4a12","webpack:///./src/components/data/import/importConfigBuilder.vue","webpack:///src/components/data/import/importer.vue","webpack:///./src/components/data/import/importer.vue?5b1c","webpack:///./src/components/data/import/importer.vue","webpack:///./src/components/layout/home.vue?e103","webpack:///src/components/layout/home.vue","webpack:///./src/components/layout/home.vue?334a","webpack:///./src/components/layout/home.vue","webpack:///./src/components/gekko/singleGekko.vue?b47b","webpack:///src/components/gekko/singleGekko.vue","webpack:///./src/components/gekko/singleGekko.vue?71ef","webpack:///./src/components/gekko/singleGekko.vue","webpack:///./src/components/global/configbuilder/datasetpicker.vue?0d02","webpack:///./src/components/global/blockSpinner.vue?69ce","webpack:///./src/components/data/import/single.vue?dfe8","webpack:///./src/tools/api.js","webpack:///./src/components/global/configbuilder/papertrader.vue?4204","webpack:///src/components/global/configbuilder/papertrader.vue","webpack:///./src/components/global/configbuilder/papertrader.vue?fdb2","webpack:///./src/components/global/configbuilder/papertrader.vue","webpack:///./src/components/global/mixins/dataset.js","webpack:///./src/components/global/configbuilder/stratpicker.vue?808f","webpack:///./src/components/global/paperTradeSummary.vue?c6c2","webpack:///./src/components/layout/header.vue?b5b8","webpack:///./src/components/backtester/result/roundtripTable.vue?64de","webpack:///src/components/backtester/result/roundtripTable.vue","webpack:///./src/components/backtester/result/roundtripTable.vue?35c4","webpack:///./src/components/backtester/result/roundtripTable.vue","webpack:///./src/components/backtester/result/result.vue?65dd","webpack:///./src/components/global/configbuilder/typepicker.vue?09f6","webpack:///./src/tools/ajax.js","webpack:///./src/components/data/import/importer.vue?3808"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_singleGekko_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_progressBar_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","report","trades","round2","sharpe","round","startBalance","currency","balance","_m","class","profitClass","relativeProfit","staticRenderFns","paperTradeSummaryvue_type_script_lang_js","props","methods","toFixed","computed","global_paperTradeSummaryvue_type_script_lang_js","component","componentNormalizer","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_papertrader_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_new_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","on","config","updateConfig","pendingStratrunner","_e","attrs","href","click","$event","preventDefault","start","gekkoConfigBuildervue_type_template_id_6015a1e6_lang_pug_render","only-tradable","isTradebot","market","updateMarketConfig","type","updateType","stratConfig","updateStrat","settings","updatePaperTrader","gekkoConfigBuildervue_type_template_id_6015a1e6_lang_pug_staticRenderFns","typepickervue_type_template_id_4a1aa84c_lang_pug_render","for","_l","directives","rawName","expression","domProps","checked","_q","selectedTypeIndex","change","typepickervue_type_template_id_4a1aa84c_lang_pug_staticRenderFns","typepickervue_type_script_lang_js","created","emitType","types","$emit","watch","configbuilder_typepickervue_type_script_lang_js","typepicker","gekkoConfigBuildervue_type_script_lang_js","_this","ajax","error","response","candleWriter","toml","parse","part","performanceAnalyzer","enabled","range","strat","paperTrader","components","marketPicker","marketpicker","typePicker","stratPicker","stratpicker","papertrader","assign","trader","valid","validConfig","tradingAdvisor","lodash_default","a","isNaN","candleSize","method","isEmpty","mc","emitConfig","pt","gekko_gekkoConfigBuildervue_type_script_lang_js","gekkoConfigBuilder_component","gekkoConfigBuilder","newvue_type_script_lang_js","spinner","blockSpinner","gekkos","$store","state","watchConfig","raw","pick","vue_runtime_esm","util","extend","requiredHistoricalData","stratSettings","historySize","gekkoConfig","startAt","existingMarketWatcher","optimal","moment","utc","startOf","subtract","unix","available","events","initial","candle","Math","max","format","from","find","exchange","existingTradebot","g","logType","availableApiKeys","apiKeys","val","prev","_this2","gekko","latest","startGekko","err","resp","$router","path","concat","id","_this3","str","alert","includes","startWatcher","routeToGekko","console","next","gekko_newvue_type_script_lang_js","new_component","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_data_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","marked","myRenderer","Renderer","link","title","text","external","newWindow","out","test","setOptions","renderer","$$selectedVal","Array","filter","target","options","selected","map","_value","multiple","e","cur","asset","asst","marketpickervue_type_script_lang_js","exchanges","onlyTradable","each","tradable","onlyImportable","importable","markets","assets","currencies","keys","configbuilder_marketpickervue_type_script_lang_js","strategy","input","composing","rawCandleSize","candleSizeUnit","singularCandleSizeUnit","humanizeDuration","rawStratParams","rawStratParamsError","message","stratpickervue_type_script_lang_js","strategies","emptyStrat","stratParams","empty","params","__empty","parseParams","configbuilder_stratpickervue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_rangepicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","to","rangecreatorvue_type_script_lang_js","now","then","clone","fmt","emitRange","fmtTs","mom","emitManualEntry","isValid","scanned","tab","selectedRangeIndex","selectedRange","ranges","configbuilder_rangecreatorvue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_importConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","blockSpinnervue_type_script_lang_js","global_blockSpinnervue_type_script_lang_js","headervue_type_template_id_0a62d360_lang_pug_render","headervue_type_template_id_0a62d360_lang_pug_staticRenderFns","headervue_type_script_lang_js","layout_headervue_type_script_lang_js","header","footervue_type_template_id_7782dc11_lang_pug_render","version","ui","footervue_type_template_id_7782dc11_lang_pug_staticRenderFns","gekkoPackage","uiPackage","footervue_type_script_lang_js","layout_footervue_type_script_lang_js","footer_component","footer","modalvue_type_template_id_340a7d17_lang_pug_render","innerHTML","content","modalvue_type_template_id_340a7d17_lang_pug_staticRenderFns","messages","disconnected","modalvue_type_script_lang_js","active","warnings","connected","layout_modalvue_type_script_lang_js","modal_component","modal","Appvue_type_script_lang_js","top","bottom","src_Appvue_type_script_lang_js","App_component","addImport","imp","imports","syncImports","mutations_updateImport","update","index","findIndex","import_id","item","updated","updates","set","reduceState","syncGekkos","live","archivedGekkos","archive","mutations_addGekko","objectSpread","mutations_updateGekko","has","event","mutations_archiveGekko","stopped","omit","mutations_errorGekko","errored","errorMessage","mutations_deleteGekko","setGlobalWarning","warning","mutations_syncApiKeys","mutations_syncExchanges","use","vuex_esm","debug","mutations","merge","mutations_namespaceObject","gekkos_mutations_namespaceObject","notifications_mutations_namespaceObject","config_mutations_namespaceObject","Store","connection","reconnected","strict","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_backtestConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_chartWrapper_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_rangecreator_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","chartWrappervue_type_template_id_12bcb8d8_lang_pug_render","clickable","isClicked","width","height","chart4","_data","_trades","_height","price","date","toDate","action","open","dates","prices","svg","d3","select","attr","innerWidth","margin","right","left","margin2","height2","x","scaleUtc","x2","y","scaleLinear","y2","xAxis","axisBottom","xAxis2","yAxis","axisLeft","ticks","brush","brushX","extent","brushed","zoom","scaleExtent","translateExtent","zoomed","line","line2","append","focus","context","domain","min","datum","circles","selectAll","enter","sourceEvent","selection","invert","scaleY","transform","zoomIdentity","scale","translate","_domain","slicedToArray","minIndex","sortedIndex","maxIndex","rescaleX","move","invertX","draw","MIN_CANDLES","chartWrappervue_type_script_lang_js","setTimeout","beforeDestroy","remove","_","size","candles","html","result_chartWrappervue_type_script_lang_js","vue__WEBPACK_IMPORTED_MODULE_1__","vue_router__WEBPACK_IMPORTED_MODULE_3__","router","base","__dirname","routes","redirect","_components_layout_home_vue__WEBPACK_IMPORTED_MODULE_6__","_components_backtester_backtester_vue__WEBPACK_IMPORTED_MODULE_5__","_components_config_config_vue__WEBPACK_IMPORTED_MODULE_10__","_components_data_data_vue__WEBPACK_IMPORTED_MODULE_7__","_components_data_import_importer_vue__WEBPACK_IMPORTED_MODULE_8__","_components_data_import_single_vue__WEBPACK_IMPORTED_MODULE_9__","_components_gekko_list_vue__WEBPACK_IMPORTED_MODULE_11__","_components_gekko_new_vue__WEBPACK_IMPORTED_MODULE_12__","_components_gekko_singleGekko_vue__WEBPACK_IMPORTED_MODULE_13__","_components_global_ws__WEBPACK_IMPORTED_MODULE_14__","store","_store__WEBPACK_IMPORTED_MODULE_4__","el","h","_App_vue__WEBPACK_IMPORTED_MODULE_2__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","apiKeySets","removeApiKey","addApiToggle","openAddApi","apiConfigBuildervue_type_template_id_4a31b09e_lang_pug_render","updateExchange","cred","credentials","$set","upload","apiConfigBuildervue_type_template_id_4a31b09e_lang_pug_staticRenderFns","exchangepickervue_type_template_id_50c29cb0_lang_pug_render","exchangepickervue_type_template_id_50c29cb0_lang_pug_staticRenderFns","exchangepickervue_type_script_lang_js","emitExchange","configbuilder_exchangepickervue_type_script_lang_js","exchangepicker","apiConfigBuildervue_type_script_lang_js","exchangePicker","requires","values","confirm","config_apiConfigBuildervue_type_script_lang_js","apiConfigBuilder_component","apiConfigBuilder","configvue_type_script_lang_js","config_configvue_type_script_lang_js","config_component","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_gekkoConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","scan","printRange","rangepickervue_type_script_lang_js","diff","duration","humanize","reset","configbuilder_rangepickervue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_apiConfigBuilder_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","check","backtestState","run","backtestResult","backtestConfigBuildervue_type_template_id_0b74d9a3_lang_pug_render","dataset","updateDataset","backtestConfigBuildervue_type_template_id_0b74d9a3_lang_pug_staticRenderFns","datasetpickervue_type_template_id_689b8a00_lang_pug_render","datasetScanstate","datasets","setIndex","rangeVisible","openRange","customFrom","customTo","datasetpickervue_type_template_id_689b8a00_lang_pug_staticRenderFns","datasetpickervue_type_script_lang_js","mixins","largest","updateCustomRange","emitSet","configbuilder_datasetpickervue_type_script_lang_js","datasetpicker","backtestConfigBuildervue_type_script_lang_js","datasetPicker","backtest","daterange","backtestResultExporter","writeToDisk","stratUpdates","roundtrips","stratCandles","stratCandleProps","sc","backtester_backtestConfigBuildervue_type_script_lang_js","backtestConfigBuilder_component","backtestConfigBuilder","resultvue_type_template_id_72b63acc_lang_pug_render","performanceReport","resultvue_type_template_id_72b63acc_lang_pug_staticRenderFns","summaryvue_type_template_id_5bfc891d_lang_pug_render","startTime","endTime","timespan","startPrice","endPrice","summaryvue_type_template_id_5bfc891d_lang_pug_staticRenderFns","summaryvue_type_script_lang_js","paperTradeSummary","result_summaryvue_type_script_lang_js","summary_component","summary","resultvue_type_script_lang_js","roundtripTable","resultSummary","chart","chartWrapper","result_resultvue_type_script_lang_js","result_component","backtestervue_type_script_lang_js","backtestable","configBuilder","backtester_backtestervue_type_script_lang_js","backtester_component","skipInitialEvents","skipLatestEvents","trackAllEvents","reduce","payload","latestUpdate","Date","[object Object]","intro","unscannableMakets","viewUnscannable","toggleUnscannable","datavue_type_script_lang_js","data_datavue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_roundtripTable_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_list_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","done","fromEnd","initialized","progress","progressBarvue_type_template_id_2b42ff94_lang_pug_render","style","progressBarvue_type_template_id_2b42ff94_lang_pug_staticRenderFns","progressBarvue_type_script_lang_js","global_progressBarvue_type_script_lang_js","progressBar","singlevue_type_script_lang_js","$route","fromEndMs","current","import_singlevue_type_script_lang_js","single_component","sync_init","commit","sync_sync","bus","$on","imports_sync","gekkos_sync_init","gekkos_sync_sync","gekkos_sync","notifications_sync_init","notifications_sync_sync","ws","notifications_sync","sync_transformMarkets","backendData","exchangesRaw","exchangesTemp","forEach","slug","pair","_pair$pair","exchangeMaxHistoryAge","providesFullHistory","config_sync_init","config_sync_sync","config_sync","store_init","socket","log","info","ws_connect","ReconnectingWebSocket","api","maxReconnectInterval","onopen","onclose","onerror","onmessage","JSON","watchers","status","stratrunners","profit","tradeCompleted","listvue_type_script_lang_js","timer","setInterval","destroyed","clearTimeout","_moment","_x","arguments","toString","b","gekko_listvue_type_script_lang_js","_import","importConfigBuildervue_type_template_id_a8c578c6_lang_pug_render","only-importable","updateRange","importConfigBuildervue_type_template_id_a8c578c6_lang_pug_staticRenderFns","importConfigBuildervue_type_script_lang_js","rangeCreator","rangecreator","importer","import_importConfigBuildervue_type_script_lang_js","importConfigBuilder","importervue_type_script_lang_js","daysApart","import_importervue_type_script_lang_js","importer_component","src","homevue_type_script_lang_js","layout_homevue_type_script_lang_js","isLoading","initialEvents","latestEvents","warmupRemaining","replace","stratName","isArchived","alpha","isStratrunner","watcher","stopGekko","deleteGekko","candleFetch","chartData","singleGekkovue_type_script_lang_js","getCandles","isLive","stratWarmupCompleted","warmupTime","add","stringify","isEqual","hasLeechers","data.events.latest.candle.start","random","res","isArray","_this4","gekko_singleGekkovue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_datasetpicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_blockSpinner_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_single_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","basePath","restPath","wsPath","CONFIG","endpoint","host","port","ssl","toggle","switchToggle","rawPaperTraderParams","rawPaperTraderParamsError","papertradervue_type_script_lang_js","paperTraderParams","reportRoundtrips","configbuilder_papertradervue_type_script_lang_js","mixin","_tools_ajax__WEBPACK_IMPORTED_MODULE_2__","errors","sets","sort","adiff","bdiff","reverse","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_stratpicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_paperTradeSummary_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_header_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","rt","entryAt","exitAt","entryBalance","exitBalance","sign","pnl","roundtripTablevue_type_script_lang_js","isNumber","result_roundtripTablevue_type_script_lang_js","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_result_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_typepicker_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","processResponse","post","superagent__WEBPACK_IMPORTED_MODULE_0___default","_api_js__WEBPACK_IMPORTED_MODULE_2__","superagent_no_cache__WEBPACK_IMPORTED_MODULE_1___default","send","end","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_importer_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default"],"mappings":"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","file":"app.bd655fc0.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([26,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-3-6\"},[_c('table',{staticClass:\"p1\"},[_c('tr',[_c('th',[_vm._v(\"amount of trades\")]),_c('td',[_vm._v(_vm._s(_vm.report.trades))])]),_c('tr',[_c('th',[_vm._v(\"sharpe ratio\")]),_c('td',[_vm._v(_vm._s(_vm.round2(_vm.report.sharpe)))])]),_c('tr',[_c('th',[_vm._v(\"start balance\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.startBalance))+\" \"+_vm._s(_vm.report.currency))])]),_c('tr',[_c('th',[_vm._v(\"final balance\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.balance))+\" \"+_vm._s(_vm.report.currency))])]),_vm._m(0)]),_c('div',{staticClass:\"big txt--right price\",class:_vm.profitClass},[_vm._v(_vm._s(_vm.round(_vm.report.relativeProfit))+\"%\")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('th',[_vm._v(\"simulated profit\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./paperTradeSummary.vue?vue&type=template&id=637e135e&lang=pug\"\nimport script from \"./paperTradeSummary.vue?vue&type=script&lang=js\"\nexport * from \"./paperTradeSummary.vue?vue&type=script&lang=js\"\nimport style0 from \"./paperTradeSummary.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain my2\"},[_c('h3',[_vm._v(\"Start a new gekko\")]),_c('gekko-config-builder',{on:{\"config\":_vm.updateConfig}}),_c('div',{staticClass:\"hr\"}),(_vm.config.valid)?_c('div',{staticClass:\"txt--center\"},[(!_vm.pendingStratrunner)?_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.start($event)}}},[_vm._v(\"Start\")]):_vm._e(),(_vm.pendingStratrunner)?_c('spinner'):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd contain\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Market\")]),_c('market-picker',{attrs:{\"only-tradable\":_vm.isTradebot},on:{\"market\":_vm.updateMarketConfig}})],1),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('type-picker',{on:{\"type\":_vm.updateType}})],1)]),(_vm.type !== \"market watcher\")?[_c('div',{staticClass:\"hr\"}),_c('strat-picker',{staticClass:\"contain my2\",on:{\"stratConfig\":_vm.updateStrat}}),(_vm.type === \"paper trader\")?_c('div',{staticClass:\"hr\"}):_vm._e(),(_vm.type === \"paper trader\")?_c('paper-trader',{on:{\"settings\":_vm.updatePaperTrader}}):_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Type\")]),[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"type\"}},[_vm._v(\"What do you want to do with gekko?\")]),_c('form',{staticClass:\"radio grd\"},_vm._l((_vm.types),function(type,i){return _c('div',{staticClass:\"grd-row m1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedTypeIndex),expression:\"selectedTypeIndex\"}],staticClass:\"grd-row-col-1-6\",attrs:{\"type\":\"radio\"},domProps:{\"value\":i,\"checked\":_vm._q(_vm.selectedTypeIndex,i)},on:{\"change\":function($event){_vm.selectedTypeIndex=i}}}),_c('label',{staticClass:\"grd-row-col-5-6\",attrs:{\"for\":i}},[_vm._v(_vm._s(type))])])}))]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./typepicker.vue?vue&type=template&id=4a1aa84c&lang=pug\"\nimport script from \"./typepicker.vue?vue&type=script&lang=js\"\nexport * from \"./typepicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./typepicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./gekkoConfigBuilder.vue?vue&type=template&id=6015a1e6&lang=pug\"\nimport script from \"./gekkoConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./gekkoConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./gekkoConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./new.vue?vue&type=template&id=da0dc488&lang=pug\"\nimport script from \"./new.vue?vue&type=script&lang=js\"\nexport * from \"./new.vue?vue&type=script&lang=js\"\nimport style0 from \"./new.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=style&index=0&lang=css\"","const marked = require('marked');\n\n// add `target='_blank'` to outgoing links\n\n// https://github.com/chjj/marked/pull/451#issuecomment-49976076\n\nvar myRenderer = new marked.Renderer();\nmyRenderer.link = function(href, title, text) {\n var external, newWindow, out;\n external = /^https?:\\/\\/.+$/.test(href);\n newWindow = external || title === 'newWindow';\n out = \"\" + text + \"\";\n};\n\nmarked.setOptions({renderer: myRenderer});\n\nexport default marked;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mx1\"},[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"exchange\"}},[_vm._v(\"Exchange:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.exchange),expression:\"exchange\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.exchange=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.exchanges),function(market,e){return _c('option',[_vm._v(_vm._s(e))])}))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('label',{attrs:{\"for\":\"currency\"}},[_vm._v(\"Currency:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currency),expression:\"currency\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.currency=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.currencies),function(cur){return _c('option',[_vm._v(_vm._s(cur))])}))])]),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('label',{attrs:{\"for\":\"asset\"}},[_vm._v(\"Asset:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.asset),expression:\"asset\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.asset=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.assets),function(asst){return _c('option',[_vm._v(_vm._s(asst))])}))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./marketpicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./marketpicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./marketpicker.vue?vue&type=template&id=df4a8b2a&lang=pug\"\nimport script from \"./marketpicker.vue?vue&type=script&lang=js\"\nexport * from \"./marketpicker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 px1\"},[_c('h3',[_vm._v(\"Strategy\")]),_c('div',[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"strat\"}},[_vm._v(\"Strategy:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.strategy),expression:\"strategy\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.strategy=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.strategies),function(strat){return _c('option',[_vm._v(_vm._s(strat.name))])}))])]),_c('div',[_c('label',{attrs:{\"for\":\"candleSize\"}},[_vm._v(\"Candle Size\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rawCandleSize),expression:\"rawCandleSize\"}],domProps:{\"value\":(_vm.rawCandleSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.rawCandleSize=$event.target.value}}})]),_c('div',{staticClass:\"grd-row-col-3-6 align\"},[_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.candleSizeUnit),expression:\"candleSizeUnit\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.candleSizeUnit=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',[_vm._v(\"minutes\")]),_c('option',[_vm._v(\"hours\")]),_c('option',[_vm._v(\"days\")])])])])])]),_c('div',[_c('label',{attrs:{\"for\":\"historySize\"}},[_vm._v(\"Warmup period (in \"+_vm._s(_vm.rawCandleSize)+\" \"+_vm._s(_vm.singularCandleSizeUnit)+\" candles):\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.historySize),expression:\"historySize\"}],domProps:{\"value\":(_vm.historySize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.historySize=$event.target.value}}}),_c('em',{staticClass:\"label-like\"},[_vm._v(\"(will use \"+_vm._s(_vm.humanizeDuration(_vm.candleSize * _vm.historySize * 1000 * 60))+\" of data as history)\")])])]),_c('div',{staticClass:\"grd-row-col-3-6 px1\"},[_c('div',[_c('h3',[_vm._v(\"Parameters\")]),_c('p',[_vm._v(_vm._s(_vm.strategy)+\" Parameters:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rawStratParams),expression:\"rawStratParams\"}],staticClass:\"params\",domProps:{\"value\":(_vm.rawStratParams)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.rawStratParams=$event.target.value}}}),(_vm.rawStratParamsError)?_c('p',{staticClass:\"bg--red p1\"},[_vm._v(_vm._s(_vm.rawStratParamsError.message))]):_vm._e()])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./stratpicker.vue?vue&type=template&id=1df710ae&lang=pug\"\nimport script from \"./stratpicker.vue?vue&type=script&lang=js\"\nexport * from \"./stratpicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./stratpicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Daterange\")]),_c('div',[_c('label',{attrs:{\"for\":\"from\"}},[_vm._v(\"From\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.from),expression:\"from\"}],domProps:{\"value\":(_vm.from)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.from=$event.target.value}}})]),_c('div',[_c('label',{attrs:{\"for\":\"to\"}},[_vm._v(\"To\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.to),expression:\"to\"}],domProps:{\"value\":(_vm.to)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.to=$event.target.value}}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./rangecreator.vue?vue&type=template&id=8c51143a&lang=pug\"\nimport script from \"./rangecreator.vue?vue&type=script&lang=js\"\nexport * from \"./rangecreator.vue?vue&type=script&lang=js\"\nimport style0 from \"./rangecreator.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spinner\"},[_c('div',{staticClass:\"rect1\"}),_c('div',{staticClass:\"rect2\"}),_c('div',{staticClass:\"rect3\"}),_c('div',{staticClass:\"rect4\"})])}]\n\nexport { render, staticRenderFns }","// http://tobiasahlin.com/spinkit/\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./blockSpinner.vue?vue&type=template&id=45447ea6&lang=pug\"\nimport script from \"./blockSpinner.vue?vue&type=script&lang=js\"\nexport * from \"./blockSpinner.vue?vue&type=script&lang=js\"\nimport style0 from \"./blockSpinner.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('top'),_c('div',{staticClass:\"fill\"},[_c('router-view',{staticClass:\"view\"})],1),_c('bottom'),_c('modal')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"top\"}}),_vm._m(0),_c('nav',{staticClass:\"bg--light-gray\"},[_c('div',{staticClass:\"menu contain\"},[_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/home\"}},[_vm._v(\"Home\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/live-gekkos\"}},[_vm._v(\"Live Gekkos\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/backtest\"}},[_vm._v(\"Backtest\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/data\"}},[_vm._v(\"Local data\")]),_c('router-link',{staticClass:\"py1\",attrs:{\"to\":\"/config\"}},[_vm._v(\"Config\")]),_c('a',{staticClass:\"py1\",attrs:{\"href\":\"https://gekko.wizb.it/docs/introduction/about_gekko.html\",\"target\":\"_blank\"}},[_vm._v(\"Documentation\")])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"bg--off-white grd\"},[_c('div',{staticClass:\"contain grd-row\"},[_c('h3',{staticClass:\"py1 px2 col-2\"},[_vm._v(\"Gekko UI\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=0a62d360&lang=pug\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.vue?vue&type=script&lang=js\"\nimport style0 from \"./header.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"p2 bg--off-white\"},[_c('div',{staticClass:\"contain\"},[_vm._m(0),_c('p',[_vm._v(\"Using Gekko v\"+_vm._s(_vm.version.gekko)+\" and Gekko UI v\"+_vm._s(_vm.version.ui)+\".\")])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('em',[_vm._v(\"Use Gekko at your own risk.\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./footer.vue?vue&type=template&id=7782dc11&lang=pug\"\nimport script from \"./footer.vue?vue&type=script&lang=js\"\nexport * from \"./footer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.active)?_c('div',[_c('div',{attrs:{\"id\":\"modal-background\"}}),_c('div',{staticClass:\"modal\",attrs:{\"id\":\"modal\"}},[_c('div',{staticClass:\"modal-guts\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./modal.vue?vue&type=template&id=340a7d17&lang=pug\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\nimport style0 from \"./modal.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=29e7b8c2&lang=pug\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\n\nexport const addImport = (state, imp) => {\n state.imports.push(imp);\n return state;\n}\n\nexport const syncImports = (state, imports) => {\n state.imports = imports;\n return state;\n}\n\nexport const updateImport = (state, update) => {\n let index = state.imports.findIndex(i => i.id === update.import_id);\n let item = state.imports[index];\n if(!item)\n return state;\n\n let updated = Vue.util.extend(item, update.updates);\n Vue.set(state.imports, index, updated);\n\n return state;\n}","import Vue from 'vue'\nimport _ from 'lodash';\nconst reduceState = require('../../../../../state/reduceState');\n\nexport const syncGekkos = (state, data) => {\n if(!data) {\n return state;\n }\n\n state.gekkos = data.live;\n state.archivedGekkos = data.archive;\n return state;\n}\n\nexport const addGekko = (state, gekko) => {\n state.gekkos = {\n ...state.gekkos,\n [gekko.id]: gekko\n }\n return state;\n}\n\nexport const updateGekko = (state, update) => {\n if(!update.id || !_.has(state.gekkos, update.id)) {\n return console.error('cannot update unknown gekko..');;\n }\n\n state.gekkos = {\n ...state.gekkos,\n [update.id]: reduceState(state.gekkos[update.id], update.event)\n }\n return state;\n}\n\nexport const archiveGekko = (state, id) => {\n if(!_.has(state.gekkos, id)) {\n return console.error('cannot archive unknown gekko..');\n }\n\n state.archivedGekkos = {\n ...state.archivedGekkos,\n [id]: {\n ...state.gekkos[id],\n stopped: true,\n active: false\n }\n }\n\n state.gekkos = _.omit(state.gekkos, id);\n return state;\n}\n\nexport const errorGekko = (state, data) => {\n if(!_.has(state.gekkos, data.id)) {\n return console.error('cannot error unknown gekko..');\n }\n\n state.gekkos = {\n ...state.gekkos,\n [data.id]: {\n ...state.gekkos[data.id],\n errored: true,\n errorMessage: data.error\n }\n }\n\n return state;\n}\n\nexport const deleteGekko = (state, id) => {\n if(!_.has(state.archivedGekkos, id)) {\n return console.error('cannot delete unknown gekko..');\n }\n\n state.archivedGekkos = _.omit(state.archivedGekkos, id);\n return state;\n}","import Vue from 'vue'\nimport _ from 'lodash'\n\nexport const setGlobalWarning = (state, warning) => {\n state.warnings[warning.key] = warning.value;\n return state;\n}","import Vue from 'vue'\n\nexport const syncApiKeys = (state, apiKeys) => {\n Vue.set(state, 'apiKeys', apiKeys);\n return state;\n}\n\nexport const syncExchanges = (state, exchanges) => {\n Vue.set(state, 'exchanges', exchanges);\n return state;\n}","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport _ from 'lodash'\n\nimport * as importMutations from './modules/imports/mutations'\nimport * as gekkoMutations from './modules/gekkos/mutations'\nimport * as notificationMutations from './modules/notifications/mutations'\nimport * as configMutations from './modules/config/mutations'\n\nVue.use(Vuex);\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nlet mutations = {};\n\n_.merge(mutations, importMutations);\n_.merge(mutations, gekkoMutations);\n_.merge(mutations, notificationMutations);\n_.merge(mutations, configMutations);\n\nexport default new Vuex.Store({\n state: {\n warnings: {\n connected: true, // assume we will connect\n },\n imports: [],\n gekkos: {},\n archivedGekkos: {},\n connection: {\n disconnected: false,\n reconnected: false\n },\n apiKeys: [],\n exchanges: {}\n },\n mutations,\n strict: debug\n})","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangecreator.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ clickable: !_vm.isClicked },attrs:{\"id\":\"chartWrapper\"}},[_c('div',{staticClass:\"shield\",on:{\"click\":function($event){$event.preventDefault();return _vm.click($event)}}}),_c('svg',{attrs:{\"id\":\"chart\",\"width\":\"960\",\"height\":_vm.height}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import _ from 'lodash';\n// global moment\n\nexport default function(_data, _trades, _height) {\n\n const trades = _trades.map(t => {\n return {\n price: t.price,\n date: moment.utc(t.date).toDate(),\n action: t.action\n }\n });\n\n const data = _data.map(c => {\n return {\n price: c.open,\n date: moment.utc(c.start).toDate()\n }\n });\n\n var dates = data.map(c => +c.date);\n var prices = data.map(c => +c.price)\n\n var svg = d3.select(\"#chart\");\n\n svg.attr(\"width\", window.innerWidth - 20);\n\n var margin = {top: 20, right: 20, bottom: 110, left: 40};\n var height = _height - margin.top - margin.bottom;\n var margin2 = {top: _height - 70, right: 20, bottom: 30, left: 40};\n var width = +svg.attr(\"width\") - margin.left - margin.right;\n var height2 = _height - margin2.top - margin2.bottom;\n\n var x = d3.scaleUtc().range([0, width]),\n x2 = d3.scaleUtc().range([0, width]),\n y = d3.scaleLinear().range([height, 0]),\n y2 = d3.scaleLinear().range([height2, 0]);\n\n var xAxis = d3.axisBottom(x),\n xAxis2 = d3.axisBottom(x2),\n yAxis = d3.axisLeft(y).ticks(_height / 50);\n\n var brush = d3.brushX()\n .extent([[0, 0], [width, height2]])\n .on(\"brush end\", brushed);\n\n var zoom = d3.zoom()\n .scaleExtent([1, 100])\n .translateExtent([[0, 0], [width, height]])\n .extent([[0, 0], [width, height]])\n .on(\"zoom\", zoomed);\n\n var line = d3.line()\n .x(function(d) { return x(d.date); })\n .y(function(d) { return y(d.price); });\n\n var line2 = d3.line()\n .x(function(d) { return x2(d.date); })\n .y(function(d) { return y2(d.price); });\n\n svg.append(\"defs\").append(\"clipPath\")\n .attr(\"id\", \"clip\")\n .append(\"rect\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n var focus = svg.append(\"g\")\n .attr(\"class\", \"focus\")\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n var context = svg.append(\"g\")\n .attr(\"class\", \"context\")\n .attr(\"transform\", \"translate(\" + margin2.left + \",\" + margin2.top + \")\");\n\n x.domain(d3.extent(data, function(d) { return d.date; }));\n y.domain([\n d3.min(prices) * 0.99,\n d3.max(prices) * 1.01\n ]);\n x2.domain(x.domain());\n y2.domain(y.domain());\n\n focus.append(\"path\")\n .datum(data)\n .attr(\"class\", \"line price\")\n .attr(\"d\", line);\n\n focus.append(\"g\")\n .attr(\"class\", \"axis axis--x\")\n .attr(\"transform\", \"translate(0,\" + height + \")\")\n .call(xAxis);\n\n focus.append(\"g\")\n .attr(\"class\", \"axis axis--y\")\n .call(yAxis);\n\n context.append(\"path\")\n .datum(data)\n .attr(\"class\", \"line\")\n .attr(\"d\", line2);\n\n context.append(\"g\")\n .attr(\"class\", \"axis axis--x\")\n .attr(\"transform\", \"translate(0,\" + height2 + \")\")\n .call(xAxis2);\n\n var circles = svg\n .append('g')\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .selectAll(\"circle\")\n .data(trades)\n .enter().append(\"circle\")\n .attr('class', function(d) { return d.action })\n .attr(\"cx\", function(d) { return x(d.date); })\n .attr(\"cy\", function(d) { return y(d.price); })\n .attr('r', 5);\n\n var brushCircles = context\n .append('g')\n // .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .selectAll(\"circle\")\n .data(trades)\n .enter().append(\"circle\")\n .attr('class', function(d) { return d.action })\n .attr(\"cx\", function(d) { return x2(d.date); })\n .attr(\"cy\", function(d) { return y2(d.price); })\n .attr('r', 3);\n\n\n context.append(\"g\")\n .attr(\"class\", \"brush\")\n .call(brush)\n .call(brush.move, x.range());\n\n svg.append(\"rect\")\n .attr(\"class\", \"zoom\")\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .call(zoom);\n\n function brushed() {\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === \"zoom\") return; // ignore brush-by-zoom\n var s = d3.event.selection || x2.range();\n x.domain(s.map(x2.invert, x2));\n\n scaleY(x.domain());\n\n svg.select(\".axis--y\")\n .call(yAxis);\n\n circles\n .attr(\"cx\", function(d) { return x(d.date); })\n .attr(\"cy\", function(d) { return y(d.price); })\n\n focus.select(\".line\").attr(\"d\", line);\n focus.select(\".axis--x\").call(xAxis);\n svg.select(\".zoom\").call(zoom.transform, d3.zoomIdentity\n .scale(width / (s[1] - s[0]))\n .translate(-s[0], 0));\n }\n\n function scaleY(domain) {\n let [min, max] = domain;\n\n let minIndex = _.sortedIndex(dates, min);\n let maxIndex = _.sortedIndex(dates, max);\n\n let set = prices.slice(minIndex, maxIndex);\n y.domain([\n d3.min(set) * 0.9995,\n d3.max(set) * 1.0005\n ]);\n }\n\n function zoomed() {\n if (d3.event.sourceEvent && d3.event.sourceEvent.type === \"brush\") return; // ignore zoom-by-brush\n var t = d3.event.transform;\n\n scaleY(t.rescaleX(x2).domain()); \n\n svg.select(\".axis--y\")\n .call(yAxis);\n\n x.domain(t.rescaleX(x2).domain());\n focus.select(\".line\").attr(\"d\", line);\n\n circles\n .attr(\"cx\", function(d) { return x(d.date); })\n .attr(\"cy\", function(d) { return y(d.price); })\n\n\n focus.select(\".axis--x\").call(xAxis);\n context.select(\".brush\").call(brush.move, x.range().map(t.invertX, t));\n }\n}","export const draw = function(message) {\n d3.select(\"#chart\").append(\"text\")\n .attr('class', 'message')\n .attr('x', 150)\n .attr('y', 150)\n .text(message);\n}\n\nexport const clear = function() {\n d3.select(\"#chart\").find('text').remove();\n}","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chartWrapper.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./chartWrapper.vue?vue&type=template&id=12bcb8d8&lang=pug\"\nimport script from \"./chartWrapper.vue?vue&type=script&lang=js\"\nexport * from \"./chartWrapper.vue?vue&type=script&lang=js\"\nimport style0 from \"./chartWrapper.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\n\nimport VueRouter from 'vue-router'\nVue.use(VueRouter);\n\nimport store from './store'\n\nimport backtester from './components/backtester/backtester.vue'\nimport home from './components/layout/home.vue'\n\nimport data from './components/data/data.vue'\nimport importer from './components/data/import/importer.vue'\nimport singleImport from './components/data/import/single.vue'\nimport config from './components/config/config.vue'\n\nimport gekkoList from './components/gekko/list.vue'\nimport newGekko from './components/gekko/new.vue'\nimport singleGekko from './components/gekko/singleGekko.vue'\nimport { connect as connectWS } from './components/global/ws'\n\nconst router = new VueRouter({\n mode: 'hash',\n base: __dirname,\n routes: [\n { path: '/', redirect: '/home' },\n { path: '/home', component: home },\n { path: '/backtest', component: backtester },\n { path: '/config', component: config },\n { path: '/data', component: data },\n { path: '/data/importer', component: importer },\n { path: '/data/importer/import/:id', component: singleImport },\n { path: '/live-gekkos', component: gekkoList },\n { path: '/live-gekkos/new', component: newGekko },\n { path: '/live-gekkos/:id', component: singleGekko },\n ]\n});\n\n// setup some stuff\nconnectWS();\n\nnew Vue({\n router,\n store,\n el: '#app',\n render: h => h(App)\n})","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('h2',[_vm._v(\"Config\")]),_c('div',{staticClass:\"hr\"}),_c('h3',[_vm._v(\"Available API keys\")]),(!_vm.apiKeySets.length)?_c('p',[_c('em',[_vm._v(\"You don't have any API keys yet.\")])]):_vm._e(),_c('ul',_vm._l((_vm.apiKeySets),function(exchange){return _c('li',[_vm._v(_vm._s(exchange)+\" (\"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.removeApiKey(exchange)}}},[_vm._v(\"remove\")]),_vm._v(\")\")])})),(!_vm.addApiToggle)?_c('a',{staticClass:\"btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.openAddApi($event)}}},[_vm._v(\"Add an API key\")]):_vm._e(),(_vm.addApiToggle)?[_c('div',{staticClass:\"hr\"}),_c('apiConfigBuilder')]:_vm._e(),_c('div',{staticClass:\"hr\"})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd contain\"},[_c('h3',[_vm._v(\"Add an API key\")]),_c('p',[_vm._v(\"Make sure that the API key has the permissions to create and cancel orders and view balances.\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Exchange\")]),_c('exchange-picker',{attrs:{\"only-tradable\":\"true\"},on:{\"exchange\":_vm.updateExchange}})],1),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Credentials\")]),_vm._l((_vm.requires),function(cred){return [_c('label',[_vm._v(_vm._s(cred))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.credentials[cred]),expression:\"credentials[cred]\"}],domProps:{\"value\":(_vm.credentials[cred])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.credentials, cred, $event.target.value)}}})]})],2)]),_c('div',{staticClass:\"txt--center\"},[_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.upload($event)}}},[_vm._v(\"Add\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mx1\"},[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"exchange\"}},[_vm._v(\"Exchange:\")]),_c('div',{staticClass:\"custom-select button\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.exchange),expression:\"exchange\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.exchange=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.exchanges),function(market,e){return _c('option',[_vm._v(_vm._s(e))])}))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exchangepicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exchangepicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./exchangepicker.vue?vue&type=template&id=50c29cb0&lang=pug\"\nimport script from \"./exchangepicker.vue?vue&type=script&lang=js\"\nexport * from \"./exchangepicker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./apiConfigBuilder.vue?vue&type=template&id=4a31b09e&lang=pug\"\nimport script from \"./apiConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./apiConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./apiConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./config.vue?vue&type=template&id=d21dbde6&lang=pug\"\nimport script from \"./config.vue?vue&type=script&lang=js\"\nexport * from \"./config.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gekkoConfigBuilder.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Daterange\")]),(_vm.tab === \"scan\")?[(!_vm.scanned)?_c('div',{staticClass:\"txt--center\"},[_c('a',{staticClass:\"w100--s btn--primary scan-btn\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"Scan available data\")])]):_vm._e(),(_vm.scanned == \"fetching\")?_c('div',{staticClass:\"txt--center\"},[_c('p',{staticClass:\"scan-btn\"},[_vm._v(\"Scanning..\")])]):_vm._e(),(_vm.scanned == true)?[(_vm.ranges.length === 0)?[_c('p',[_c('strong',[_vm._v(\"Unable to find any local data, do you have local data available for\\\"\"+_vm._s(_vm.config.watch.exchange)+\":\"+_vm._s(_vm.config.watch.currency)+\"/\"+_vm._s(_vm.config.watch.asset)+\"\\\"?\")])])]:[_c('label',{staticClass:\"wrapper\",attrs:{\"for\":\"exchange\"}},[_vm._v(\"Run simulation over:\")]),_c('form',{staticClass:\"radio grd\"},_vm._l((_vm.ranges),function(range,i){return _c('div',{staticClass:\"grd-row m1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedRangeIndex),expression:\"selectedRangeIndex\"}],staticClass:\"grd-row-col-1-6\",attrs:{\"type\":\"radio\"},domProps:{\"value\":i,\"checked\":_vm._q(_vm.selectedRangeIndex,i)},on:{\"change\":function($event){_vm.selectedRangeIndex=i}}}),_c('label',{staticClass:\"grd-row-col-5-6\",attrs:{\"for\":i}},[_vm._v(_vm._s(_vm.printRange(range)))])])}))],_c('p',[_c('em',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"rescan\")])])])]:_vm._e(),_c('p',{staticClass:\"txt--center\"},[_c('em',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.tab = \"manual\"}}},[_vm._v(\"Or manually set a daterange\")])])])]:_vm._e(),(_vm.tab === \"manual\")?[_c('div',[_c('label',{attrs:{\"for\":\"from\"}},[_vm._v(\"From:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.from),expression:\"from\"}],domProps:{\"value\":(_vm.from)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.from=$event.target.value}}})]),_c('div',[_c('label',{attrs:{\"for\":\"to\"}},[_vm._v(\"To:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.to),expression:\"to\"}],domProps:{\"value\":(_vm.to)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.to=$event.target.value}}})]),_c('p',{staticClass:\"txt--center\"}),_c('em',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.tab = \"scan\"}}},[_vm._v(\"Or scan for a daterange\")])])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rangepicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./rangepicker.vue?vue&type=template&id=5037047f&lang=pug\"\nimport script from \"./rangepicker.vue?vue&type=script&lang=js\"\nexport * from \"./rangepicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./rangepicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apiConfigBuilder.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',{staticClass:\"contain\"},[_vm._v(\"Backtest\")]),_c('div',{staticClass:\"hr\"}),_c('config-builder',{on:{\"config\":_vm.check}}),(_vm.backtestable)?_c('div',[_c('div',{staticClass:\"txt--center\"},[(_vm.backtestState !== \"fetching\")?_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.run($event)}}},[_vm._v(\"Backtest\")]):_vm._e(),(_vm.backtestState === \"fetching\")?_c('div',{staticClass:\"scan-btn\"},[_c('p',[_vm._v(\"Running backtest..\")]),_c('spinner')],1):_vm._e()])]):_vm._e(),(_vm.backtestResult && _vm.backtestState === \"fetched\")?_c('result',{attrs:{\"result\":_vm.backtestResult}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('dataset-picker',{staticClass:\"my2 contain\",on:{\"dataset\":_vm.updateDataset}}),_c('div',{staticClass:\"hr\"}),_c('strat-picker',{staticClass:\"my2 contain\",on:{\"stratConfig\":_vm.updateStrat}}),_c('div',{staticClass:\"hr\"}),_c('paper-trader',{staticClass:\"contain\",on:{\"settings\":_vm.updatePaperTrader}}),_c('div',{staticClass:\"hr\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Select a dataset\")]),(_vm.datasetScanstate === \"idle\")?_c('div',{staticClass:\"txt--center my2\"},[_c('a',{staticClass:\"w100--s btn--primary scan-btn\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"Scan available data\")])]):_vm._e(),(_vm.datasetScanstate === \"scanning\")?_c('div',{staticClass:\"txt--center my2\"},[_c('spinner')],1):_vm._e(),(_vm.datasetScanstate === \"scanned\")?_c('div',{staticClass:\"my2\"},[(_vm.datasets.length != 0)?_c('div',[_c('table',{staticClass:\"full\"},[_vm._m(0),_c('tbody',_vm._l((_vm.datasets),function(set,i){return _c('tr',[_c('td',{staticClass:\"radio\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.setIndex),expression:\"setIndex\"}],attrs:{\"type\":\"radio\",\"name\":\"dataset\",\"id\":set.id},domProps:{\"value\":i,\"checked\":_vm._q(_vm.setIndex,i)},on:{\"change\":function($event){_vm.setIndex=i}}})]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(set.exchange))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(set.currency))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(set.asset))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(_vm.fmt(set.from)))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(_vm.fmt(set.to)))])]),_c('td',[_c('label',{attrs:{\"for\":set.id}},[_vm._v(_vm._s(_vm.humanizeDuration(set.to.diff(set.from))))])])])}))]),(!_vm.rangeVisible)?_c('a',{staticClass:\"btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.openRange($event)}}},[_vm._v(\"Adjust range\")]):_vm._e(),(_vm.rangeVisible)?[_c('div',[_c('label',{attrs:{\"for\":\"customFrom\"}},[_vm._v(\"From:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customFrom),expression:\"customFrom\"}],domProps:{\"value\":(_vm.customFrom)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.customFrom=$event.target.value}}})]),_c('div',[_c('label',{attrs:{\"for\":\"customTo\"}},[_vm._v(\"To:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customTo),expression:\"customTo\"}],domProps:{\"value\":(_vm.customTo)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.customTo=$event.target.value}}})])]:_vm._e()],2):_c('em',[_vm._v(\"No Data found \"),_c('a',{attrs:{\"href\":\"#/data/importer\"}},[_vm._v(\"Lets add some\")])])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th'),_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"from\")]),_c('th',[_vm._v(\"to\")]),_c('th',[_vm._v(\"duration\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./datasetpicker.vue?vue&type=template&id=689b8a00&lang=pug\"\nimport script from \"./datasetpicker.vue?vue&type=script&lang=js\"\nexport * from \"./datasetpicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./datasetpicker.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtestConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./backtestConfigBuilder.vue?vue&type=template&id=0b74d9a3&lang=pug\"\nimport script from \"./backtestConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./backtestConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./backtestConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"hr contain\"}),_vm._m(0),_c('result-summary',{attrs:{\"report\":_vm.result.performanceReport}}),_c('div',{staticClass:\"hr contain\"}),_c('chart',{attrs:{\"data\":_vm.candles,\"height\":\"500\"}}),_c('div',{staticClass:\"hr contain\"}),_c('roundtripTable',{attrs:{\"roundtrips\":_vm.result.roundtrips}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('h3',[_vm._v(\"Backtest result\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('div',{staticClass:\"grd-row summary\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('table',{staticClass:\"p1\"},[_c('tr',[_c('th',[_vm._v(\"start time\")]),_c('td',[_vm._v(_vm._s(_vm.report.startTime))])]),_c('tr',[_c('th',[_vm._v(\"end time\")]),_c('td',[_vm._v(_vm._s(_vm.report.endTime))])]),_c('tr',[_c('th',[_vm._v(\"timespan\")]),_c('td',[_vm._v(_vm._s(_vm.report.timespan))])]),_c('tr',[_c('th',[_vm._v(\"start price\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.startPrice))+\" \"+_vm._s(_vm.report.currency))])]),_c('tr',[_c('th',[_vm._v(\"end price\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.endPrice))+\" \"+_vm._s(_vm.report.currency))])]),_c('tr',[_c('th',[_vm._v(\"market\")]),_c('td',[_vm._v(_vm._s(_vm.round(_vm.report.market))+\"%\")])])])]),_c('paperTradeSummary',{attrs:{\"report\":_vm.report}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./summary.vue?vue&type=template&id=5bfc891d&lang=pug\"\nimport script from \"./summary.vue?vue&type=script&lang=js\"\nexport * from \"./summary.vue?vue&type=script&lang=js\"\nimport style0 from \"./summary.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./result.vue?vue&type=template&id=72b63acc&lang=pug\"\nimport script from \"./result.vue?vue&type=script&lang=js\"\nexport * from \"./result.vue?vue&type=script&lang=js\"\nimport style0 from \"./result.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtester.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backtester.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./backtester.vue?vue&type=template&id=da4202e8&lang=pug\"\nimport script from \"./backtester.vue?vue&type=script&lang=js\"\nexport * from \"./backtester.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Redux/vuex inspired reducer, reduces an event into a gekko state.\n// NOTE: this is used by the backend as well as the frontend.\n\nconst skipInitialEvents = ['marketUpdate'];\nconst skipLatestEvents = ['marketStart', 'stratWarmupCompleted'];\nconst trackAllEvents = ['tradeCompleted', 'advice', 'roundtrip'];\n\nconst reduce = (state, event) => {\n const type = event.type;\n const payload = event.payload;\n\n state = {\n ...state,\n latestUpdate: new Date()\n }\n\n if(trackAllEvents.includes(type)) {\n if(!state.events[type]) {\n state = {\n ...state,\n events: {\n ...state.events,\n [type]: [ payload ]\n }\n }\n } else {\n state = {\n ...state,\n events: {\n ...state.events,\n [type]: [ ...state.events[type], payload ]\n }\n }\n }\n }\n\n if(!state.events.initial[type] && !skipInitialEvents.includes(type)) {\n state = {\n ...state,\n events: {\n ...state.events,\n initial: {\n ...state.events.initial,\n [type]: payload\n }\n }\n }\n }\n\n if(!skipLatestEvents.includes(type)) {\n state = {\n ...state,\n events: {\n ...state.events,\n latest: {\n ...state.events.latest,\n [type]: payload\n }\n }\n }\n }\n\n return state;\n}\n\n// export default reduce;\nmodule.exports = reduce;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain\"},[_c('div',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.intro)}}),_c('div',{staticClass:\"hr\"}),_c('h2',[_vm._v(\"Available datasets\")]),(_vm.datasetScanstate === \"idle\")?_c('div',{staticClass:\"txt--center my2\"},[_c('a',{staticClass:\"w100--s btn--primary scan-btn\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scan($event)}}},[_vm._v(\"Scan available data\")])]):_vm._e(),(_vm.datasetScanstate === \"scanning\")?_c('div',{staticClass:\"txt--center my2\"},[_c('spinner')],1):_vm._e(),(_vm.datasetScanstate === \"scanned\")?_c('div',{staticClass:\"my2\"},[(_vm.unscannableMakets.length)?_c('div',{staticClass:\"bg--orange p1 warning my1\"},[(!_vm.viewUnscannable)?_c('p',{staticClass:\"clickable\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleUnscannable($event)}}},[_vm._v(\"Some markets were unscannable, click here for details.\")]):_vm._e(),(_vm.viewUnscannable)?[_c('p',[_vm._v(\"Unable to find datasets in the following markets:\")]),_vm._l((_vm.unscannableMakets),function(market){return _c('div',{staticClass:\"mx2\"},[_vm._v(\"- \"+_vm._s(market.exchange)+\":\"+_vm._s(market.currency)+\":\"+_vm._s(market.asset))])})]:_vm._e()],2):_vm._e(),(_vm.datasets.length)?[_c('table',{staticClass:\"full data\"},[_vm._m(0),_c('tbody',_vm._l((_vm.datasets),function(set){return _c('tr',[_c('td',[_vm._v(_vm._s(set.exchange))]),_c('td',[_vm._v(_vm._s(set.currency))]),_c('td',[_vm._v(_vm._s(set.asset))]),_c('td',[_vm._v(_vm._s(_vm.fmt(set.from)))]),_c('td',[_vm._v(_vm._s(_vm.fmt(set.to)))]),_c('td',[_vm._v(_vm._s(_vm.humanizeDuration(set.to.diff(set.from))))])])}))])]:_vm._e(),(!_vm.datasets.length)?[_c('p',[_vm._v(\"It looks like you don't have any local data yet.\")])]:_vm._e()],2):_vm._e(),_c('div',{staticClass:\"my2\"},[_c('h2',[_vm._v(\"Import more data\")]),_c('p',{staticClass:\"text\"},[_vm._v(\"You can easily import more market data directly from exchanges using the importer.\")]),_c('router-link',{staticClass:\"btn--primary\",attrs:{\"to\":\"/data/importer\"}},[_vm._v(\"Go to the importer!\")])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"from\")]),_c('th',[_vm._v(\"to\")]),_c('th',[_vm._v(\"duration\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./data.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./data.vue?vue&type=template&id=6009d44c&lang=pug\"\nimport script from \"./data.vue?vue&type=script&lang=js\"\nexport * from \"./data.vue?vue&type=script&lang=js\"\nimport style0 from \"./data.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain my2\"},[(_vm.data && !_vm.data.done)?_c('div',[_c('h2',[_vm._v(\"Importing data..\")]),_c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"grd-row\"},[_vm._m(0),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.data.watch.exchange))])]),_c('div',{staticClass:\"grd-row\"},[_vm._m(1),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.data.watch.currency)+\"/\"+_vm._s(_vm.data.watch.asset))])])]),_c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"grd-row\"},[_vm._m(2),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.from)))])]),_c('div',{staticClass:\"grd-row\"},[_vm._m(3),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.to)))])]),(_vm.initialized)?_c('div',{staticClass:\"grd-row\"},[_vm._m(4),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.latest)))])]):_vm._e(),(_vm.initialized)?_c('div',{staticClass:\"grd-row\"},[_vm._m(5),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fromEnd))])]):_vm._e()]),(!_vm.initialized)?_c('spinner'):_vm._e(),(_vm.initialized)?_c('div',{staticClass:\"contain\"},[_c('progressBar',{attrs:{\"progress\":_vm.progress}})],1):_vm._e(),_c('p',[_c('em',[_vm._v(\"(you don't have to wait until the import is done,you can already start \"),_c('router-link',{attrs:{\"to\":\"/backtest\"}},[_vm._v(\"backtesting\")]),_vm._v(\").\")],1)])],1):_vm._e(),(_vm.data && _vm.data.done)?_c('div',{staticClass:\"txt--center\"},[_c('h2',[_vm._v(\"Import done\")]),_c('p',[_vm._v(\" Go and \"),_c('router-link',{attrs:{\"to\":\"/backtest\"}},[_vm._v(\"backtest\")]),_vm._v(\" with your new data!\")],1)]):_vm._e(),(!_vm.data)?_c('div',{staticClass:\"txt--center\"},[_c('h2',[_vm._v(\"ERROR: Unknown import\")]),_c('p',[_c('I',[_vm._v(\"don't know this import..\")])],1)]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Market:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Currency/Asset:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"From:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"To:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Imported data until:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-2-6\"},[_c('strong',[_vm._v(\"Remaining:\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.progress)?_c('div',{staticClass:\"progressbarWrapper\"},[_c('p',[_c('strong',[_vm._v(_vm._s(_vm.round(_vm.progress))+\"%\")])]),_c('div',{staticClass:\"progressbar\"},[_c('div',{style:({width: _vm.progress + \"%\"})})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// http://stackoverflow.com/questions/7190898/progress-bar-with-html-and-css\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./progressBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./progressBar.vue?vue&type=template&id=2b42ff94&lang=pug\"\nimport script from \"./progressBar.vue?vue&type=script&lang=js\"\nexport * from \"./progressBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./progressBar.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./single.vue?vue&type=template&id=b930fa5e&lang=pug\"\nimport script from \"./single.vue?vue&type=script&lang=js\"\nexport * from \"./single.vue?vue&type=script&lang=js\"\nimport style0 from \"./single.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { get } from '../../../tools/ajax'\nimport store from '../../'\nimport { bus } from '../../../components/global/ws'\n\nconst init = () => {\n get('imports', (err, resp) => {\n store.commit('syncImports', resp);\n });\n}\n\nconst sync = () => {\n bus.$on('import_update', data => {\n store.commit('updateImport', data);\n });\n}\n\nexport default function() {\n init();\n sync();\n}","import { get } from '../../../tools/ajax'\nimport store from '../../'\nimport { bus } from '../../../components/global/ws'\nimport _ from 'lodash'\n\nconst init = () => {\n get('gekkos', (err, resp) => {\n const gekkos = resp;\n store.commit('syncGekkos', gekkos);\n });\n}\n\nconst sync = () => {\n bus.$on('gekko_new', data => store.commit('addGekko', data.state));\n bus.$on('gekko_event', data => store.commit('updateGekko', data));\n bus.$on('gekko_archived', data => store.commit('archiveGekko', data.id));\n bus.$on('gekko_error', data => store.commit('errorGekko', data));\n bus.$on('gekko_deleted', data => store.commit('deleteGekko', data.id));\n\n // unused:\n // bus.$on('gekko_stopped', data => store.commit('x', data.id));\n // bus.$on('gekko_deleted', data => store.commit('x', data.id));\n}\n\nexport default function() {\n init();\n sync();\n}","import store from '../../'\nimport { bus } from '../../../components/global/ws'\n\nconst init = () => {}\n\nconst sync = () => {\n bus.$on('WS_STATUS_CHANGE', ws => {\n return store.commit('setGlobalWarning', {key: 'connected', value: ws.connected});\n });\n}\n\nexport default function() {\n init();\n sync();\n}","import { get } from '../../../tools/ajax'\nimport store from '../../'\nimport { bus } from '../../../components/global/ws'\n\nconst transformMarkets = backendData => {\n if(!backendData) {\n return {};\n }\n\n var exchangesRaw = backendData;\n var exchangesTemp = {};\n\n exchangesRaw.forEach(e => {\n exchangesTemp[e.slug] = exchangesTemp[e.slug] || {markets: {}};\n\n e.markets.forEach( pair => {\n let [ currency, asset ] = pair['pair'];\n exchangesTemp[e.slug].markets[currency] = exchangesTemp[e.slug].markets[currency] || [];\n exchangesTemp[e.slug].markets[currency].push( asset );\n });\n\n if (\"exchangeMaxHistoryAge\" in e) {\n exchangesTemp[e.slug].exchangeMaxHistoryAge = e.exchangeMaxHistoryAge;\n }\n\n exchangesTemp[e.slug].importable = e.providesFullHistory ? true : false;\n exchangesTemp[e.slug].tradable = e.tradable ? true : false;\n exchangesTemp[e.slug].requires = e.requires;\n });\n\n return exchangesTemp;\n}\n\n\nconst init = () => {\n get('apiKeys', (err, resp) => {\n store.commit('syncApiKeys', resp);\n });\n\n get('exchanges', (err, resp) => {\n store.commit('syncExchanges', transformMarkets(resp));\n })\n}\n\nconst sync = () => {\n bus.$on('apiKeys', data => {\n store.commit('syncApiKeys', data.exchanges);\n });\n}\n\nexport default function() {\n init();\n sync();\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport syncImports from './modules/imports/sync'\nimport syncGekkos from './modules/gekkos/sync'\nimport syncNotifications from './modules/notifications/sync'\nimport syncConfig from './modules/config/sync'\n\nexport default function() {\n syncImports();\n syncGekkos();\n syncNotifications();\n syncConfig();\n}","import _ from 'lodash'\nimport Vue from 'vue'\n\nimport { wsPath } from '../../tools/api'\nimport initializeState from '../../store/init'\n\nvar socket = null;\n\nexport const bus = new Vue();\n\nbus.$on('gekko_update', data => console.log(data))\n\nbus.$on('import_update', data => console.log(data))\nbus.$on('import_error', data => {\n alert('IMPORT ERROR: ' + data.error);\n});\n\nconst info = {\n connected: false\n}\n\nexport const connect = () => {\n socket = new ReconnectingWebSocket(wsPath, null, { maxReconnectInterval: 4000 });\n\n setTimeout(() => {\n // in case we cannot connect\n if(!info.connected) {\n initializeState();\n bus.$emit('WS_STATUS_CHANGE', info);\n }\n }, 500);\n\n socket.onopen = () => {\n if(info.connected)\n return;\n\n info.connected = true;\n bus.$emit('WS_STATUS_CHANGE', info);\n initializeState();\n }\n socket.onclose = () => {\n if(!info.connected)\n return;\n\n info.connected = false;\n bus.$emit('WS_STATUS_CHANGE', info);\n }\n socket.onerror = () => {\n if(!info.connected)\n return;\n\n info.connected = false;\n bus.$emit('WS_STATUS_CHANGE', info);\n }\n socket.onmessage = function(message) {\n const payload = JSON.parse(message.data);\n // console.log('ws message:', payload);\n bus.$emit(payload.type, payload);\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain py2\"},[_c('h3',[_vm._v(\"Market watchers\")]),(!_vm.watchers.length)?_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"You don't have any market watchers.\")])]):_vm._e(),(_vm.watchers.length)?_c('table',{staticClass:\"full clickable\"},[_vm._m(0),_c('tbody',_vm._l((_vm.watchers),function(gekko){return _c('tr',{staticClass:\"clickable\",on:{\"click\":function($event){_vm.$router.push({path: (\"/live-gekkos/\" + (gekko.id))})}}},[_c('td',[_vm._v(_vm._s(gekko.config.watch.exchange))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.currency))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.asset))]),_c('td',[_vm._v(_vm._s(_vm.status(gekko)))]),_c('td',[(gekko.events.initial.candle)?[_vm._v(_vm._s(_vm.fmt(gekko.events.initial.candle.start)))]:_vm._e()],2),_c('td',[(gekko.events.latest.candle)?[_vm._v(_vm._s(_vm.fmt(gekko.events.latest.candle.start)))]:_vm._e()],2),_c('td',[(gekko.events.initial.candle && gekko.events.latest.candle)?[_vm._v(_vm._s(_vm.timespan(gekko.events.latest.candle.start, gekko.events.initial.candle.start)))]:_vm._e()],2)])}))]):_vm._e(),_c('h3',[_vm._v(\"Strat runners\")]),(!_vm.stratrunners.length)?_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"You don't have any stratrunners.\")])]):_vm._e(),(_vm.stratrunners.length)?_c('table',{staticClass:\"full\"},[_vm._m(1),_c('tbody',_vm._l((_vm.stratrunners),function(gekko){return _c('tr',{staticClass:\"clickable\",on:{\"click\":function($event){_vm.$router.push({path: (\"/live-gekkos/\" + (gekko.id))})}}},[_c('td',[_vm._v(_vm._s(gekko.config.watch.exchange))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.currency))]),_c('td',[_vm._v(_vm._s(gekko.config.watch.asset))]),_c('td',[_vm._v(_vm._s(_vm.status(gekko)))]),_c('td',[(gekko.events.initial.candle && gekko.events.latest.candle)?[_vm._v(_vm._s(_vm.timespan(gekko.events.latest.candle.start, gekko.events.initial.candle.start)))]:_vm._e()],2),_c('td',[_vm._v(_vm._s(gekko.config.tradingAdvisor.method))]),_c('td',[(!_vm.report(gekko))?[_vm._v(\"0\")]:_vm._e(),(_vm.report(gekko))?[_vm._v(_vm._s(_vm.round(_vm.report(gekko).profit))+\" \"+_vm._s(_vm.report(gekko).currency))]:_vm._e()],2),_c('td',[_vm._v(_vm._s(gekko.logType))]),_c('td',[(!gekko.events.tradeCompleted)?[_vm._v(\"0\")]:_vm._e(),(gekko.events.tradeCompleted)?[_vm._v(_vm._s(gekko.events.tradeCompleted.length))]:_vm._e()],2)])}))]):_vm._e(),_c('div',{staticClass:\"hr\"}),_c('h2',[_vm._v(\"Start a new live Gekko\")]),_c('router-link',{staticClass:\"btn--primary\",attrs:{\"to\":\"/live-gekkos/new\"}},[_vm._v(\"Start a new live Gekko!\")])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"status\")]),_c('th',[_vm._v(\"started at\")]),_c('th',[_vm._v(\"last update\")]),_c('th',[_vm._v(\"duration\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"exchange\")]),_c('th',[_vm._v(\"currency\")]),_c('th',[_vm._v(\"asset\")]),_c('th',[_vm._v(\"status\")]),_c('th',[_vm._v(\"duration\")]),_c('th',[_vm._v(\"strategy\")]),_c('th',[_vm._v(\"PnL\")]),_c('th',[_vm._v(\"type\")]),_c('th',[_vm._v(\"trades\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./list.vue?vue&type=template&id=55dd2514&lang=pug\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\nimport style0 from \"./list.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain my2\"},[_c('div',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.intro)}}),_c('div',{staticClass:\"hr\"}),_c('h3',[_vm._v(\"Currently running imports\")]),(_vm.imports.length === 0)?_c('p',[_vm._v(\"You currently don't have any imports running.\")]):_vm._e(),(_vm.imports.length)?_c('ul',_vm._l((_vm.imports),function(_import){return _c('li',[_c('router-link',{attrs:{\"to\":\"/data/importer/import/\" + _import.id}},[_vm._v(_vm._s(_import.watch.exchange)+\":\"+_vm._s(_import.watch.currency)+\"/\"+_vm._s(_import.watch.asset))])],1)})):_vm._e(),_c('div',{staticClass:\"hr\"}),_c('h3',[_vm._v(\"Start a new import\")]),_c('import-config-builder',{on:{\"config\":_vm.updateConfig}}),_c('div',{staticClass:\"hr\"}),_c('div',{staticClass:\"txt--center\"},[_c('a',{staticClass:\"w100--s my1 btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.run($event)}}},[_vm._v(\"Import\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd contain\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('h3',[_vm._v(\"Market\")]),_c('market-picker',{attrs:{\"only-importable\":\"true\"},on:{\"market\":_vm.updateMarketConfig}})],1),_c('div',{staticClass:\"grd-row-col-3-6 mx1\"},[_c('range-creator',{on:{\"range\":_vm.updateRange}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importConfigBuilder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./importConfigBuilder.vue?vue&type=template&id=a8c578c6&lang=pug\"\nimport script from \"./importConfigBuilder.vue?vue&type=script&lang=js\"\nexport * from \"./importConfigBuilder.vue?vue&type=script&lang=js\"\nimport style0 from \"./importConfigBuilder.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./importer.vue?vue&type=template&id=3e819299&lang=pug\"\nimport script from \"./importer.vue?vue&type=script&lang=js\"\nexport * from \"./importer.vue?vue&type=script&lang=js\"\nimport style0 from \"./importer.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"contain grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\",domProps:{\"innerHTML\":_vm._s(_vm.left)}}),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd-row-col-3-6 txt--center\"},[_c('img',{attrs:{\"src\":\"/static/gekko.jpg\"}}),_c('p',[_c('em',[_vm._v(\"The most valuable commodity I know of is information.\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=257724d2&lang=pug\"\nimport script from \"./home.vue?vue&type=script&lang=js\"\nexport * from \"./home.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"my2\"},[(!_vm.data)?_c('div',{staticClass:\"contain\"},[_c('h1',[_vm._v(\"Unknown Gekko instance\")]),_c('p',[_vm._v(\"Gekko doesn't know what gekko this is...\")])]):_vm._e(),(_vm.data)?_c('div',[_c('h2',{staticClass:\"contain\"},[_vm._v(\"Gekko \"+_vm._s(_vm.type))]),(_vm.isArchived)?_c('div',{staticClass:\"contain brdr--mid-gray p1 bg--orange\"},[_vm._v(\"This is an archived Gekko, it is currently not running anymore.\")]):_vm._e(),(_vm.data.errorMessage)?_c('div',{staticClass:\"contain brdr--mid-gray p1 bg--orange\"},[_vm._v(\"This is Gekko crashed with the following error: \"+_vm._s(_vm.data.errorMessage))]):_vm._e(),_c('div',{staticClass:\"grd contain\"},[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Market\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Exchange\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.config.watch.exchange))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Currency\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.config.watch.currency))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Asset\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.config.watch.asset))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Type\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.type))])])]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Runtime\")]),(_vm.isLoading)?_c('spinner'):_vm._e(),(!_vm.isLoading)?[(_vm.initialEvents.candle)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Watching since\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.initialEvents.candle.start)))])]):_vm._e(),(_vm.latestEvents.candle)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Received data until\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.fmt(_vm.latestEvents.candle.start)))])]):_vm._e(),(_vm.latestEvents.candle)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Data spanning\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.humanizeDuration(_vm.moment(_vm.latestEvents.candle.start).diff(_vm.moment(_vm.initialEvents.candle.start)))))])]):_vm._e(),(_vm.isStratrunner)?[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Amount of trades\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.trades.length))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"Candle size\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.config.tradingAdvisor.candleSize))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-2-6\"},[_vm._v(\"History size\")]),_c('div',{staticClass:\"grd-row-col-4-6\"},[_vm._v(_vm._s(_vm.config.tradingAdvisor.historySize))])])]:_vm._e()]:_vm._e()],2)]),(_vm.warmupRemaining)?_c('div',{staticClass:\"contain brdr--mid-gray p1 bg--orange\"},[_vm._v(\"This stratrunner is still warming up for the next \"),_c('i',[_vm._v(_vm._s(_vm.warmupRemaining.replace(',', ' and ')))]),_vm._v(\", it will not trade until it is warmed up.\")]):_vm._e(),(_vm.isStratrunner)?_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Strategy\")]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Name\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('strong',[_vm._v(_vm._s(_vm.stratName))])])]),_vm._v(\"Parameters\"),_c('pre',[_vm._v(_vm._s(_vm.stratParams))])]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_c('h3',[_vm._v(\"Profit report\")]),(!_vm.report)?[_c('p',[(_vm.isArchived)?_c('em',[_vm._v(\"This Gekko never executed a trade..\")]):_vm._e(),(!_vm.isArchived)?_c('em',[_vm._v(\"Waiting for at least one trade..\")]):_vm._e()])]:_vm._e(),(_vm.report)?[_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Start balance\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.startBalance)))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Current balance\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.balance)))])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Market\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.market / 100 * _vm.report.startPrice))+\" \"+_vm._s(_vm.config.watch.currency)+\" (\"+_vm._s(_vm.round(_vm.report.market))+\" %)\")])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Profit\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.profit))+\" \"+_vm._s(_vm.config.watch.currency)+\" (\"+_vm._s(_vm.round(_vm.report.relativeProfit))+\" %)\")])]),_c('div',{staticClass:\"grd-row\"},[_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(\"Alpha\")]),_c('div',{staticClass:\"grd-row-col-3-6\"},[_vm._v(_vm._s(_vm.round(_vm.report.alpha))+\" \"+_vm._s(_vm.config.watch.currency))])])]:_vm._e()],2)]):_vm._e(),(_vm.isStratrunner && !_vm.watcher && !_vm.isArchived)?_c('p',[_vm._v(\"WARNING: stale gekko, not attached to a watcher, please report \"),_c('a',{attrs:{\"href\":\"https://github.com/askmike/gekko/issues\"}},[_vm._v(\"here\")]),_vm._v(\".\")]):_vm._e(),(!_vm.isArchived)?_c('p',[_c('a',{staticClass:\"w100--s my1 btn--red\",on:{\"click\":_vm.stopGekko}},[_vm._v(\"Stop Gekko\")])]):_vm._e(),(_vm.isArchived)?_c('p',[_c('a',{staticClass:\"w100--s my1 btn--red\",on:{\"click\":_vm.deleteGekko}},[_vm._v(\"Delete Gekko\")])]):_vm._e(),(_vm.isStratrunner && _vm.watcher && !_vm.isArchived)?_c('p',[_c('em',[_vm._v(\"This gekko gets market data from \"),_c('router-link',{attrs:{\"to\":\"/live-gekkos/\" + _vm.watcher.id}},[_vm._v(\"this market watcher\")])],1),_vm._v(\".\")]):_vm._e()]),(!_vm.isLoading)?[_c('h3',{staticClass:\"contain\"},[_vm._v(\"Market graph\")]),(_vm.candleFetch === \"fetching\")?_c('spinner'):_vm._e(),(_vm.candleFetch === \"fetched\")?[_c('chart',{attrs:{\"data\":_vm.chartData,\"height\":300}})]:_vm._e(),(_vm.isStratrunner)?_c('roundtrips',{attrs:{\"roundtrips\":_vm.roundtrips}}):_vm._e()]:_vm._e()],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./singleGekko.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./singleGekko.vue?vue&type=template&id=35f5b818&lang=pug\"\nimport script from \"./singleGekko.vue?vue&type=script&lang=js\"\nexport * from \"./singleGekko.vue?vue&type=script&lang=js\"\nimport style0 from \"./singleGekko.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datasetpicker.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blockSpinner.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./single.vue?vue&type=style&index=0&lang=css\"","// global window.CONFIG\n\nconst config = window.CONFIG.ui;\nconst endpoint = `${config.host}${config.port === 80 ? '' : `:${config.port}`}${config.path}`;\n\nlet basePath, restPath, wsPath;\n\n// rest API path\nif(config.ssl) {\n basePath = `https://${endpoint}`;\n} else {\n basePath = `http://${endpoint}`;\n}\n\nrestPath = basePath + 'api/';\n\n// ws API path\nif(config.ssl) {\n wsPath = `wss://${endpoint}api`;\n} else {\n wsPath = `ws://${endpoint}api`;\n}\n\nexport {\n wsPath,\n restPath,\n basePath\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grd\"},[_c('div',{staticClass:\"px1\"},[_c('h3',[_vm._v(\"Paper trader\")]),(_vm.toggle === \"closed\")?_c('a',{staticClass:\"btn--primary\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.switchToggle($event)}}},[_vm._v(\"Change paper trader settings\")]):_vm._e(),(_vm.toggle === \"open\")?[_c('p',[_vm._v(\"Settings:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.rawPaperTraderParams),expression:\"rawPaperTraderParams\"}],staticClass:\"params\",domProps:{\"value\":(_vm.rawPaperTraderParams)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.rawPaperTraderParams=$event.target.value}}}),(_vm.rawPaperTraderParamsError)?_c('p',{staticClass:\"bg--red p1\"},[_vm._v(_vm._s(_vm.rawPaperTraderParamsError.message))]):_vm._e()]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./papertrader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./papertrader.vue?vue&type=template&id=6a733e04&lang=pug\"\nimport script from \"./papertrader.vue?vue&type=script&lang=js\"\nexport * from \"./papertrader.vue?vue&type=script&lang=js\"\nimport style0 from \"./papertrader.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { post } from '../../../tools/ajax'\n\nvar mixin = {\n data: () => {\n return {\n datasets: [],\n datasetScanstate: 'idle',\n unscannableMakets: []\n } \n },\n methods: {\n scan: function() {\n this.datasetScanstate = 'scanning';\n\n post('scansets', {}, (error, response) => {\n this.datasetScanstate = 'scanned';\n\n this.unscannableMakets = response.errors;\n\n let sets = [];\n\n response.datasets.forEach(market => {\n market.ranges.forEach((range, i) => {\n sets.push({\n exchange: market.exchange,\n currency: market.currency,\n asset: market.asset,\n from: moment.unix(range.from).utc(),\n to: moment.unix(range.to).utc(),\n id: market.exchange + market.asset + market.currency + i\n });\n });\n });\n\n // for now, filter out sets smaller than 3 hours..\n sets = sets.filter(set => {\n if(set.to.diff(set.from, 'hours') > 2)\n return true;\n });\n\n sets = sets.sort((a, b) => {\n let adiff = a.to.diff(a.from);\n let bdiff = b.to.diff(b.from);\n\n if(adiff < bdiff)\n return -1;\n\n if(adiff > bdiff)\n return 1;\n\n return 0;\n }).reverse();\n\n this.datasets = sets;\n })\n }\n }\n}\n\nexport default mixin;","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stratpicker.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./paperTradeSummary.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain roundtrips\"},[_c('h2',[_vm._v(\"Roundtrips\")]),(_vm.roundtrips.length)?_c('table',[_c('thead',[_vm._m(0),_vm._l((_vm.roundtrips),function(rt){return _c('tr',[_c('td',[_vm._v(_vm._s(_vm.fmt(rt.entryAt)))]),_c('td',[_vm._v(_vm._s(_vm.fmt(rt.exitAt)))]),_c('td',[_vm._v(_vm._s(_vm.diff(rt.duration)))]),_c('td',[_vm._v(_vm._s(_vm.round(rt.entryBalance)))]),_c('td',[_vm._v(_vm._s(_vm.round(rt.exitBalance)))]),(Math.sign(rt.pnl)===-1)?[_c('td',{staticClass:\"loss\"},[_vm._v(_vm._s(Math.sign(rt.pnl)*rt.pnl.toFixed(2)))]),_c('td',{staticClass:\"loss\"},[_vm._v(_vm._s(rt.profit.toFixed(2))+\"%\")])]:[_c('td',{staticClass:\"profit\"},[_vm._v(_vm._s(rt.pnl.toFixed(2)))]),_c('td',{staticClass:\"profit\"},[_vm._v(_vm._s(rt.profit.toFixed(2))+\"%\")])]],2)})],2)]):_vm._e(),(!_vm.roundtrips.length)?_c('div',[_c('p',[_vm._v(\"Not enough data to display\")])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('th',[_vm._v(\"Entry at (UTC)\")]),_c('th',[_vm._v(\"Exit at (UTC)\")]),_c('th',[_vm._v(\"Exposure\")]),_c('th',[_vm._v(\"Entry balance\")]),_c('th',[_vm._v(\"Exit balance\")]),_c('th',[_vm._v(\"P&L\")]),_c('th',[_vm._v(\"Profit\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./roundtripTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./roundtripTable.vue?vue&type=template&id=3c32021a&lang=pug\"\nimport script from \"./roundtripTable.vue?vue&type=script&lang=js\"\nexport * from \"./roundtripTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./roundtripTable.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./result.vue?vue&type=style&index=0&lang=css\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./typepicker.vue?vue&type=style&index=0&lang=css\"","import superagent from 'superagent'\nimport noCache from 'superagent-no-cache'\nimport { restPath } from './api.js'\n\nconst processResponse = next => (err, res) => {\n if(err)\n return next(err);\n\n if(!res.text)\n return next('no data');\n\n let data = JSON.parse(res.text);\n\n next(false, data);\n}\n\nexport const post = (to, data, next) => {\n superagent\n .post(restPath + to)\n .use(noCache)\n .send(data)\n .end(processResponse(next));\n}\n\nexport const get = (to, next) => {\n superagent\n .get(restPath + to)\n .use(noCache)\n .end(processResponse(next));\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./importer.vue?vue&type=style&index=0&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/web/vue/dist/index.html b/web/vue/dist/index.html index f3752a967..084585781 100644 --- a/web/vue/dist/index.html +++ b/web/vue/dist/index.html @@ -1 +1 @@ -Gekko
\ No newline at end of file +Gekko
\ No newline at end of file diff --git a/web/vue/dist/vendor/furtive.min.css b/web/vue/dist/vendor/furtive.min.css index f31d67964..a0850eaab 100644 --- a/web/vue/dist/vendor/furtive.min.css +++ b/web/vue/dist/vendor/furtive.min.css @@ -52,7 +52,7 @@ label { top: 50%; right: 1em; margin-top:-4px; - background-image: url(/assets/select-arrow.png); + background-image: url('select-arrow.png'); background-repeat: no-repeat; background-size: 100%; /* These hacks make the select behind the arrow clickable in some browsers */ diff --git a/web/vue/package.json b/web/vue/package.json index ff2f9c444..66ba7a827 100644 --- a/web/vue/package.json +++ b/web/vue/package.json @@ -1,6 +1,6 @@ { "name": "gekko-vue-ui", - "version": "0.2.2", + "version": "0.2.3", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/web/vue/public/vendor/furtive.min.css b/web/vue/public/vendor/furtive.min.css index f31d67964..a0850eaab 100644 --- a/web/vue/public/vendor/furtive.min.css +++ b/web/vue/public/vendor/furtive.min.css @@ -52,7 +52,7 @@ label { top: 50%; right: 1em; margin-top:-4px; - background-image: url(/assets/select-arrow.png); + background-image: url('select-arrow.png'); background-repeat: no-repeat; background-size: 100%; /* These hacks make the select behind the arrow clickable in some browsers */ diff --git a/web/vue/src/components/gekko/singleGekko.vue b/web/vue/src/components/gekko/singleGekko.vue index 9a68f07c9..702de4921 100644 --- a/web/vue/src/components/gekko/singleGekko.vue +++ b/web/vue/src/components/gekko/singleGekko.vue @@ -195,7 +195,13 @@ export default { return false; } - const warmupTime = _.get(this.config, 'tradingAdvisor.candleSize') * _.get(this.config, 'tradingAdvisor.historySize'); + const historySize = _.get(this.config, 'tradingAdvisor.historySize'); + + if(!historySize) { + return false; + } + + const warmupTime = _.get(this.config, 'tradingAdvisor.candleSize') * historySize; return humanizeDuration( moment(this.initialEvents.candle.start).add(warmupTime, 'm').diff(moment()), diff --git a/web/vue/src/components/layout/home.vue b/web/vue/src/components/layout/home.vue index db3fda3f6..a507fb19e 100644 --- a/web/vue/src/components/layout/home.vue +++ b/web/vue/src/components/layout/home.vue @@ -2,7 +2,7 @@ section.contain.grd-row .grd-row-col-3-6(v-html='left') .grd-row-col-3-6.txt--center - img(src='/static/gekko.jpg') + img(src='static/gekko.jpg') p em The most valuable commodity I know of is information. @@ -20,7 +20,7 @@ and runs on nodejs. [Find out more](https://gekko.wizb.it/). -*Gekko is 100% open source and free, if you paid for this you have been scammed.* +*Gekko is 100% free (open source), if you paid for this you have been scammed.* `); diff --git a/web/vue/src/d3/chart4.js b/web/vue/src/d3/chart4.js index 7b53550b5..0ba89a21c 100644 --- a/web/vue/src/d3/chart4.js +++ b/web/vue/src/d3/chart4.js @@ -3,10 +3,18 @@ import _ from 'lodash'; export default function(_data, _trades, _height) { + const toDate = i => { + if(_.isNumber(i)) { + return moment.unix(i).utc().toDate(); + } else { + return moment.utc(i).toDate(); + } + } + const trades = _trades.map(t => { return { price: t.price, - date: moment.utc(t.date).toDate(), + date: toDate(t.date), action: t.action } }); @@ -14,7 +22,7 @@ export default function(_data, _trades, _height) { const data = _data.map(c => { return { price: c.open, - date: moment.utc(c.start).toDate() + date: toDate(c.start) } });