Skip to content
This repository has been archived by the owner on Feb 16, 2020. It is now read-only.

Gekko UI feedback #489

Closed
askmike opened this issue Oct 31, 2016 · 57 comments
Closed

Gekko UI feedback #489

askmike opened this issue Oct 31, 2016 · 57 comments

Comments

@askmike
Copy link
Owner

askmike commented Oct 31, 2016

You can now try the beta version of the UI.

See here how it works: https://wizb.it/gekko/static/small.gif


You can try it yourself by downloading the web-wrapper branch and running:

npm install
node gekko --ui

I can't wait to here what you think :)


EDIT: I am still interested in ideas / bugs / feedback. Please post them in #611 (or create an issue once that is merged)

@BarnumD
Copy link
Contributor

BarnumD commented Oct 31, 2016

Got

module.js:442
    throw err;
    ^

Error: Cannot find module 'relieve'
    at Function.Module._resolveFilename (module.js:440:15)
    at Function.Module._load (module.js:388:25)
    at Module.require (module.js:468:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/src/gekko/core/workers/dateRangeScan/parent.js:1:78)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)

@askmike
Copy link
Owner Author

askmike commented Oct 31, 2016

@BarnumD Could you try again?

@BarnumD
Copy link
Contributor

BarnumD commented Nov 1, 2016

Yes adding that dependency did it. I really like the ability to see the graph of the data. However, I would like to see the summary like we have on the command line. (buy and hold profit, vs trading profit.) Without that the graph is less useful.

@BarnumD
Copy link
Contributor

BarnumD commented Nov 1, 2016

@feature request: Enter a custom date range in the gui for backtesting.

@BarnumD
Copy link
Contributor

BarnumD commented Nov 1, 2016

The graph is a little hard to zoom and navigate. It would be nice if you could zoom to certain date ranges on the graph and have it automatically adjust the graph.

@askmike
Copy link
Owner Author

askmike commented Nov 1, 2016

I would like to see the summary like we have on the command line.

YES, coming asap :)

Enter a custom date range in the gui for backtesting.

Good one, I put it on the list.

The graph is a little hard to zoom and navigate.

I couldn't find a chart I needed.. (I basically want to show a few lines: price & indicator results, show buy and sell signals and have the whole thing pan and zoomable). I am open for suggestions, else I will just create my own at some point (now using techanjs).

@BarnumD
Copy link
Contributor

BarnumD commented Nov 1, 2016

Zenbot (https://github.com/carlos8f/zenbot) has a decent graph in terms of aesthetics. It has very limited ability to change the graph size by using a drop down menu. I'd like to see something more interactive. Really what I would like the ability to do is zoom to a particular point in time to get a sense of what was going on in the market.

Great job so far :)

@askmike
Copy link
Owner Author

askmike commented Nov 1, 2016

@BarnumD so the profit report is now included in the UI, it looks like this:

screen shot 2016-11-01 at 22 37 34

more to come!

@totomaze
Copy link

totomaze commented Nov 2, 2016

Looks good !

(node:2658) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Exited with code 3
I am accessing gekko ui through my public Ip but all the calls are made to localhost...
build.js:3 GET http://localhost:3000/api/strategies net::ERR_CONNECTION_REFUSED
build.js:3 OPTIONS http://localhost:3000/api/scan net::ERR_CONNECTION_REFUSED

Replcaing all http://localhost:3000/api/... to /api/... fixed it

@askmike
Copy link
Owner Author

askmike commented Nov 2, 2016

Replcaing all http://localhost:3000/api/... to /api/... fixed it

Ah great, if you want you can submit a PR for that.

I am accessing gekko ui through my public Ip

The UI is now focussed on backtesting and importing, stuff I guess makes sense to run locally. So I was thinking that this is how it will be used for now. At some point I want people to be able to run live gekko's using the UI as well, which means something like: "configure the gekko-server" and than it talks to a Gekko hosted somewhere else (or people just set Gekko up on their server and do all their backtesting there as well).

@tomih
Copy link

tomih commented Nov 3, 2016

