Combine open positions and watchlist pricing feeds into one intraday feed.
This commit is contained in:
@@ -26,6 +26,7 @@ namespace MarketData.Services
|
|||||||
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATEDAILY2 /DATE:");
|
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATEDAILY2 /DATE:");
|
||||||
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATELATESTPRICEOPENPOSITIONS");
|
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATELATESTPRICEOPENPOSITIONS");
|
||||||
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATELATESTPRICEWATCHLIST /WATCHLIST:");
|
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATELATESTPRICEWATCHLIST /WATCHLIST:");
|
||||||
|
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATEINTRADAYPRICING:");
|
||||||
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATELATESTANALYSTRATINGS");
|
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATELATESTANALYSTRATINGS");
|
||||||
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATEANALYSTRATINGS");
|
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATEANALYSTRATINGS");
|
||||||
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATESECFILINGSWATCHLIST /WATCHLIST:");
|
MDTrace.WriteLine(LogLevel.DEBUG,"UPDATESECFILINGSWATCHLIST /WATCHLIST:");
|
||||||
@@ -55,6 +56,7 @@ namespace MarketData.Services
|
|||||||
tasks.Add("UPDATEDAILY2",TaskUpdateDaily2);
|
tasks.Add("UPDATEDAILY2",TaskUpdateDaily2);
|
||||||
tasks.Add("UPDATELATESTPRICEOPENPOSITIONS",TaskUpdateLatestPriceOpenPositions);
|
tasks.Add("UPDATELATESTPRICEOPENPOSITIONS",TaskUpdateLatestPriceOpenPositions);
|
||||||
tasks.Add("UPDATELATESTPRICEWATCHLIST",TaskUpdateLatestPriceWatchList);
|
tasks.Add("UPDATELATESTPRICEWATCHLIST",TaskUpdateLatestPriceWatchList);
|
||||||
|
tasks.Add("UPDATEINTRADAYPRICING",TaskUpdateIntradayPricing);
|
||||||
tasks.Add("UPDATELATESTANALYSTRATINGS",TaskUpdateLatestAnalystRatings);
|
tasks.Add("UPDATELATESTANALYSTRATINGS",TaskUpdateLatestAnalystRatings);
|
||||||
tasks.Add("UPDATEANALYSTRATINGS",TaskUpdateAnalystRatings);
|
tasks.Add("UPDATEANALYSTRATINGS",TaskUpdateAnalystRatings);
|
||||||
tasks.Add("UPDATESECFILINGSWATCHLIST",TaskUpdateSECFilingsWatchList);
|
tasks.Add("UPDATESECFILINGSWATCHLIST",TaskUpdateSECFilingsWatchList);
|
||||||
@@ -180,7 +182,33 @@ namespace MarketData.Services
|
|||||||
if(!commandArgs.Has("WATCHLIST")){Console.WriteLine("UPDATELATESTPRICEWATCHLIST MISSING WATCHLIST");return;}
|
if(!commandArgs.Has("WATCHLIST")){Console.WriteLine("UPDATELATESTPRICEWATCHLIST MISSING WATCHLIST");return;}
|
||||||
UpdateLatestPriceWatchList(commandArgs.Coalesce<String>("WATCHLIST"));
|
UpdateLatestPriceWatchList(commandArgs.Coalesce<String>("WATCHLIST"));
|
||||||
await Task.FromResult(true);
|
await Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task TaskUpdateIntradayPricing(CommandArgs commandArgs)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(!CheckRunCriteria())return;
|
||||||
|
String watchListName="Valuations";
|
||||||
|
MDTrace.WriteLine(LogLevel.DEBUG,$"UPDATEINTRADAYPRICING");
|
||||||
|
List<String> watchlistSymbols = WatchListDA.GetWatchList(watchListName);
|
||||||
|
PortfolioTrades portfolioTrades=PortfolioDA.GetOpenTrades();
|
||||||
|
List<String> portfolioSymbols=(from PortfolioTrade portfolioTrade in portfolioTrades select portfolioTrade.Symbol).Distinct().ToList();
|
||||||
|
if(portfolioSymbols.Any(x=>x.Equals("SPY")))portfolioSymbols.Add("SH");
|
||||||
|
List<String> symbols = new List<String>();
|
||||||
|
symbols.AddRange(portfolioSymbols);
|
||||||
|
symbols.AddRange(watchlistSymbols);
|
||||||
|
symbols = symbols.Distinct().ToList();
|
||||||
|
MDTrace.WriteLine(LogLevel.DEBUG,$"Updating {symbols.Count} prices. Includes {portfolioSymbols.Count} open positions and {watchlistSymbols.Count} Valuation watchlist.");
|
||||||
|
PricingMarketDataHelper pricingMarketDataHelper=new PricingMarketDataHelper();
|
||||||
|
pricingMarketDataHelper.UpdateLatestPrices(symbols);
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
MDTrace.WriteLine(LogLevel.DEBUG,exception);
|
||||||
|
}
|
||||||
|
await Task.FromResult(true);
|
||||||
|
}
|
||||||
|
|
||||||
public async Task TaskUpdateLatestAnalystRatings(CommandArgs commandArgs)
|
public async Task TaskUpdateLatestAnalystRatings(CommandArgs commandArgs)
|
||||||
{
|
{
|
||||||
|
|||||||
38
README.md
38
README.md
@@ -82,32 +82,28 @@ Also note that 1>/dev/null is synonymous to, but more explicit than >/dev/null
|
|||||||
|
|
||||||
# sudo service cron reload , sudo service cron restart
|
# sudo service cron reload , sudo service cron restart
|
||||||
# cron helper app here -> https://cron.help/#*/5_9-17_*_*_1-5
|
# cron helper app here -> https://cron.help/#*/5_9-17_*_*_1-5
|
||||||
DOTNET_ROOT=/opt/dotnet
|
|
||||||
*/15 6-16 * * 1-5 /opt/MarketData/MarketData/mk LOADHEADLINESWATCHLIST /WATCHLIST:Valuations 2>&1 | logger -t headlines
|
|
||||||
*/5 5-16 * * 1-5 /opt/MarketData/MarketData/mk LOADPREMARKETDATA 2>&1 | logger -t premarket
|
|
||||||
*/5 9-16 * * 1-5 /opt/MarketData/MarketData/mk UPDATELATESTPRICEOPENPOSITIONS 2>&1 | logger -t priceopenpositions
|
|
||||||
*/5 9-16 * * 1-5 /opt/MarketData/MarketData/mk UPDATELATESTPRICEWATCHLIST /WATCHLIST:Valuations 2>&1 | logger -t pricewatchlist
|
|
||||||
*/30 9-16 * * 1-5 /opt/MarketData/MarketData/mk UPDATELATESTANALYSTRATINGS 2>&1 | logger -t analystratings
|
|
||||||
0 19 * * 1-5 /opt/MarketData/MarketData/mk UPDATEDAILY2 /DATE:$(date -d"-0 days" +\%m-\%d-\%Y) 2>&1 | logger -t updatedaily2
|
|
||||||
|
|
||||||
|
|
||||||
*/15 6-16 * * 1-5 /opt/MarketData/MarketData/mk LOADHEADLINESWATCHLIST /WATCHLIST:Valuations > /dev/null 2>&1
|
|
||||||
*/5 5-16 * * 1-5 /opt/MarketData/MarketData/mk LOADPREMARKETDATA > /dev/null 2>&1
|
|
||||||
*/5 9-16 * * 1-5 /opt/MarketData/MarketData/mk UPDATELATESTPRICEOPENPOSITIONS > /dev/null 2>&1
|
|
||||||
*/5 9-16 * * 1-5 /opt/MarketData/MarketData/mk UPDATELATESTPRICEWATCHLIST /WATCHLIST:Valuations > /dev/null 2>&1
|
|
||||||
*/30 9-16 * * 1-5 /opt/MarketData/MarketData/mk UPDATELATESTANALYSTRATINGS 2>&1 | logger -t analystratings
|
|
||||||
0 19 * * 1-5 /opt/MarketData/MarketData/mk UPDATEDAILY2 /DATE:$(date -d"-0 days" +\%m-\%d-\%Y) > /dev/null 2>&1
|
|
||||||
|
|
||||||
# m h dom mon dow command
|
# m h dom mon dow command
|
||||||
# sudo service cron reload , sudo service cron restart
|
# sudo service cron reload , sudo service cron restart
|
||||||
# cron helper app here -> https://cron.help/#*/5_9-17_*_*_1-5
|
# cron helper app here -> https://cron.help/#*/5_9-17_*_*_1-5
|
||||||
DOTNET_ROOT=/opt/dotnet
|
DOTNET_ROOT=/opt/dotnet
|
||||||
CRON_DIR=/opt/MarketData/MarketData
|
CRON_DIR=/opt/MarketData/MarketData
|
||||||
*/15 6-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk LOADHEADLINESWATCHLIST /WATCHLIST:Valuations > /dev/null 2>&1
|
*/15 6-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk LOADHEADLINESWATCHLIST /WATCHLIST:Valuations > /dev/null 2>&1
|
||||||
*/5 5-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk LOADPREMARKETDATA > /dev/null 2>&1
|
*/5 5-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk LOADPREMARKETDATA > /dev/null 2>&1
|
||||||
*/5 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATELATESTPRICEOPENPOSITIONS > /dev/null 2>&1
|
*/5 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATELATESTPRICEOPENPOSITIONS > /dev/null 2>&1
|
||||||
*/5 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATELATESTPRICEWATCHLIST /WATCHLIST:Valuations > /dev/null 2>&1
|
*/5 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATELATESTPRICEWATCHLIST /WATCHLIST:Valuations > /dev/null 2>&1
|
||||||
*/30 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATELATESTANALYSTRATINGS > /dev/null 2>&1
|
*/30 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATELATESTANALYSTRATINGS > /dev/null 2>&1
|
||||||
0 19 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATEDAILY2 /DATE:$(date -d"-0 days" +\%m-\%d-\%Y) > /dev/null 2>&1
|
0 19 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATEDAILY2 /DATE:$(date -d"-0 days" +\%m-\%d-\%Y) > /dev/null 2>&1
|
||||||
|
|
||||||
|
Here is the latest crontab
|
||||||
|
# m h dom mon dow command
|
||||||
|
# sudo service cron reload , sudo service cron restart
|
||||||
|
# cron helper app here -> https://cron.help/#*/5_9-17_*_*_1-5
|
||||||
|
DOTNET_ROOT=/opt/dotnet
|
||||||
|
CRON_DIR=/opt/MarketData/MarketData
|
||||||
|
*/15 6-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk LOADHEADLINESWATCHLIST /WATCHLIST:Valuations > /dev/null 2>&1
|
||||||
|
*/5 5-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk LOADPREMARKETDATA > /dev/null 2>&1
|
||||||
|
*/5 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATEINTRADAYPRICING > /dev/null 2>&1
|
||||||
|
*/30 9-16 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATELATESTANALYSTRATINGS > /dev/null 2>&1
|
||||||
|
0 19 * * 1-5 cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATEDAILY2 /DATE:$(date -d"-0 days" +\%m-\%d-\%Y) > /dev/null 2>&1
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user