PilotFish 23 Posted February 1, 2020 (edited) Hey Mike, I have some ideas to make this more intuitive for an end user. I think the program should automatically create folder structure and names for the end user while also giving the user the option to edit this file structure if they so choose. This will allow the end user a much more user-friendly experience. Perhaps they only pick the parent folder where everything will be housed. So a dialogue box could appear at the beginning asking if they just want to use the default file structure and they hit OK and are on their way, you create the folders for them automatically, as well as log names and database names. You could have an advanced button that lets them edit file structure if they choose. But I think most end users just want the program to work initially, they don't want to have to set up all these things. Need to give end user error and how to fix on file structure page. Pressing 'OK' and then nothing happens is confusing. One of the big things I want in journal software is to be able to track statistics. I would love another page that lets me analyze statistics of different strategies. This would mean creating database structures for more things.l. I want to be able to enter into the DB on my error: FOMO or Greed, DAS key error etc similarly to how you enter strategy into DB. That way on the statistics page I can go back and look at how many trades had those qualities in them. Also the statistics page can include a lot just by what data is already collected with P&L, time frames, Price, average Risk:Reward etc over time. On opening, can you have it automatically load the charts? Pressing update to see my charts is annoying! I think there should be an R:R value for actual, right now it calculates theoretical with 'Target' instead of what actual profits were gained on the trade. Hey, thanks for helping me get this to work, I will continue to use it and if you're interested let you know of any bugs or ideas I have. Edited February 1, 2020 by PilotFish Share this post Link to post Share on other sites
Michael P 4 Posted February 2, 2020 This is good stuff. Thank you for taking the time. I am continuously interested in ideas and bug reports. You can continue to post here or open issues on github. Regarding the folder structure. Is there real value to allowing the user to edit the folder names? Your alternative of providing the feature as an advanced setting is better than the current but what about just removing the choice. What would be lost? The simplicity gained might be worth it. Could ask the same question for choosing the logfile name and database names. As the program evolved It seemed like I personally needed these choices but now maybe all three are just bad ux design. On tracking statistics. I had always planned on creating a long term statistics module of some kind. The minimal bit that is done is exporting trades to a an excel file called disciplined.xlsx. It tracks winning, losing and break even trades by month. The export was meant to be temporary until I create something better. This new statistics tracker page, I think, should give weekly, monthly and yearly statistics based on strategy, R:R, time of day, and success (red vs green). Your idea goes beyond what I had planned. Tracking FOMO, greed, DAS key errors seems useful. Its the etc part that needs work. Should there be a complete list of human traits that affect a trade? This list would allow the user to add items to it (amount of sleep, attitude ...). Or would it be better focus to limit it to universal things like greed, fear, and FOMO? Too many factors could make the analysis less meaningful. Next is how to view the statistics and the interface to filter what statistics to view. I am going to put this one aside for a little while. I need a better idea of what to create. If anyone has thoughts and design ideas, I would love to hear them. An aside, structjour could support importing trades and user data into other excel programs that already implement long term statistics. Or maybe an excel expert could update disciplined.xlsx to show more statistics. The imported trade data includes strategy but disciplined.xlsx does not use strategy in its statistics. I debated automatic chart loading and went back and forth. I am going to go ahead and put it in as an option and see how it works. The two main issues are the differing limits of each free data API (Barchart, Alphavantage, World Trade Data, and Finnhub) and the default chart interval, begin and end points. Actual RR value based on (original) stop loss and profit-- could be done. Share this post Link to post Share on other sites
PilotFish 23 Posted February 8, 2020 (edited) Mike, I agree, I think the folder structure should be completely gone, just didn't know if you wanted it that way for a specific reason. Also, for what to add for tracking statistics, the general idea is all that is needed, e.g. emotions, erros on trade. Keep it generic and allow the user to add what they feel is necessary. Whatever they add just gets attached to that trade in a table for lookup later. New idea: Can the program simply read the das spreadsheet only once, and add that data be placed in a persistent db like mysql? Then all future lookups can be run on Db, no excel sheet needed. This will remove the redundant need of constantly having to read in external sheets every time you want to look at trades. Edited February 8, 2020 by PilotFish Share this post Link to post Share on other sites
Michael P 4 Posted February 10, 2020 Ok then... The folders will be named and created without interaction. If they don't exist structjour will create the directories for the current and the upcoming month based on the system date. In case the system date is messed up, I will provide a separate menu entry to disable automatic creation and choose for which months to create directories. Likewise the sqlite database files and the logfile will be automatically named without input. Those are the easy ones. I think you are right that the statistics tracking stuff should include some user created categories. Some basic entries for everyone will include strategy, win/loss, risk/reward and time of day. Maybe after that its a blank slate. Allow the user to create keys with multiple possible values. Emotional state, for example, could be a key. But how to make this seamless to use? All my first implementation ideas are clunky. Also the ux to view statistics needs to be completely simple and intuitive and I have not come up with it. The database works more like you describe than is apparent. After reading a file, all access to the information goes through the database except that files can be re-read. This makes sense for DAS imports as the user may have additional trades. It does not make sense for IB statements as the files always include entire days. The interface is again the problem. It seems to provide more choices than are necessary or helpful. Its evolved to this point, but it needs to simplify further. Structjour can read in a yearly IB statement and all those trades are stored. When 'load' is pressed, the trades from a single day are loaded to be viewed and reviewed. But after all that, I think what you would like to see is automatically loading up the days' trades(?) I agree that should happen. It should probably happen when the user changes the date. Right now, changing the date just shows what is available and requires the user to read a file or load the data. If DAS is selected, changing the date shows whether a import file exists for the selected day. If database is selected, it shows how many trades are in the database for the day. The interface has to solve both locating possible files to read and loading already stored data. With very little change, I can see how to implement automatically loading the days trades when the database checkbox is checked. But I would really like to see a more intuitive and simplified interface that doesn't have all the check boxes and buttons. Finally support for other databases is planned by abstracting the database interface to django models. All databases supported by django will then be supported. Thanks for your feedback People with design ideas, please feel encouraged to contribute. Share this post Link to post Share on other sites
Michael P 4 Posted April 3, 2020 (edited) New version of structjour Version 0.9.92-Alpha.001 (09.92a1). New version is uploaded to PyPi pip install --update structjour Pilot Fish, changes include most of the things we discussed. Thanks * Added A Risk:Reward cell to show Actual P/L:Amount Risked * Added a DB migration procedure and added migration for the new RR * Automatically save to DB when user changes the date * Automatically load the trades from DB when user changes the date and has selected DB * Added a back up and restore procedure available in the menu. Backup the db and settings * Added an initialize to the backup. Meant for testing, but available for user. * Created code to handle stock API limit reached. * Created an automatic rollover for stock API. When one fails, try the next till one succeeds or all fail. * Added rules to the APIChooser to implement the automatic rollover. * Got rid of a button so now there is one button for db, one for DAS and one for IB statement * Set initialize defaults for logfile and db files. * Removed user choice of outdir and made it default only. * On first run, or runs that have lost the settings, pop up the file settings dialog before opening the program * Automated the create dirs procedure and removed it from file settings. User can override the auto gen in a seperate menu entry. Regarding the automatic loading of trades. Its implemented to load the trades in the DB when database is checked and the date changes. This makes it difficult to enter a specific date or to quickly scroll as every change tries to load the trades of the day. I am adding a popup calendar widget to help. Alternatively, it could load trades when the user presses enter instead of automatically loading but I think that kind of defeats the purpose. Regarding automatic loading of charts. I did not implement it because each chart is currently a seperate HTTPS call and for some APIs, it would eat through their quota of free calls and could take a long time. I plan to implement a caching of chart data for each day. That will lessen the demands on the REST HTTPS calls and then automatic chart loading will make more sense. It should mean that only one call per ticker for each day is required. It will also allow the charts that use this data to be interactive and respond to mouse location with price, time or volume info. I have started working on a statistics module. Next update should include the beginnings of that. As always design ideas, suggestions, comments , bug reports and even forking from github are all welcome. Nothing is set in stone. I think of this as BBT software because it represents the point of view I have gained as part of this community. Edited April 3, 2020 by Michael P Share this post Link to post Share on other sites
ecadaret 14 Posted May 2, 2020 @Michael P I am a novice Pythonista. Definitely a fan of open source tools like this you are working on. I'll throw my trades in and let you know of any feedback I have. Share this post Link to post Share on other sites
Michael P 4 Posted May 2, 2020 @ecadaret Glad to hear it. I have been putting a lot of work on it and the version on github has a lot of changes and you can check out the code.. https://github.com/MikePia/structjour. Share this post Link to post Share on other sites
ecadaret 14 Posted May 2, 2020 7 hours ago, Michael P said: @ecadaret Glad to hear it. I have been putting a lot of work on it and the version on github has a lot of changes and you can check out the code.. https://github.com/MikePia/structjour. Thank you! For ideas and inspiration, I would check out TraderVue and Edgewonk. Share this post Link to post Share on other sites
Michael P 4 Posted May 4, 2020 @ecadaret, Thanks for that suggestion. I had not looked at EdgeWonk before. Its breadth is dizzying. The soon upcoming statistics module will have similarities with TraderVue reports. The plan has always included a selection of charts that can be modified by selected date ranges and filtered by strategies and tags. TradeVue does that nicely with a fairly clean interface. I will release to PyPi a new version when the first set of charts are included in the statistics module. Share this post Link to post Share on other sites
Alastair 111 Posted May 4, 2020 9 hours ago, Michael P said: @ecadaret, Thanks for that suggestion. I had not looked at EdgeWonk before. Its breadth is dizzying. The soon upcoming statistics module will have similarities with TraderVue reports. The plan has always included a selection of charts that can be modified by selected date ranges and filtered by strategies and tags. TradeVue does that nicely with a fairly clean interface. I will release to PyPi a new version when the first set of charts are included in the statistics module. So ur saying tht TraderVue is better than EdgeWonk at the moment ? Just confirming...... Share this post Link to post Share on other sites
Michael P 4 Posted May 4, 2020 @Alastair I looked at EdgeWonk for the first time last night It seems to have a wide range of features. It seems to have a focus on long term views. I am not knowledgeable enough to make a general assessment and it would not be helpful for me to make a general comparison between the two. I noticed a couple of features in EdgeWonk I am interested in implementing. Sturctjour is focused day-trading and trading strategy. I am interested in features that help to identify, study and hone those skills. EdgeWonk had a couple of multi-day views that looked promising in that regard to me. TraderVue's reports include many chart types that will also be included in structjour. Share this post Link to post Share on other sites