Great work Mike.
May I suggest TradingView charting library (https://www.tradingview.com/HTML5-stock-forex-bitcoin-charting-library/). You need to apply for access, but it's free.
There are lots of tools and indicators available out of the box and there is also Trading Library that enables you placing orders (if you need to stop the bot and make panic trades yourself).

regards,
T.

@askmike
Copy link
Owner Author

askmike commented Nov 3, 2016

@tomih that license is way to restrictive for me. The main problem would be that Gekko is open source and other people can easily fork it and change whatever they want. But my name would be attached to the TV CL License Agreement and I would be liable for any violation of the terms. Also, just by signing that and putting it into Gekko I am violating 9.1.e(xi):

upload, host, post, transmit, deposit or otherwise make your TV CL API Implementation(s) available for any other third parties

@tomih
Copy link

tomih commented Nov 3, 2016

Well, I know it is restrictive. It's a great charting lib, so i thought Gekko could be 'TradingView lib ready' and people who are interested would apply for access and plug it in.

But you are right. If you want to provide out of the box solution, open licence is the way to go.

Maybe it would be nice to have some kind of adapter to connect a charting library of choice.
I will definitely play with TV lib and let you know.

T.

@askmike
Copy link
Owner Author

askmike commented Nov 3, 2016

Maybe it would be nice to have some kind of adapter to connect a charting library of choice.
I will definitely play with TV lib and let you know.

Great idea! I will look into making something so that the frontend supports plugins as well. If anyone feels adventurous already: this Vue component is holds the logic of what chart to render .

@askmike
Copy link
Owner Author

askmike commented Nov 4, 2016

@BarnumD @tomih would this work for now? http://bl.ocks.org/askmike/11b383533644a4d570d0b6562b727668 You can pan/zoom (the circles will change into arrows that indicate buys/sells).

@tomih
Copy link

tomih commented Nov 4, 2016

@askmike chart running smoothly.

I pulled the latest version but I still don't see a profit report.
btw, I sent you mail at hey@...

T.

askmike added a commit that referenced this issue Nov 4, 2016
@askmike
Copy link
Owner Author

askmike commented Nov 4, 2016

@tomih I replied now :) And try again, I forgot to recompile the frontend..

@askmike
Copy link
Owner Author

askmike commented Nov 5, 2016

@BarnumD you can now select your own daterange as well, see here:

dr

@askmike
Copy link
Owner Author

askmike commented Nov 7, 2016

a few updates:

  • web-wrapper branch has been merged into develop, please pull the develop branch to have a look
  • the chart 4 comments up is now implemented (with small tweaks)
  • the frontend and backend now also communicate via websockets.
  • the UI looks better (imo):

screen shot 2016-11-07 at 19 30 16

@askmike
Copy link
Owner Author

askmike commented Nov 7, 2016

@totomaze I changed some stuff around, if you need tell the frontend where the backend is located you now have to change this file.

@webcaetano
Copy link

@askmike Good job.
It will need a parameter on config to setup the port.

@BarnumD
Copy link
Contributor

BarnumD commented Nov 8, 2016

I like the way the new graph looks and feels.

Can you put a default,/example date in From: and To: daterange just so people don't have to look up the proper syntax?

Will you also be able to export from the Gui?

I'm hoping the Live Gekko will give a graph and some historical (live) trading data. Maybe that's what's planed already?

@askmike
Copy link
Owner Author

askmike commented Nov 8, 2016

@webcaetano

It will need a parameter on config to setup the port.

You're right, but so many config files... Coming asap (for now, change this)

@BarnumD

Can you put a default,/example date in From: and To: daterange just so people don't have to look up the proper syntax?

I'm hoping the Live Gekko will give a graph and some historical (live) trading data. Maybe that's what's planed already?

Will do and yes (well first I'd like to have importing done so that you can actually backtest through the UI without having to switch to the commandline to get the data).

@totomaze
Copy link

totomaze commented Nov 9, 2016

I changed localhost to my_IP but I got this error in UIConfig
build.js:12 GET http://MY_IP:3000/strategies 404 (Not Found)

I had to put /api/ in the path

The declared route should not contain '/api/' (e.g: /api/strategies)

@totomaze
Copy link

totomaze commented Nov 9, 2016

The graph is awesome, and it will be even better if we can see the indicator too.

It will be good to configure the slipage and the fee in the backtest ui.
The trade list will be good too

Great job.

@tomih
Copy link

tomih commented Nov 10, 2016

Charts are great. :)
@askmike is it possible to create kinda dynamic feed for additional indicator(s) with techanjs?
Something like this:
We create json in strategy (and emit it somehow):

