This problem begs for a solution via recursive query, which MySQL alone among commonly used DBMSs does not support. As a result, I think you'll need to perform the necessary recursion yourself if you're tied to MySQL. Each query might have this form:
SELECT user_id, SUM(requests) AS requests, FROM users JOIN trades ON users.id = trades.user_id WHERE users.parent_id = <PARENT_ID> AND trade_date_start BETWEEN <WINDOW_START_TIMESTAMP> AND <WINDOW_END_TIMESTAMP> GROUP BY user_id
You would need to process each result row and recursively issue the same sort of query for each user_id returned.
Since you'll be issuing possibly many queries with the same date filtering condition, you might speed it up by first creating a temporary table containing just those rows from
trades that fall in the window of interest, then using that (with no explicit date condition) instead of table