YouTube2Text

Preview of Jesse's GUI dashboard — Transcript

by Algo-trading with Saleh · 3,511 words · 585 segments · language en · Watch on YouTube

Full transcript

  1. 0:02hi there i got exciting stuff to share
  2. 0:04with you today i just released version
  3. 0:060.3 of jesse which brings big changes to
  4. 0:09the framework it also makes installation
  5. 0:11of the framework so much easier thanks
  6. 0:13to making docker a first class citizen
  7. 0:15of our ecosystem without further ado
  8. 0:17allow me to show you all the essential
  9. 0:19features of this release
  10. 0:22to create a new jc project first i will
  11. 0:24go into the directory that i want my
  12. 0:27project to live in next i'm going to
  13. 0:29create a new project by cloning it from
  14. 0:31github i can do that by running
  15. 0:34git clone
  16. 0:37http
  17. 0:39github.com
  18. 0:41jesseai slash project
  19. 0:45template
  20. 0:48i can also specify a custom name here i
  21. 0:50will name my project
  22. 0:52test python but
  23. 0:55it should be ready in a few seconds
  24. 0:57next i cd into test bot next i have to
  25. 1:01create an environment file for my
  26. 1:03project an example environment file is
  27. 1:06shaped with every new jesse project so
  28. 1:08all i have to do is to duplicate that
  29. 1:10file the copy command in unix operating
  30. 1:13systems is cp which stands for copy so
  31. 1:16i'll type cp.mv.examplespace.mv
  32. 1:23depending on your environment setup you
  33. 1:26might have to open your.mv file and
  34. 1:28modify the values
  35. 1:30the default values will work for most
  36. 1:32people generally you have two options
  37. 1:35for how to set up your environments one
  38. 1:37is to use docker and the second one is
  39. 1:40to install everything natively on your
  40. 1:42machine each option has its own cons and
  41. 1:44pros i usually recommend starting with
  42. 1:47docker because it is easier to get
  43. 1:49started and if you didn't like it for
  44. 1:51any reason you can easily remove the
  45. 1:53containers and there won't be any
  46. 1:55leftovers and then maybe move on to the
  47. 1:57native setup if you wanted to but the
  48. 2:00other way around is difficult i'm gonna
  49. 2:02start with docker first and then i will
  50. 2:04show you how to search jesse with the
  51. 2:06native environment setup the good news
  52. 2:09is that docker is now a first class
  53. 2:11citizen in jesse if you see the into the
  54. 2:14docker directory inside your jesse
  55. 2:16project you will find all the necessary
  56. 2:18configurations for running docker so
  57. 2:22assuming you already have docker
  58. 2:24installed on your machine all you have
  59. 2:26to do now is to run docker hyphen
  60. 2:29compose
  61. 2:31up
  62. 2:32before i hit enter i have to mention
  63. 2:34that
  64. 2:35the first time that you do this docker
  65. 2:37is going to pull all the required images
  66. 2:40from docker hub which is like the github
  67. 2:42equivalent for docker images
  68. 2:45all right when it's done you will see a
  69. 2:48url being printed on your terminal go
  70. 2:51ahead and copy this url and open it with
  71. 2:53your browser
  72. 2:55i didn't change the default password in
  73. 2:57my.nv file so the password has to be
  74. 3:01test
  75. 3:02if you're in the home page it means
  76. 3:04everything is up and running
  77. 3:06to terminate the application open your
  78. 3:09terminal and press ctrl and c
  79. 3:13before i move on i want to show you how
  80. 3:15you can run docker in your terminals
  81. 3:18background
  82. 3:19to do this all we have to do is to run
  83. 3:21the same command but this time add a
  84. 3:24hyphen d at the end of it
  85. 3:26but remember that after running the
  86. 3:28docker compose up command we had to wait
  87. 3:31a few seconds for the containers to be
  88. 3:33up which is why if i refresh the page
  89. 3:36now it won't work
  90. 3:38but if i wait like 10 seconds and
  91. 3:40refresh it again
  92. 3:41it should be fine
  93. 3:46to sub the containers you have to run
  94. 3:49docker
  95. 3:50hyphen compose
  96. 3:52stop
  97. 3:55all right that's all you had to know
  98. 3:56about docker at this time
  99. 3:59now let's move on to the native setup a
  100. 4:01couple of services such as python
  101. 4:03postgresql and radius are needed by
  102. 4:06jesse and now that we are not using
  103. 4:09docker anymore you have to install those
  104. 4:11by yourself of course if you check out
  105. 4:13our documentation website you will find
  106. 4:16a step-by-step guide for each of them
  107. 4:18assuming you already have done that all
  108. 4:20you have to do now is to open your dot
  109. 4:23and v file and modify two values that
  110. 4:26right now have been set to work with
  111. 4:27docker so i have to open the project in
  112. 4:30my editor i'll type cd dot dot which
  113. 4:33will take me to the previous directory i
  114. 4:36personally use pycharm to open the
  115. 4:38current directory inside pycharm i will
  116. 4:40type charm
  117. 4:42dot
  118. 4:43feel free to use any other method or any
  119. 4:46other editor that you want
  120. 4:49now open the dmv file
  121. 4:52now all you have to do is to change the
  122. 4:54values of postgres and reduce to
  123. 4:57localhost the values already exist so
  124. 4:59all i have to do is to comment and
  125. 5:02uncomment them
  126. 5:04to start the application type jesse run
  127. 5:11let's copy this address again
  128. 5:13and paste it into our browser
  129. 5:16all right everything looks good before
  130. 5:18we move on to the next section let me
  131. 5:20show you a few cool features on your
  132. 5:22home page you will find a few helpful
  133. 5:24links and also a search box which will
  134. 5:27search inside our help center if you
  135. 5:29couldn't find something on our
  136. 5:30documentation website it will probably
  137. 5:33be inside our help center
  138. 5:35and my personal favorite feature of this
  139. 5:37release is that you can toggle the dark
  140. 5:40mode
  141. 5:42i guess i prefer the light mode
  142. 5:44let's also give the search a try
  143. 5:46i'll type test
  144. 5:49and there we go we have the results
  145. 5:54after starting jesse the first thing
  146. 5:56that you want to do is to import some
  147. 5:58candles from the exchange
  148. 6:00let's head over to the import candles
  149. 6:02page
  150. 6:04the exchange is binance which is what i
  151. 6:06want
  152. 6:07and i want btc usd pair
  153. 6:11and here we can choose this start date
  154. 6:13and the finished it is always today
  155. 6:16i'm gonna pick the start of this month
  156. 6:22while we are importing from binance we
  157. 6:24can open a new tab and import candles
  158. 6:27from another exchange at the same time
  159. 6:29for this one let's choose bitfenix
  160. 6:34and for symbol i will write down if
  161. 6:36python usd
  162. 6:38the same date is fine so i'll just press
  163. 6:40start
  164. 6:42looks like the other tab has finished
  165. 6:44importing all right now let's move on to
  166. 6:46the backtesting section
  167. 6:49let's run our first practice the
  168. 6:51exchange and symbol are exactly the ones
  169. 6:53that we imported candles for and the one
  170. 6:56minute time frame is exactly what i want
  171. 6:58so now we need to choose a strategy an
  172. 7:01example a strategy is shipped with every
  173. 7:03new jesse project
  174. 7:06as for the options i will enable to
  175. 7:08export charts and quant stats reports
  176. 7:13let's choose the starting date of our
  177. 7:15back test
  178. 7:17and the finish date
  179. 7:20and click on the start button
  180. 7:24it finished practicing in 0.26 seconds
  181. 7:27and it executed no trades the reason is
  182. 7:30that the example strategy that we just
  183. 7:32executed is only a template for your
  184. 7:35other strategies it has no entry signals
  185. 7:38in it
  186. 7:40so let's go ahead and create a new
  187. 7:41strategy
  188. 7:45i will name it
  189. 7:47test strategy
  190. 7:49zero one
  191. 7:50as you can see it will also show you the
  192. 7:53location of that strategy file so i'm
  193. 7:55gonna press create now and now we have
  194. 7:58to open that file inside our editor
  195. 8:02all right now let's think what the logic
  196. 8:04of our strategy should be i want it to
  197. 8:06be something super simple because the
  198. 8:08whole point of it is to be another
  199. 8:10example that executes a few traits i
  200. 8:14think a simple death cross strategy is a
  201. 8:16good place to start for us
  202. 8:18so we're gonna have two ema lines one
  203. 8:21with the shorter period and the other
  204. 8:23with the longer one and whenever the
  205. 8:25shorter one goes above the longer one we
  206. 8:28open a long position whenever that is
  207. 8:30not the case anymore we liquidate our
  208. 8:33open position
  209. 8:35let's begin first i will define a
  210. 8:38property called short
  211. 8:41ema
  212. 8:43and it has to return ta.ema
  213. 8:46and then i have to pass the candles
  214. 8:49and for the period i will pass 20.
  215. 8:51then i duplicate this one and create
  216. 8:53another one and rename it into long ema
  217. 8:58and for the period i will pass 40.
  218. 9:00inside my shoot long method i will say
  219. 9:03return
  220. 9:05self dot
  221. 9:06short ema
  222. 9:08is bigger than
  223. 9:10self.long email
  224. 9:14next i will go inside my
  225. 9:16go long method
  226. 9:18to specify the position sizing
  227. 9:21i will define a variable called quantity
  228. 9:24and assign it
  229. 9:25utils
  230. 9:27dot
  231. 9:29size to quantity
  232. 9:32and i will pass
  233. 9:34my balance
  234. 9:35next i have to pass entry price so
  235. 9:37actually let's define the entry price
  236. 9:39first
  237. 9:41so i'll say entry underline price equals
  238. 9:44to
  239. 9:45self.price which points to the closing
  240. 9:48price of the current candle now that i
  241. 9:50have the entry price i can pass it
  242. 9:52inside my size to quantity utility
  243. 9:54function
  244. 9:55now that we have both the quantity and
  245. 9:57entry price we can define our entry
  246. 9:59order i'll say
  247. 10:01self dot
  248. 10:03by
  249. 10:04equals
  250. 10:05quantity
  251. 10:07comma
  252. 10:08entry price next we have to say that
  253. 10:10whenever our entry condition is no
  254. 10:13longer valid we want to liquidate our
  255. 10:15open position
  256. 10:18def
  257. 10:18update position
  258. 10:21if
  259. 10:22self dot
  260. 10:24short ema
  261. 10:25is less or equal than
  262. 10:28self dot long ema
  263. 10:31self.liquidate
  264. 10:33all right now let's go and try to
  265. 10:35execute this strategy instead
  266. 10:43so it looks like we actually executed 55
  267. 10:46total trades
  268. 10:48and the piano is -12
  269. 10:51other than this new chart that shows the
  270. 10:53equity curve we still have access to the
  271. 10:56legacy chart which is what the cli
  272. 10:58version used to generate i'm gonna open
  273. 11:00the file that i just downloaded
  274. 11:02and here you can even see the buy and
  275. 11:04sell orders on the chart
  276. 11:08let's take a look at the cons stats
  277. 11:09report i'm gonna download it and open it
  278. 11:12with firefox
  279. 11:13there are many more
  280. 11:15charts and metrics inside the constant
  281. 11:18reports but because we didn't execute
  282. 11:20many trades and the period was really
  283. 11:22short we don't see much data inside
  284. 11:25these charts
  285. 11:27anyways nonetheless they are useful
  286. 11:30now allow me to show you other features
  287. 11:32of the back testing page more
  288. 11:34specifically the features that are new
  289. 11:36and you couldn't deal with the cli
  290. 11:38version
  291. 11:39so let's say that i am curious to know
  292. 11:41what would have been the performance of
  293. 11:43my strategy with another time frame and
  294. 11:46it would be really useful if i could
  295. 11:48have them inside different tabs this
  296. 11:50will make it easier for me to compare
  297. 11:52the performance of various time frames
  298. 11:55fortunately we can do exactly that with
  299. 11:57the new dashboard
  300. 11:59i can either
  301. 12:00do that by opening a new tab and then
  302. 12:02running a back test
  303. 12:04or pressing the start in a new tab
  304. 12:06button
  305. 12:07the other tab will be identical to the
  306. 12:10tab that we were in that means it will
  307. 12:12have the same symbol exchange time frame
  308. 12:14etc
  309. 12:16let's open a third one with the three
  310. 12:18minutes time frame
  311. 12:21i think that's enough for the back
  312. 12:22testing page just to recap the new
  313. 12:25feature which allows you to create tabs
  314. 12:27is incredibly powerful when it comes to
  315. 12:30comparing various time frames symbols or
  316. 12:33strategies
  317. 12:36inside our current strategy file we
  318. 12:38hardcoded the period numbers for our ema
  319. 12:41lines but what if we're not sure if we
  320. 12:43chose the best numbers so let's use the
  321. 12:45optimization mode of jesse so that it
  322. 12:47would find it for us
  323. 12:49i'll begin by defining a hyper
  324. 12:51parameters method which is supposed to
  325. 12:53return a list of dictionary objects
  326. 12:56for the short ema i will give it the
  327. 12:58name
  328. 12:59short
  329. 13:00ema
  330. 13:01period
  331. 13:04and the type is int
  332. 13:07and the minimum value
  333. 13:09will be 10
  334. 13:10and the maximum value
  335. 13:13will be
  336. 13:1430
  337. 13:15and the default value is going to be
  338. 13:1825. then i will duplicate this one
  339. 13:23and rename it into
  340. 13:25long ema period
  341. 13:27and the minimum is going to be now
  342. 13:3140
  343. 13:32the maximum number will be 80 and the
  344. 13:35default will be 50.
  345. 13:37now we need to tell our strategy to use
  346. 13:39these dynamic values instead of the
  347. 13:42hard-coded ones
  348. 13:44instead of the number 25 i'm gonna use
  349. 13:46the hyperparameter that i defined
  350. 13:48all happy parameter values are living
  351. 13:50inside a variable named hp which is
  352. 13:53stands for hyper parameters and the type
  353. 13:55of it is a dictionary so i'll type self
  354. 13:58dot hp
  355. 14:00then i have to pass the name as the key
  356. 14:02of my dictionary
  357. 14:04and i'll do the same for long ema
  358. 14:09i'm going to change the time frame and
  359. 14:12the period into something that i know
  360. 14:14will be profitable because the point of
  361. 14:16the optimization mode is to make your
  362. 14:18numbers better not turn them from
  363. 14:20negative into positive
  364. 14:22let's hit the start button
  365. 14:26so it just started generating the
  366. 14:28initial population this phase could take
  367. 14:31a while so i'm going to skip the video
  368. 14:33until it's over
  369. 14:34all right it just finished the first
  370. 14:36part of the optimization mode which was
  371. 14:38generating the initial population and
  372. 14:40the second half is going to be about
  373. 14:42improving from those individuals that
  374. 14:45already exist
  375. 14:47here we have a table which shows our
  376. 14:49best dna candidates they are ranked from
  377. 14:51the best one to the worst one we can
  378. 14:54also see some other useful metrics such
  379. 14:56as the number of total executed trades
  380. 14:59and the p l of this strategy over that
  381. 15:01period for the sake of this demo i'm
  382. 15:04gonna assume that my number one dna is
  383. 15:07actually my best one and the one that
  384. 15:09i'm going to use inside my strategy so
  385. 15:12i'm going to copy the dna string for my
  386. 15:15best candidate dna here and actually
  387. 15:17before injecting it inside my strategy
  388. 15:20i'm going to run another back test
  389. 15:22without this dna string so that we can
  390. 15:25compare to the results afterwards
  391. 15:35so here the panel number is 11.26
  392. 15:39and now i'm going to tell my strategy to
  393. 15:41use this dna
  394. 15:43we can do that by defining a method
  395. 15:45called
  396. 15:46dna
  397. 15:48which is supposed to return a string
  398. 15:50value
  399. 15:51so i'm just going to return this string
  400. 15:53dna value that i copied before
  401. 15:56let's open a new tab so we can compare
  402. 15:58the two together
  403. 15:59every other option is identical
  404. 16:02and now i can press the start button
  405. 16:09and if we check the panel number it is
  406. 16:11now
  407. 16:1212.88 percent versus before it was 11.26
  408. 16:21all right let's for a second assume that
  409. 16:23we have a profitable strategy and now we
  410. 16:26want to run it live in our current
  411. 16:28navbar there is no page for live trading
  412. 16:30and if i open the settings page there is
  413. 16:32no tab for live either
  414. 16:34to install the plugin you have to have
  415. 16:36an account on our website which is
  416. 16:38jesse.trade
  417. 16:40i'm gonna log in with an account which i
  418. 16:42registered a few minutes ago
  419. 16:45an active license is mandatory for
  420. 16:47installing the plugin as you can see i
  421. 16:49have already purchased one
  422. 16:52so now i can navigate into the api
  423. 16:54tokens page and create a new api token
  424. 16:57you can name this whatever you want i'm
  425. 16:59gonna name it dev i have to copy this
  426. 17:01license key here to open it inside my.mv
  427. 17:04file
  428. 17:08now to actually install the plugin i'm
  429. 17:10going to stop my current session
  430. 17:13and run jesse
  431. 17:16install
  432. 17:17live
  433. 17:18this command will download the correct
  434. 17:20version of the plugin for my operating
  435. 17:22system python vision and jc version and
  436. 17:25install it for me that's it now i can
  437. 17:27run the application again
  438. 17:30and this time we can find the live page
  439. 17:32here
  440. 17:33and if you open the settings page we
  441. 17:35have a live tab
  442. 17:39now what about docker
  443. 17:41i'm gonna stop this session
  444. 17:44and just so it would be clearer i'm
  445. 17:46gonna uninstall the plugin
  446. 17:51so if i execute jsurun again
  447. 17:54and check out the dashboard there
  448. 17:55shouldn't be a live tab anymore
  449. 17:57let's stop the session one more time and
  450. 18:00cd into the docker directory to install
  451. 18:02the plugin using docker all you have to
  452. 18:05do is to make sure the license key is
  453. 18:07set inside your dot mv file which we
  454. 18:09already did
  455. 18:10we should also return the values for
  456. 18:12postgres and redis from localhost into
  457. 18:16postgres and redis
  458. 18:18now i don't even have to run any
  459. 18:20specific command to install the plugin
  460. 18:23with docker all i have to do is to run
  461. 18:25the same command that we ran for docker
  462. 18:28before which is docker
  463. 18:30hyphen compose up
  464. 18:32this time because the value for my
  465. 18:34license key is set inside my dot mv file
  466. 18:37jesse is going to pick up on that and
  467. 18:39install the plugin right after starting
  468. 18:42the containers
  469. 18:48if i open my browser again
  470. 18:51and refresh it
  471. 18:53we can see that the live tab is here
  472. 18:55again
  473. 18:56so let's go ahead and start a paper
  474. 18:58trading session
  475. 19:00first i'm gonna choose the strategy and
  476. 19:02the one minute time frame is fine i'll
  477. 19:04also turn on the debug mode and press
  478. 19:06start give it a few seconds to import
  479. 19:09the initial candles
  480. 19:14all right
  481. 19:15we have a real time chart here
  482. 19:18and the table which shows me which
  483. 19:20symbol time frame and strategy i'm
  484. 19:22running
  485. 19:24i can check out the logs
  486. 19:28and error logs also which i don't have
  487. 19:30any right now
  488. 19:31here i can see my positions which i have
  489. 19:33only one closed one at the moment
  490. 19:36and here it should show me my open
  491. 19:38orders
  492. 19:39you can also adjust your candles chart
  493. 19:41like you used to on trading view
  494. 19:44i guess that's enough for the paper mode
  495. 19:46now let's try to run this strategy on a
  496. 19:49live market because this is a test
  497. 19:51strategy
  498. 19:52i think it's best to run it on a test
  499. 19:54net exchange rather than an actual one
  500. 19:56bioness has a pretty good test net that
  501. 19:58we can use for this purpose
  502. 20:01because this is a test net account i
  503. 20:03don't have to generate api keys they've
  504. 20:06already been generated for me all i have
  505. 20:08to do is to copy them from here
  506. 20:11and then open my.mv file again
  507. 20:14scroll down
  508. 20:15and paste it right here where it says
  509. 20:17testnet binance features api key
  510. 20:20one more time for the secret
  511. 20:23and we should be good to go
  512. 20:25now let's head back to js's dashboard
  513. 20:28press the new session button
  514. 20:30and turn off the paper trade option
  515. 20:34before i press the start button again i
  516. 20:36have to change the exchange into testnet
  517. 20:38binance features
  518. 20:44all right looks like it's working just
  519. 20:45fine let's check out the chart to make
  520. 20:47sure they are showing the same data
  521. 20:49here it is the one minute time frame
  522. 20:53and yes they look identical
  523. 20:56we are near the closing time of the
  524. 20:58current candle let's see if it's going
  525. 21:00to execute any trades 57 58 59
  526. 21:06all right looks like it didn't
  527. 21:08the reason for that is probably because
  528. 21:10our entry rules are not being met right
  529. 21:12now that means the short ema is not
  530. 21:14above the long ema so it's not going to
  531. 21:17open any trades
  532. 21:18so let's edit our current strategy and
  533. 21:21tell it to always open the long position
  534. 21:23for that i will tell our shoot long
  535. 21:25method to always return a true value
  536. 21:31i think it's also a good idea to modify
  537. 21:33our golang method to use multiple orders
  538. 21:36instead to do that i have to assign a
  539. 21:39list to myself.buy property
  540. 21:46so spending all of our capital is no
  541. 21:48longer a good idea so i will just use 10
  542. 21:51of my current capital per each order
  543. 22:02by the way notice that after a few
  544. 22:04seconds over starting the live session
  545. 22:06my balance is going to be automatically
  546. 22:09set for me the same as it is on the
  547. 22:11exchange
  548. 22:12so let's check out the exchange to make
  549. 22:14sure it is showing the same number both
  550. 22:16the available margin
  551. 22:19and my wallet balance are displaying the
  552. 22:21same number
  553. 22:22there's only five seconds until the next
  554. 22:24closing candle
  555. 22:29all right looks like we submitted a few
  556. 22:32orders
  557. 22:33one of them was a market order which got
  558. 22:35immediately executed and the other three
  559. 22:38are limit orders and they are active
  560. 22:40that means i can see them on my chart
  561. 22:44i can also check out my current open
  562. 22:46position the quantity of it
  563. 22:49current price entry price p l
  564. 22:53and if i go on the testnet website i can
  565. 22:55see the same numbers here
  566. 22:58so it looks like they are both in sync
  567. 23:02and here are the orders that are
  568. 23:04currently active
  569. 23:12we are near to the next closing candle
  570. 23:14and according to our strategy it should
  571. 23:16liquidate all our open positions
  572. 23:19and exactly that just happened
  573. 23:22and all of our previous orders have
  574. 23:24either the status of executed or
  575. 23:27cancelled
  576. 23:28and if we check the exchange we should
  577. 23:30see the same thing
  578. 23:32no open positions and no open orders and
  579. 23:34that's it there were more features to
  580. 23:36cover but i wanted to keep this video
  581. 23:38short so make sure to give this release
  582. 23:39a try and see what's new for yourself in
  583. 23:41the near future i will be making more
  584. 23:43tutorials about algo trading so make
  585. 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.