{
   "indicators":[
      {
         "type":"line",
         "id":"willy",
         "name":"William",
         "yAxis":1,         // this is printed on canvas under main chart
         "color":"green",
         "dashStyle":"solid",
         "data":[
           {date:1373500800000,y:-78.553, text:'some text'},
           {date:1374105600000,y:-79.742, text:'some other text'}
         ]
      },
      {
         "type":"line",
         "id":"ema1",
         "name":"Ema 4",
         "yAxis":1,     // this is printed on canvas under main chart
         "color":"orange",
         "data":[
           {date:1373500800000,y:-71.695, text:'some text'},
           {date:1374105600000,y:-73.483, text:'some other text'}
         ]
      },
      {
         "type":"line",
         "id":"ema2",
         "name":"Ema 8",
         "yAxis":1,     // this is printed on canvas under main chart
         "color":"red",
         "data":[
           {date:1373500800000,y:-77.391, text:'some text'},
           {date:1374105600000,y:-78.331, text:'some other text'}
         ]
      },
      {
         "type":"line",
         "id":"reg",
         "name":"Regression",
         "yAxis":0,     // this is printed on main chart canvas
         "color":"black",
         "dashStyle":"solid",
         "data":[
           {date:1373500800000,y:-77.391, text:'some text'},
           {date:1374105600000,y:-78.331, text:'some other text'}
         ]
      },
      {
         "id":"cross",
         "type":"flags",
          "yAxis":1,     // flags are printed on canvas under main chart
         "name":"cross",
         "color":"green",
         "fillColor":"white",
         "onSeries":"ema1",
         "shape":"circlepin",
         "width":40,
         "data":[
           {date:1373500800000,y:-77.391, text:'some text'},
           {date:1374105600000,y:-78.331, text:'some other text'}
         ]
      },
   ]
}

Note yAxis. It represents on what 'part' (main chart or under it) something is printed. New 'part' is created on the fly If we pass object with new yAxis. I used that approach with highcharts.

@totomaze I'm working on new profitSimulator that accepts limit orders and outputs fees and list of orders. It's backward compatible and can be used instead of old one.
Must dive into vue and jade to figure out how to display list of all orders under the chart. :)
Will let you know when it's published.

Regards,
T.

@tomih
Copy link

tomih commented Nov 11, 2016

@askmike
vue & jade are awesome. Where have I been all this time. :)
But I have one probably very stupid question: how to compile this and make it show in webUI?
I made new template and included it in results.vue. Nothing happens.
Also do you have any two sentence hints (or links) on how to prepare dev environment and debug?
thnx,
T.

@tomih
Copy link

tomih commented Nov 21, 2016

@askmike thnx for reply.
i tried with vue-cli but nothing changed.

I'm still getting this error:

ERROR in multi main
Module not found: Error: Can't resolve '/' in '/!Company/Dev/hodl/hodl.gekko/web/vue'
 @ multi main

ERROR in multi main
Module not found: Error: Can't resolve 'babel' in '/!Company/Dev/hodl/hodl.gekko/web/vue'
 @ multi main

I don't know what is '/' referring to, but babel is indeed missing. If I change it to babel-loader (in webpack.config.js), it compiles a little bit further, but still full of errors.

Here is the list of installed modules. Can you compare it with yours or post your list?

