Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Contribution Guidelines #5

Open
hardvain opened this issue Dec 29, 2020 · 3 comments
Open

Contribution Guidelines #5

hardvain opened this issue Dec 29, 2020 · 3 comments

Comments

@hardvain
Copy link

Hi @amv-dev, I have been creating a technical analysis library in rust for my personal use for sometime now and I stumbled upon yata. Yata is much more comprehensive, performant than what I have managed to create. I wanted to understand what are the features planned for yata so that I can also start contributing. I am a beginner when it comes to rust knowledge but would be happy to contribute in whatever way I can. Please let me know your thoughts on the same.

Apart from the indicators, I also wanted to have a system to do backtest on the data as well. So please let me know if you also plan to include some backtesting module in yata.

@hardvain hardvain changed the title Planned features Contribution Guidelines Dec 29, 2020
@amv-dev
Copy link
Owner

amv-dev commented Dec 29, 2020

Hello @hardvain ! Thank you for you message.
For now I don't have any strict roadmap for this library. All I know is that next features will be Heikin Ashi candles conversion and time-frame conversion (it's already in the repo, but not published at crates.io yet).

I don't have any feedback from the community right now, so I can't plan any features, because I just don't know this features yet. I am not a professional trader or something like this. I just like programming, math and Rust. :)

This library has two goals:

  • Implement common indicators, which have a description from authoritative source. If you know some useful indicators and you can implement it (or just give some information about) - you are welcome.
  • Provide instruments (methods) to build your own indicators. If you know some useful function for operating on time-series - you are welcome.

To be clear: you are not forced to implement something by yourself. You can simply create an issue and provide information about methods, indicators or something else you think might be interesting to see in YaTA. It will helps a lot.

Backtesting is another big question. I don't think it is good idea to add backtesting right inside YaTA. I think it will be better if it will be a separate crate, f.e. something like yata-backtest or even yata-bt, or something else. For now I don't have any deep knowledge about backtesting, so I can't create it by myself right now.

Another great thing is visualization. I think it is very important when we talk about time-series to visualize it. The simplest idea is to create an interface to draw time-series into a simple .png or .jpg. The best way is use something like GTK and make an interactive shell for visualizing (f.e. like matplotlib in Python). But it is a way more complicated.

@hardvain
Copy link
Author

Thanks @amv-dev for the explanation. I myself am not a full time trader but have been trading for sometime. I was using trading view but was frustrated with the limitations of pinescript and hence started building my own library. I am barely breaking even at this moment when it comes to trading so I am not a successful one yet. However, the ability to use math and programming to find patterns is very addictive for me.

As for the features, I am currently trying to build a system that helps me answers the questions I have and help me in trading. In no proper order of priority, here is what I am trying to target:

  1. A library that provides basic methods on a timeseries(Yata already has this)
  2. Ability to build indicators using those methods (Yata has the necessary abstractions already)
  3. Ability to combine multiple indicators into a composite one (Yata already has this)
  4. Ability to have strategies (both simple and complex) that act on the result of one or more indicators and gives out buy and sell signals (Based on my skimming of yata code, at the moment, buy sell signals are baked into indicator results. Personally I feel it would be good to decouple the buy/sell/action signals from the indicator results as it helps implementing multiple strategies based on the same indicator result. If they are decoupled then an abstraction to create a strategy is required)
  5. Ability to encode decision tree based strategies where multiple instantiations of a strategy with different parameters are run for every candle and the best one based on the results are chosen dynamically(Something like https://www.tradingview.com/script/2dU5uyqL-Profitable-SuperTrend/)
  6. Ability to backtest these strategies (A separate module could also be good, however I slightly lean towards the same module)
  7. Ability to configure alerts like (Alert me if price crosses a value, if an indicator crosses a value etc)
  8. Visualization of the candles and indicator results (As you said it is the most complicated one. My thoughts were to try building a text based GUI using cursive/tui in the beginning, but I was also thinking of trying out WASM but thats very far away).
  9. Ability to build scanners that run in the background. For example, I want the list of securities that is in a downtrend in the 5 minute time frame, list of securities trading near support resistance etc

As you may have understood, my main motive for building a library was to serve me personally for trading. In that sense, I wanted to build a comprehensive system that helps me as soon as possible. Thats the reason I wanted to build backtesting, alerts etc in a single system. I would really happy to start contributing my ideas in yata.
In my view yata already has a very good base for building indicators and methods. The immediate things that are missing for me to use yata in my day to day trading is the ability to create strategies/backtest it and set alerts on it. I can start working on these areas. Whether it is going to be a separate module or not is something we can discuss in depth I believe.

Please let me know your thoughts on the above

@hardvain
Copy link
Author

hardvain commented Dec 30, 2020

@amv-dev I am not sure what you would think about having a separate strategy module. So I made a PR in my fork to give an example. Please have a look at hardvain#1

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

No branches or pull requests

2 participants