Preview of Jesse's GUI dashboard — Transcript
Full transcript
- 0:02hi there i got exciting stuff to share
- 0:04with you today i just released version
- 0:060.3 of jesse which brings big changes to
- 0:09the framework it also makes installation
- 0:11of the framework so much easier thanks
- 0:13to making docker a first class citizen
- 0:15of our ecosystem without further ado
- 0:17allow me to show you all the essential
- 0:19features of this release
- 0:22to create a new jc project first i will
- 0:24go into the directory that i want my
- 0:27project to live in next i'm going to
- 0:29create a new project by cloning it from
- 0:31github i can do that by running
- 0:34git clone
- 0:37http
- 0:39github.com
- 0:41jesseai slash project
- 0:45template
- 0:48i can also specify a custom name here i
- 0:50will name my project
- 0:52test python but
- 0:55it should be ready in a few seconds
- 0:57next i cd into test bot next i have to
- 1:01create an environment file for my
- 1:03project an example environment file is
- 1:06shaped with every new jesse project so
- 1:08all i have to do is to duplicate that
- 1:10file the copy command in unix operating
- 1:13systems is cp which stands for copy so
- 1:16i'll type cp.mv.examplespace.mv
- 1:23depending on your environment setup you
- 1:26might have to open your.mv file and
- 1:28modify the values
- 1:30the default values will work for most
- 1:32people generally you have two options
- 1:35for how to set up your environments one
- 1:37is to use docker and the second one is
- 1:40to install everything natively on your
- 1:42machine each option has its own cons and
- 1:44pros i usually recommend starting with
- 1:47docker because it is easier to get
- 1:49started and if you didn't like it for
- 1:51any reason you can easily remove the
- 1:53containers and there won't be any
- 1:55leftovers and then maybe move on to the
- 1:57native setup if you wanted to but the
- 2:00other way around is difficult i'm gonna
- 2:02start with docker first and then i will
- 2:04show you how to search jesse with the
- 2:06native environment setup the good news
- 2:09is that docker is now a first class
- 2:11citizen in jesse if you see the into the
- 2:14docker directory inside your jesse
- 2:16project you will find all the necessary
- 2:18configurations for running docker so
- 2:22assuming you already have docker
- 2:24installed on your machine all you have
- 2:26to do now is to run docker hyphen
- 2:29compose
- 2:31up
- 2:32before i hit enter i have to mention
- 2:34that
- 2:35the first time that you do this docker
- 2:37is going to pull all the required images
- 2:40from docker hub which is like the github
- 2:42equivalent for docker images
- 2:45all right when it's done you will see a
- 2:48url being printed on your terminal go
- 2:51ahead and copy this url and open it with
- 2:53your browser
- 2:55i didn't change the default password in
- 2:57my.nv file so the password has to be
- 3:01test
- 3:02if you're in the home page it means
- 3:04everything is up and running
- 3:06to terminate the application open your
- 3:09terminal and press ctrl and c
- 3:13before i move on i want to show you how
- 3:15you can run docker in your terminals
- 3:18background
- 3:19to do this all we have to do is to run
- 3:21the same command but this time add a
- 3:24hyphen d at the end of it
- 3:26but remember that after running the
- 3:28docker compose up command we had to wait
- 3:31a few seconds for the containers to be
- 3:33up which is why if i refresh the page
- 3:36now it won't work
- 3:38but if i wait like 10 seconds and
- 3:40refresh it again
- 3:41it should be fine
- 3:46to sub the containers you have to run
- 3:49docker
- 3:50hyphen compose
- 3:52stop
- 3:55all right that's all you had to know
- 3:56about docker at this time
- 3:59now let's move on to the native setup a
- 4:01couple of services such as python
- 4:03postgresql and radius are needed by
- 4:06jesse and now that we are not using
- 4:09docker anymore you have to install those
- 4:11by yourself of course if you check out
- 4:13our documentation website you will find
- 4:16a step-by-step guide for each of them
- 4:18assuming you already have done that all
- 4:20you have to do now is to open your dot
- 4:23and v file and modify two values that
- 4:26right now have been set to work with
- 4:27docker so i have to open the project in
- 4:30my editor i'll type cd dot dot which
- 4:33will take me to the previous directory i
- 4:36personally use pycharm to open the
- 4:38current directory inside pycharm i will
- 4:40type charm
- 4:42dot
- 4:43feel free to use any other method or any
- 4:46other editor that you want
- 4:49now open the dmv file
- 4:52now all you have to do is to change the
- 4:54values of postgres and reduce to
- 4:57localhost the values already exist so
- 4:59all i have to do is to comment and
- 5:02uncomment them
- 5:04to start the application type jesse run
- 5:11let's copy this address again
- 5:13and paste it into our browser
- 5:16all right everything looks good before
- 5:18we move on to the next section let me
- 5:20show you a few cool features on your
- 5:22home page you will find a few helpful
- 5:24links and also a search box which will
- 5:27search inside our help center if you
- 5:29couldn't find something on our
- 5:30documentation website it will probably
- 5:33be inside our help center
- 5:35and my personal favorite feature of this
- 5:37release is that you can toggle the dark
- 5:40mode
- 5:42i guess i prefer the light mode
- 5:44let's also give the search a try
- 5:46i'll type test
- 5:49and there we go we have the results
- 5:54after starting jesse the first thing
- 5:56that you want to do is to import some
- 5:58candles from the exchange
- 6:00let's head over to the import candles
- 6:02page
- 6:04the exchange is binance which is what i
- 6:06want
- 6:07and i want btc usd pair
- 6:11and here we can choose this start date
- 6:13and the finished it is always today
- 6:16i'm gonna pick the start of this month
- 6:22while we are importing from binance we
- 6:24can open a new tab and import candles
- 6:27from another exchange at the same time
- 6:29for this one let's choose bitfenix
- 6:34and for symbol i will write down if
- 6:36python usd
- 6:38the same date is fine so i'll just press
- 6:40start
- 6:42looks like the other tab has finished
- 6:44importing all right now let's move on to
- 6:46the backtesting section
- 6:49let's run our first practice the
- 6:51exchange and symbol are exactly the ones
- 6:53that we imported candles for and the one
- 6:56minute time frame is exactly what i want
- 6:58so now we need to choose a strategy an
- 7:01example a strategy is shipped with every
- 7:03new jesse project
- 7:06as for the options i will enable to
- 7:08export charts and quant stats reports
- 7:13let's choose the starting date of our
- 7:15back test
- 7:17and the finish date
- 7:20and click on the start button
- 7:24it finished practicing in 0.26 seconds
- 7:27and it executed no trades the reason is
- 7:30that the example strategy that we just
- 7:32executed is only a template for your
- 7:35other strategies it has no entry signals
- 7:38in it
- 7:40so let's go ahead and create a new
- 7:41strategy
- 7:45i will name it
- 7:47test strategy
- 7:49zero one
- 7:50as you can see it will also show you the
- 7:53location of that strategy file so i'm
- 7:55gonna press create now and now we have
- 7:58to open that file inside our editor
- 8:02all right now let's think what the logic
- 8:04of our strategy should be i want it to
- 8:06be something super simple because the
- 8:08whole point of it is to be another
- 8:10example that executes a few traits i
- 8:14think a simple death cross strategy is a
- 8:16good place to start for us
- 8:18so we're gonna have two ema lines one
- 8:21with the shorter period and the other
- 8:23with the longer one and whenever the
- 8:25shorter one goes above the longer one we
- 8:28open a long position whenever that is
- 8:30not the case anymore we liquidate our
- 8:33open position
- 8:35let's begin first i will define a
- 8:38property called short
- 8:41ema
- 8:43and it has to return ta.ema
- 8:46and then i have to pass the candles
- 8:49and for the period i will pass 20.
- 8:51then i duplicate this one and create
- 8:53another one and rename it into long ema
- 8:58and for the period i will pass 40.
- 9:00inside my shoot long method i will say
- 9:03return
- 9:05self dot
- 9:06short ema
- 9:08is bigger than
- 9:10self.long email
- 9:14next i will go inside my
- 9:16go long method
- 9:18to specify the position sizing
- 9:21i will define a variable called quantity
- 9:24and assign it
- 9:25utils
- 9:27dot
- 9:29size to quantity
- 9:32and i will pass
- 9:34my balance
- 9:35next i have to pass entry price so
- 9:37actually let's define the entry price
- 9:39first
- 9:41so i'll say entry underline price equals
- 9:44to
- 9:45self.price which points to the closing
- 9:48price of the current candle now that i
- 9:50have the entry price i can pass it
- 9:52inside my size to quantity utility
- 9:54function
- 9:55now that we have both the quantity and
- 9:57entry price we can define our entry
- 9:59order i'll say
- 10:01self dot
- 10:03by
- 10:04equals
- 10:05quantity
- 10:07comma
- 10:08entry price next we have to say that
- 10:10whenever our entry condition is no
- 10:13longer valid we want to liquidate our
- 10:15open position
- 10:18def
- 10:18update position
- 10:21if
- 10:22self dot
- 10:24short ema
- 10:25is less or equal than
- 10:28self dot long ema
- 10:31self.liquidate
- 10:33all right now let's go and try to
- 10:35execute this strategy instead
- 10:43so it looks like we actually executed 55
- 10:46total trades
- 10:48and the piano is -12
- 10:51other than this new chart that shows the
- 10:53equity curve we still have access to the
- 10:56legacy chart which is what the cli
- 10:58version used to generate i'm gonna open
- 11:00the file that i just downloaded
- 11:02and here you can even see the buy and
- 11:04sell orders on the chart
- 11:08let's take a look at the cons stats
- 11:09report i'm gonna download it and open it
- 11:12with firefox
- 11:13there are many more
- 11:15charts and metrics inside the constant
- 11:18reports but because we didn't execute
- 11:20many trades and the period was really
- 11:22short we don't see much data inside
- 11:25these charts
- 11:27anyways nonetheless they are useful
- 11:30now allow me to show you other features
- 11:32of the back testing page more
- 11:34specifically the features that are new
- 11:36and you couldn't deal with the cli
- 11:38version
- 11:39so let's say that i am curious to know
- 11:41what would have been the performance of
- 11:43my strategy with another time frame and
- 11:46it would be really useful if i could
- 11:48have them inside different tabs this
- 11:50will make it easier for me to compare
- 11:52the performance of various time frames
- 11:55fortunately we can do exactly that with
- 11:57the new dashboard
- 11:59i can either
- 12:00do that by opening a new tab and then
- 12:02running a back test
- 12:04or pressing the start in a new tab
- 12:06button
- 12:07the other tab will be identical to the
- 12:10tab that we were in that means it will
- 12:12have the same symbol exchange time frame
- 12:14etc
- 12:16let's open a third one with the three
- 12:18minutes time frame
- 12:21i think that's enough for the back
- 12:22testing page just to recap the new
- 12:25feature which allows you to create tabs
- 12:27is incredibly powerful when it comes to
- 12:30comparing various time frames symbols or
- 12:33strategies
- 12:36inside our current strategy file we
- 12:38hardcoded the period numbers for our ema
- 12:41lines but what if we're not sure if we
- 12:43chose the best numbers so let's use the
- 12:45optimization mode of jesse so that it
- 12:47would find it for us
- 12:49i'll begin by defining a hyper
- 12:51parameters method which is supposed to
- 12:53return a list of dictionary objects
- 12:56for the short ema i will give it the
- 12:58name
- 12:59short
- 13:00ema
- 13:01period
- 13:04and the type is int
- 13:07and the minimum value
- 13:09will be 10
- 13:10and the maximum value
- 13:13will be
- 13:1430
- 13:15and the default value is going to be
- 13:1825. then i will duplicate this one
- 13:23and rename it into
- 13:25long ema period
- 13:27and the minimum is going to be now
- 13:3140
- 13:32the maximum number will be 80 and the
- 13:35default will be 50.
- 13:37now we need to tell our strategy to use
- 13:39these dynamic values instead of the
- 13:42hard-coded ones
- 13:44instead of the number 25 i'm gonna use
- 13:46the hyperparameter that i defined
- 13:48all happy parameter values are living
- 13:50inside a variable named hp which is
- 13:53stands for hyper parameters and the type
- 13:55of it is a dictionary so i'll type self
- 13:58dot hp
- 14:00then i have to pass the name as the key
- 14:02of my dictionary
- 14:04and i'll do the same for long ema
- 14:09i'm going to change the time frame and
- 14:12the period into something that i know
- 14:14will be profitable because the point of
- 14:16the optimization mode is to make your
- 14:18numbers better not turn them from
- 14:20negative into positive
- 14:22let's hit the start button
- 14:26so it just started generating the
- 14:28initial population this phase could take
- 14:31a while so i'm going to skip the video
- 14:33until it's over
- 14:34all right it just finished the first
- 14:36part of the optimization mode which was
- 14:38generating the initial population and
- 14:40the second half is going to be about
- 14:42improving from those individuals that
- 14:45already exist
- 14:47here we have a table which shows our
- 14:49best dna candidates they are ranked from
- 14:51the best one to the worst one we can
- 14:54also see some other useful metrics such
- 14:56as the number of total executed trades
- 14:59and the p l of this strategy over that
- 15:01period for the sake of this demo i'm
- 15:04gonna assume that my number one dna is
- 15:07actually my best one and the one that
- 15:09i'm going to use inside my strategy so
- 15:12i'm going to copy the dna string for my
- 15:15best candidate dna here and actually
- 15:17before injecting it inside my strategy
- 15:20i'm going to run another back test
- 15:22without this dna string so that we can
- 15:25compare to the results afterwards
- 15:35so here the panel number is 11.26
- 15:39and now i'm going to tell my strategy to
- 15:41use this dna
- 15:43we can do that by defining a method
- 15:45called
- 15:46dna
- 15:48which is supposed to return a string
- 15:50value
- 15:51so i'm just going to return this string
- 15:53dna value that i copied before
- 15:56let's open a new tab so we can compare
- 15:58the two together
- 15:59every other option is identical
- 16:02and now i can press the start button
- 16:09and if we check the panel number it is
- 16:11now
- 16:1212.88 percent versus before it was 11.26
- 16:21all right let's for a second assume that
- 16:23we have a profitable strategy and now we
- 16:26want to run it live in our current
- 16:28navbar there is no page for live trading
- 16:30and if i open the settings page there is
- 16:32no tab for live either
- 16:34to install the plugin you have to have
- 16:36an account on our website which is
- 16:38jesse.trade
- 16:40i'm gonna log in with an account which i
- 16:42registered a few minutes ago
- 16:45an active license is mandatory for
- 16:47installing the plugin as you can see i
- 16:49have already purchased one
- 16:52so now i can navigate into the api
- 16:54tokens page and create a new api token
- 16:57you can name this whatever you want i'm
- 16:59gonna name it dev i have to copy this
- 17:01license key here to open it inside my.mv
- 17:04file
- 17:08now to actually install the plugin i'm
- 17:10going to stop my current session
- 17:13and run jesse
- 17:16install
- 17:17live
- 17:18this command will download the correct
- 17:20version of the plugin for my operating
- 17:22system python vision and jc version and
- 17:25install it for me that's it now i can
- 17:27run the application again
- 17:30and this time we can find the live page
- 17:32here
- 17:33and if you open the settings page we
- 17:35have a live tab
- 17:39now what about docker
- 17:41i'm gonna stop this session
- 17:44and just so it would be clearer i'm
- 17:46gonna uninstall the plugin
- 17:51so if i execute jsurun again
- 17:54and check out the dashboard there
- 17:55shouldn't be a live tab anymore
- 17:57let's stop the session one more time and
- 18:00cd into the docker directory to install
- 18:02the plugin using docker all you have to
- 18:05do is to make sure the license key is
- 18:07set inside your dot mv file which we
- 18:09already did
- 18:10we should also return the values for
- 18:12postgres and redis from localhost into
- 18:16postgres and redis
- 18:18now i don't even have to run any
- 18:20specific command to install the plugin
- 18:23with docker all i have to do is to run
- 18:25the same command that we ran for docker
- 18:28before which is docker
- 18:30hyphen compose up
- 18:32this time because the value for my
- 18:34license key is set inside my dot mv file
- 18:37jesse is going to pick up on that and
- 18:39install the plugin right after starting
- 18:42the containers
- 18:48if i open my browser again
- 18:51and refresh it
- 18:53we can see that the live tab is here
- 18:55again
- 18:56so let's go ahead and start a paper
- 18:58trading session
- 19:00first i'm gonna choose the strategy and
- 19:02the one minute time frame is fine i'll
- 19:04also turn on the debug mode and press
- 19:06start give it a few seconds to import
- 19:09the initial candles
- 19:14all right
- 19:15we have a real time chart here
- 19:18and the table which shows me which
- 19:20symbol time frame and strategy i'm
- 19:22running
- 19:24i can check out the logs
- 19:28and error logs also which i don't have
- 19:30any right now
- 19:31here i can see my positions which i have
- 19:33only one closed one at the moment
- 19:36and here it should show me my open
- 19:38orders
- 19:39you can also adjust your candles chart
- 19:41like you used to on trading view
- 19:44i guess that's enough for the paper mode
- 19:46now let's try to run this strategy on a
- 19:49live market because this is a test
- 19:51strategy
- 19:52i think it's best to run it on a test
- 19:54net exchange rather than an actual one
- 19:56bioness has a pretty good test net that
- 19:58we can use for this purpose
- 20:01because this is a test net account i
- 20:03don't have to generate api keys they've
- 20:06already been generated for me all i have
- 20:08to do is to copy them from here
- 20:11and then open my.mv file again
- 20:14scroll down
- 20:15and paste it right here where it says
- 20:17testnet binance features api key
- 20:20one more time for the secret
- 20:23and we should be good to go
- 20:25now let's head back to js's dashboard
- 20:28press the new session button
- 20:30and turn off the paper trade option
- 20:34before i press the start button again i
- 20:36have to change the exchange into testnet
- 20:38binance features
- 20:44all right looks like it's working just
- 20:45fine let's check out the chart to make
- 20:47sure they are showing the same data
- 20:49here it is the one minute time frame
- 20:53and yes they look identical
- 20:56we are near the closing time of the
- 20:58current candle let's see if it's going
- 21:00to execute any trades 57 58 59
- 21:06all right looks like it didn't
- 21:08the reason for that is probably because
- 21:10our entry rules are not being met right
- 21:12now that means the short ema is not
- 21:14above the long ema so it's not going to
- 21:17open any trades
- 21:18so let's edit our current strategy and
- 21:21tell it to always open the long position
- 21:23for that i will tell our shoot long
- 21:25method to always return a true value
- 21:31i think it's also a good idea to modify
- 21:33our golang method to use multiple orders
- 21:36instead to do that i have to assign a
- 21:39list to myself.buy property
- 21:46so spending all of our capital is no
- 21:48longer a good idea so i will just use 10
- 21:51of my current capital per each order
- 22:02by the way notice that after a few
- 22:04seconds over starting the live session
- 22:06my balance is going to be automatically
- 22:09set for me the same as it is on the
- 22:11exchange
- 22:12so let's check out the exchange to make
- 22:14sure it is showing the same number both
- 22:16the available margin
- 22:19and my wallet balance are displaying the
- 22:21same number
- 22:22there's only five seconds until the next
- 22:24closing candle
- 22:29all right looks like we submitted a few
- 22:32orders
- 22:33one of them was a market order which got
- 22:35immediately executed and the other three
- 22:38are limit orders and they are active
- 22:40that means i can see them on my chart
- 22:44i can also check out my current open
- 22:46position the quantity of it
- 22:49current price entry price p l
- 22:53and if i go on the testnet website i can
- 22:55see the same numbers here
- 22:58so it looks like they are both in sync
- 23:02and here are the orders that are
- 23:04currently active
- 23:12we are near to the next closing candle
- 23:14and according to our strategy it should
- 23:16liquidate all our open positions
- 23:19and exactly that just happened
- 23:22and all of our previous orders have
- 23:24either the status of executed or
- 23:27cancelled
- 23:28and if we check the exchange we should
- 23:30see the same thing
- 23:32no open positions and no open orders and
- 23:34that's it there were more features to
- 23:36cover but i wanted to keep this video
- 23:38short so make sure to give this release
- 23:39a try and see what's new for yourself in
- 23:41the near future i will be making more
- 23:43tutorials about algo trading so make
- 23:45sure to subscribe thanks for watching
About this transcript
This page contains the full transcript of Preview of Jesse's GUI dashboard by Algo-trading with Saleh, generated from the public captions YouTube serves with the video. The transcript has 3,511 words across 585 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.