Suggestions * Use C#/Java * Use Object-oriented programming concepts – classes, etc. * Use proper error handling. * Do extensive testing and provide testing results with screenshots. * Before coding let's have the screen mockups of the Screener Phase 1: Screener 1. Watch List Management - Create/Upload/Edit/Delete Watchlists 2. Data Download from Data Provider – Daily End of the day data only a. Start with Free options (YFinance!) 3. Options to select the columns to display and save them as a preset. 4. Options to display all assets or a watch list. 5. Option to save the result set as a watch list. 6. Options to set Sort criteria up to 5. 7. Option to select the asset type: Stock, ETF, etc. 8. Set Filters – dynamic & unlimited. See the screenshot below. a. This is the most important feature of this app. b. Based on the technical indicators, events, and fundamental data downloaded c. Presently all the rows added will be considered as ‘AND’ Technical Indicators 1. Moving Average - 5 2. Relative Strength Index – 2 (3 sets) a. Moving Averages - 2 3. Comparative Relative Strength - 2 a. Moving Averages - 2 4. Stochastic 5. MACD 6. Weighted Alpha (will provide the algorithm) 7. 12-month high low – price within x% Technical Events – (+ Green, - Red) 1. Number of days since crossover of all moving averages 2. Number of days since crossover of two RSI moving averages 3. Number of days since Zero-line crossover of RSI & moving averages. 4. Number of days since crossover of two CRS moving averages 5. Number of days since crossover of Main & Signal of Stochastic 6. Number of days since crossover of Main & Signal of MACD 7. Price within x% of 12-month high/low Property Values * Settings for all technical indicators. List of Display Columns * Symbol * Name * Close Price * Volume * All technical indicator values that are needed for crossover. * All events result as + / - with color code. Note: Initially, End-of-day data would be used but design the solution so that the intra-day analysis can be done without design/code change. Screenshot 1: Filters. https://www.barchart.com/stocks/stocks-screener Design Consideration * Design the Screener module keeping in mind that this will be part of a bigger app. * Study the Utility module. * Create Classes for all technical indicator sets. o Groups of 5 SMAs o Group of RSI and MA o Group of CRS and MA o Stochastic o MACD o SMA * Create a global Class/Var to save the technical indicator parameters. * Create a global Class/Var to save the technical result set for all timeframes. * Create a global Class/Var to save input parameters. ? Phase 2: Trader Summary * Implement dbms to maintain watchlist and ratings. * Implement additional time frames – 15M, 1H, 4H * Generate Buy/Sell/Close Signals * Possible classes/modules o DB Interface (to read and write to db) o Timeframe o Trade o Trade Strategy o Portfolio Management o Trade Actions o Money Management Property Values Property Values Comments Capital Use % Use Margin Yes/No Max Num of Open Trades Integer Trade Direction Long, Short or Both Trading: * Open Buy a trade when the Open Signal Rating crosses up. * Open Sell a trade when the Open Signal Rating crosses down. * Close Buy the trade when the Close Signal Rating crosses down. * Close Sell the trade when the Close Signal Rating crosses up. * Both Long & Short, Short would be reverse of Long. * Save trades in a database. * Find the margin information about each instrument to calculate a lot. Strategy * Create a sample strategy module to generate signals. o Rating > 0 Portfolio Management * Portfolio rebalancing will happen after the end of time frame (1D, 4H, 1H, etc.) as defined. Version 3: * CFD Trading on MT5 Forex Platform * Generate Forward/Historical Signals. * Trading in Demo/Real Account Version 4: * Trading on Interactive Trader Platform in Demo/Real Account