Open RealJohnGalt opened 9 years ago
As a note: I considered using TK or Wx for the interface, but the problem is aesthetics. I believe it would be better to use a layer to bridge the gap between the GUI code, and use pygobject for gtk3 support in linux (get the pretty gnome/ubuntuisms). OSX users could get a cocoa interface using PyObjc, and Pythonwin (or a "less native" gui) could be used for windows.
Realistically due to userbase, it would go Linux pygobject => windows => osx. After step 4 in the summary above, it would be rather quick to sychronously work on windows and osx support however.
Sounds like a pretty ambitious project. I'm here and will help bug test if you need anything. I can't code for shit, but I'm pretty decent at finding glitches. :)
Thank you, I always appreciate the help.
I have the base for the topmost bullet done. Onto the second and third for now since I'm a bit more motivated seeing something pretty :).
The HeaderBar "Start/Stop" button is a ToggleButton. It will start/stop main thread on toggle.
Looks good. It's clean and functional. can't wait to try it.
Ty @Hapexamendios.
Update:
Edit: Just noticed we need to also store and include trade time.
gui-prep branch for some of the backend work I've committed/merged. I'm holding off on the new (very wip) websocket api for now (though I might need to merge it in sooner due to some threading asyncio loop issues I've run into).
start/stop functionality now working with a new process.
I'm working on the Trade Indicator selection page now and attempting to make it as intuitive as possible. I'm also getting the gui layer setup for configurables using dictionaries and lists for serving options/descriptions.
The Trade Indicator selection page has all indicators listed down the left side of the page, with "combine" and "independent" checkboxes on the right. There are "New," "Save," and "Remove" buttons which add/remove at the top depending on configuration. You can select indicators to combine, then independent indicators, and click "Save," then start all over if "New" is clicked again. You can remove the previous configuration by clicking "Remove" next to the listed configuration.
I'm having a hard time coming up with a good name for this page. I don't believe that "Trade Indicators" is a very good name any longer. Any suggestions?
Hmmm Indicator index? :)
Thank you @Hapexamendios .
I like it better than "Trade Indicators," but I don't think it describes the functionality for setting the indicators to be used. I just came up with a new idea though.
What do you think of "Indicator Strategy," or "Indicator Strategies?" Something like "Trade Strategy" seems to be most descriptive, but I don't want people to think it only applies to trader and not simulator. I might be over thinking this though :).
Anyway, I'm open to as many ideas as you can throw out. It will be a bit before this is completely ready for release, so names can change easily.
What about just "Strategy" or "Strategies"?
I like strategies. :)
It's decided :+1:
Regarding the "rewrite," it's going to be rather minor at first. I'm focusing on getting the GUI layer done and integrated. From there I'll be working on threading, making indicators take arguments, and store in separate keys using arguments. Former capabilities will be used for preset support to allow running multiple instances of an indicator with differing configurations.
I'd like to end up with a repo of preset strategies the GUI layer can pull from. If a user would like to share a strategy preset, they may do so with a pull request on the repo.
Preset support is going to be the absolute last to be completed. After preset support, windows and osx GUIs will be thrown together using GUI layer.
Indicator configuration page and indicator configuration backend (guilayer) nearly complete (https://github.com/Galts-Gulch/avarice/commits/gui-prep). Strategies page up next, then general configuration page/backend.
Indicator page getting there. Needs some guilayer work for adjustment sizes for SpinButtons, layout work (divider underneath Indicator row for instance), ComboBox types added, buttons sorted in a more sane manner (like config.ini), and defaults loaded for each button type. All indicator pages are generated from guilayer to make the code more portable for different gui.
Once I have a good structure, the general configuration page will be quick to hammer out. The only difference will be a stack_switcher (like the history tab in previous images) for General Configuration. Due to the number of indicators, this wasn't a good option for Indicators.
Indicator page uses a hidden notebook for each indicator. indicator pages are stored in an auto scroll window. Changing the Indicator ComboBox changes the notebook page and ComboBox default on the selected page.
I've been rather busy recently, but almost have the GUI and gui-prep complete :+1:
Edit: have a few new TODOs including "restart" prompts on configuration changes, gtk3 notifier support, and some threading improvements.
Good stuff!
Thanks man.
New TODO:
After first release:
Also, will probably reset versioning entirely and be saner about it. I don't want to give people the wrong idea about the project.
Yes, this is still a WIP. I got held up with real work, trading, and getting a decent API figured out.
This is definitely interesting, I am hoping I can contribute soon! :+1:
I've decided to change the direction of Avarice a bit after being rather aimless with this project for quite some time.
After getting new threaded/locking API code half done, I decided to redo most of Avarice to be fully threaded. I'm also working on a gtk3 gui and a layer between gui, threads, config files, and logging to support new native gui easier. This will additionally allow multiple indicator instances to run side by side if used in a "preset" (described below).
Next I'll be redoing configobj support in the layer to support reading config presets. Any new indicator level configuration (combined configuration for trading) will be written to a preset in this path. At launch, you may select which created presets you which to run, and they'll be run separately.
I'm starting with the gtk3 gui (using pygobject) so I can see the progress imediately and be better motivated on the project.
To reiterate and summarize:
(after some release at this point):
I still believe that with a decent interface, there are many traders who want something easy to configure with trade strategy presets, but don't want to give their API keys to a web trading platform.