local modules:
npm ls --depth=0
[email protected] 
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected] (git://github.com/uditalias/superagent-no-cache.git#2b15f4366a4b45bbfb66b9a626265bf3a72d00e4)
+-- [email protected]
+-- [email protected]
+-- [email protected]
`-- [email protected]

global modules:
npm -g ls --depth=0
/usr/local/lib
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
`-- [email protected]

thnx in advance,
T.

@tomih
Copy link

tomih commented Nov 21, 2016

@askmike solved. It looks like the problem was in uppercase chars in path (/!Company/Dev).
I love new things...
T.

@tomih
Copy link

tomih commented Nov 22, 2016

To recap the above problem. In addition to uppercase dirnames, there is also a problem with vue/bebel versions. Newer require suffix '-loader' in webpack.config.js and new module vue-router to be loaded.

  1. don't use uppercase or special chars in dirnames. stick with all lowercase.
  2. add "vue-router": "^2.0.3", to your devDependencies in package.json
  3. to be safe, delete node_modules directory and run npm install
  4. in webpack.config.js change vue -> vue-loader and babel -> babel-loader in rules section. Also add inline:true, in your devServer section.
  5. in src/layout/footer.vue change all occurrences of json to json-loader.

That's it. Hope it helps.
T.

@askmike
Copy link
Owner Author

askmike commented Nov 22, 2016

Are you on windows? Anyway: I will change this whenever I have time (or you
might create a PR for it).

On Tue, Nov 22, 2016 at 11:52 AM, Tomi [email protected] wrote:

To recap the above problem. In addition to uppercase dirnames, there is
also a problem with vue/bebel versions. Newer require suffix '-loader' in
webpack.config.js and new module vue-router to be loaded.

  1. don't use uppercase or special chars in dirnames. stick with all
    lowercase.
  2. add "vue-router": "^2.0.3", to your devDependencies in package.json
  3. to be safe, delete node_modules directory and run npm install
  4. in webpack.config.js change vue -> vue-loader and babel ->
    babel-loader in rules section. Also add inline:true, in your devServer
    section.
  5. in src/layout/footer.vue change all occurrences of json to
    json-loader.

That's it. Hope it helps.
T.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#489 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA7MD1-0I4mPsoYVN2oHuSLL9ZN1DtbWks5rAteBgaJpZM4Klcxr
.

PGP key at keybase.io/mikevanrossum
https://keybase.io/mikevanrossum/key.asc

@tomih
Copy link

tomih commented Nov 22, 2016

I couldn't find a chart I needed.. (I basically want to show a few lines: price & indicator results, show buy and sell signals and have the whole thing pan and zoomable). I am open for suggestions, else I will just create my own at some point (now using techanjs).

I just spent some time looking for d3 examples and found this:
https://d3fc.io/
https://github.com/rrag/react-stockcharts (looks really responsive and cool).
T.

@mattbrun
Copy link
Contributor

Hi everyone,
First of all thanks for this amazing project!

I've corrected a couple of missing dependencies, loader new requirements and a typo.
Everything is in this PR #508 .

Thanks,
M.

@tomih
Copy link

tomih commented Nov 22, 2016

I'm on osx. Anyway, as I can see, we already have a contribution to solve it. I can't review it right now, but definitely will asap.
T.

@askmike
Copy link
Owner Author

askmike commented Dec 4, 2016

@tomih it's merged in so if you could let me know if it solves your problems!


I am working on live gekkos, I am taking a different approach than commandline gekko (since the UI makes it possible / easy to run multiple gekkos). For details and status, check PR Ui/market watchers [WIP] (#513)

@ofek-a
Copy link

ofek-a commented Jan 20, 2017

@askmike I want to help integrating indicator data to the chart. Have you thought about what would be the best way to do so, and are you open for pull requests on that issue?
Maybe it is possible to discuss it on a separate issue if necessary.

@askmike
Copy link
Owner Author

askmike commented Mar 8, 2017

See #611.

@askmike
Copy link
Owner Author

askmike commented Mar 9, 2017

@ofeka I

I am sorry for the late reply!

I want to help integrating indicator data to the chart. Have you thought about what would be the best way to do so, and are you open for pull requests on that issue?
Maybe it is possible to discuss it on a separate issue if necessary.

Yes definitely open for this :) I first want to focus on having all main fuctionality in the UI (paper trading + backtesting + real trading). But definitely open to pull requests. If you have no idea where to start, please open an issue and I'll let you what needs to be done.

@thegamecat
Copy link

Using a talib custom method and get this, saw it was mentioned on the previous issue that was closed. Any ideas?

Error: non-error thrown: Child process has died.
at Object.onerror (/Users/xyz/gekko-develop/node_modules/koa/lib/context.js:105:40)

@askmike
Copy link
Owner Author

askmike commented Mar 10, 2017

@thegamecat can you try to set this to true and try again?

https://github.com/askmike/gekko/blob/develop/web/routes/baseConfig.js#L16

@thegamecat
Copy link

Tried, same issue.

@askmike
Copy link
Owner Author

askmike commented Mar 10, 2017

And you also run into this with talib-macd method? In that case I will test asap. For now I have put it on the todo list before we can merge stable (see #611).

@thegamecat
Copy link

thegamecat commented Mar 10, 2017

Yeah just tried the talib-macd as well.

I also found - var adapter = config.adapters[config.backtest.adapter]; in line 14 core/workers/datasetscan/parent.js is returning an undefined of an undefined when doing a scan of databases. Essentially looks like it's not finding the config reference.

@askmike
Copy link
Owner Author

askmike commented Mar 10, 2017

That should be fixed since 63ec97b, are you on latest develop?

@thegamecat
Copy link

Apologies I was not. Have updated and re-tested. Config issue is fixed. Talib issue continues both with my own and Talib-Macd.

@askmike
Copy link
Owner Author

askmike commented Mar 11, 2017

@thegamecat I'll put all information regarding the talib bug in #525.

@askmike
Copy link
Owner Author

askmike commented Mar 11, 2017

@thegamecat

For me talib-macd method is working fine:

screen shot 2017-03-11 at 10 59 32

Can you:

  • Make sure talib is installed on your system? (Run npm install talib).
  • Check whether the method works using command line gekko (without the UI)?

@thegamecat
Copy link

I did a fresh install and working fine. Apologies.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

9 participants