Как насчет размещения расчетов в базе данных? У вас есть таблица EODData, и это здорово. Создайте другую таблицу, которая является вашими SummaryData, что-то вроде:
SummaryData
stockSymbol varchar(6) -- don't need nvarchar, since AMSE doesn't have characters outside of normal English alphabet.
SMA decimal
MCDA decimal
EMA decimal
Затем вы можете написать некоторые хранимые процедуры, которые будут выполняться в конце дня, и обновить эту таблицу на основе данных в вашей таблице EODData. Или вы можете написать триггер, чтобы каждая вставка таблицы EODData обновляла сводные данные в вашей базе данных.
Одним из недостатков этого является то, что вы помещаете некоторую бизнес-логику в базу данных. Другим недостатком является то, что вы будете обновлять статистические данные по биржевому символу, которые вам могут не понадобиться. Например, если никто никогда не хочет увидеть, что сделал XYZZ, то вычисления на него бессмысленны.
Однако эта вторая проблема смягчается тем фактом, что: 1. вы запускаете SP на сервере, который MSSQL может оптимизировать, и 2. вы можете запускать их в нерабочее время, когда все дома, поэтому, если это займет немного времени вы не затронуты. (Если честно, я бы предположил, что если они будут такими вычислениями, как скользящие средние, мин / макс и т. Д., SQL не будет таким медленным.)
Одним из преимуществ является то, что ваши запросы должны быть быстрыми, потому что вы можете написать
select stockSymbol from SummaryData where SMA > 10
вы уже сделали расчет.
Другим преимуществом является то, что данные будут меняться только один раз в день (в конце рабочего дня), но вы можете запрашивать несколько раз в течение дня. Например, вы хотите выполнить несколько разных запросов сегодня для всех данных, включая вчера. Если вы выполнили 10 запросов, а ваш партнер выполнил те же 10 запросов, вы просто выполнили те же вычисления. (По сути, напишите один раз, прочитайте много.)