本文整理汇总了C#中QuantConnect.Packets.AlgorithmNodePacket类的典型用法代码示例。如果您正苦于以下问题:C# AlgorithmNodePacket类的具体用法?C# AlgorithmNodePacket怎么用?C# AlgorithmNodePacket使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
AlgorithmNodePacket类属于QuantConnect.Packets命名空间,在下文中一共展示了AlgorithmNodePacket类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ConsoleResultHandler
/********************************************************
* PUBLIC CONSTRUCTOR
*********************************************************/
/// <summary>
/// Console result handler constructor.
/// </summary>
/// <remarks>Setup the default sampling and notification periods based on the backtest length.</remarks>
public ConsoleResultHandler(AlgorithmNodePacket packet)
{
FinalStatistics = new Dictionary<string, string>();
Log.Trace("Launching Console Result Handler: QuantConnect v2.0");
Messages = new ConcurrentQueue<Packet>();
Charts = new ConcurrentDictionary<string, Chart>();
_chartLock = new Object();
_isActive = true;
// we expect one of two types here, the backtest node packet or the live node packet
if (packet is BacktestNodePacket)
{
var backtest = packet as BacktestNodePacket;
_algorithmNode = new BacktestConsoleStatusHandler(backtest);
}
else
{
var live = packet as LiveNodePacket;
if (live == null)
{
throw new ArgumentException("Unexpected AlgorithmNodeType: " + packet.GetType().Name);
}
_algorithmNode = new LiveConsoleStatusHandler(live);
}
_resamplePeriod = _algorithmNode.ComputeSampleEquityPeriod();
//Notification Period for pushes:
_notificationPeriod = TimeSpan.FromSeconds(5);
}
示例2: Initialize
public void Initialize(IAlgorithm algorithm, AlgorithmNodePacket job, IResultHandler resultHandler, IMapFileProvider mapFileProvider)
{
if (algorithm.SubscriptionManager.Subscriptions.Count == 0 && algorithm.Universes.IsNullOrEmpty())
{
throw new Exception("No subscriptions registered and no universe defined.");
}
_algorithm = algorithm;
_resultHandler = resultHandler;
_mapFileProvider = mapFileProvider;
_subscriptions = new ConcurrentDictionary<Symbol, Subscription>();
_cancellationTokenSource = new CancellationTokenSource();
IsActive = true;
Bridge = new BusyBlockingCollection<TimeSlice>(100);
var ffres = Time.OneSecond;
_fillForwardResolution = Ref.Create(() => ffres, res => ffres = res);
// find the minimum resolution, ignoring ticks
ffres = ResolveFillForwardResolution(algorithm);
// add each universe selection subscription to the feed
foreach (var universe in _algorithm.Universes)
{
var startTimeUtc = _algorithm.StartDate.ConvertToUtc(_algorithm.TimeZone);
var endTimeUtc = _algorithm.EndDate.ConvertToUtc(_algorithm.TimeZone);
AddUniverseSubscription(universe, startTimeUtc, endTimeUtc);
}
}
示例3: Initialize
/// <summary>
/// This method is called when a new job is received.
/// </summary>
/// <param name="job">The job that is being executed</param>
public void Initialize(AlgorithmNodePacket job)
{
_job = job;
//Show warnings if the API token and UID aren't set.
if (_job.UserId == 0)
{
MessageBox.Show("Your user id is not set. Please check your config.json file 'job-user-id' property.", "LEAN Algorithmic Trading", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (_job.Channel == "")
{
MessageBox.Show("Your API token is not set. Please check your config.json file 'api-access-token' property.", "LEAN Algorithmic Trading", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
_liveMode = job is LiveNodePacket;
var url = GetUrl(job, _liveMode);
#if !__MonoCS__
_geckoBrowser.Navigate(url);
#else
_monoBrowser.Navigate(url);
#endif
}
示例4: BacktestingRealTimeHandler
/********************************************************
* PUBLIC CONSTRUCTOR
*********************************************************/
/// <summary>
/// Setup the algorithm data, cash, job start end date etc.
/// </summary>
public BacktestingRealTimeHandler(IAlgorithm algorithm, AlgorithmNodePacket job)
{
//Initialize:
_algorithm = algorithm;
_events = new List<RealTimeEvent>();
_job = job;
}
示例5: BacktestingRealTimeHandler
/********************************************************
* PUBLIC CONSTRUCTOR
*********************************************************/
/// <summary>
/// Setup the algorithm data, cash, job start end date etc.
/// </summary>
public BacktestingRealTimeHandler(IAlgorithm algorithm, AlgorithmNodePacket job)
{
//Initialize:
_algorithm = algorithm;
_events = new List<RealTimeEvent>();
_job = job;
_today = new Dictionary<SecurityType, MarketToday>();
}
示例6: Initialize
public void Initialize(AlgorithmNodePacket job,
IMessagingHandler messagingHandler,
IApi api,
IDataFeed dataFeed,
ISetupHandler setupHandler,
ITransactionHandler transactionHandler)
{
_job = job;
}
示例7: LiveTradingRealTimeHandler
/********************************************************
* PUBLIC CONSTRUCTOR
*********************************************************/
/// <summary>
/// Initialize the realtime event handler with all information required for triggering daily events.
/// </summary>
public LiveTradingRealTimeHandler(IAlgorithm algorithm, IDataFeed feed, IResultHandler results, IBrokerage brokerage, AlgorithmNodePacket job)
{
//Initialize:
_algorithm = algorithm;
_events = new List<RealTimeEvent>();
_today = new Dictionary<SecurityType, MarketToday>();
_feed = feed;
_results = results;
}
示例8: Ping
public Ping(AlgorithmManager algorithmManager, IApi api, IResultHandler resultHandler, IMessagingHandler messagingHandler, AlgorithmNodePacket job)
{
_api = api;
_job = job;
_resultHandler = resultHandler;
_messagingHandler = messagingHandler;
_algorithmManager = algorithmManager;
_exitEvent = new ManualResetEventSlim(false);
}
示例9: DefaultBrokerageMessageHandler
/// <summary>
/// Initializes a new instance of the <see cref="DefaultBrokerageMessageHandler"/> class
/// </summary>
/// <param name="algorithm">The running algorithm</param>
/// <param name="job">The job that produced the algorithm</param>
/// <param name="api">The api for the algorithm</param>
/// <param name="initialDelay"></param>
/// <param name="openThreshold">Defines how long before market open to re-check for brokerage reconnect message</param>
public DefaultBrokerageMessageHandler(IAlgorithm algorithm, AlgorithmNodePacket job, IApi api, TimeSpan? initialDelay = null, TimeSpan? openThreshold = null)
{
_api = api;
_job = job;
_algorithm = algorithm;
_connected = true;
_openThreshold = openThreshold ?? DefaultOpenThreshold;
_initialDelay = initialDelay ?? DefaultInitialDelay;
}
示例10: Initialize
/// <summary>
/// Initializes the data feed for the specified job and algorithm
/// </summary>
public void Initialize(IAlgorithm algorithm, AlgorithmNodePacket job, IResultHandler resultHandler, IMapFileProvider mapFileProvider, IFactorFileProvider factorFileProvider)
{
_algorithm = algorithm;
_resultHandler = resultHandler;
_mapFileProvider = mapFileProvider;
_factorFileProvider = factorFileProvider;
_subscriptions = new SubscriptionCollection();
_universeSelection = new UniverseSelection(this, algorithm, job.Controls);
_cancellationTokenSource = new CancellationTokenSource();
IsActive = true;
var threadCount = Math.Max(1, Math.Min(4, Environment.ProcessorCount - 3));
_controller = new ParallelRunnerController(threadCount);
_controller.Start(_cancellationTokenSource.Token);
var ffres = Time.OneMinute;
_fillForwardResolution = Ref.Create(() => ffres, res => ffres = res);
// wire ourselves up to receive notifications when universes are added/removed
algorithm.UniverseManager.CollectionChanged += (sender, args) =>
{
switch (args.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (var universe in args.NewItems.OfType<Universe>())
{
var config = universe.Configuration;
var start = _frontierUtc != DateTime.MinValue ? _frontierUtc : _algorithm.StartDate.ConvertToUtc(_algorithm.TimeZone);
var marketHoursDatabase = MarketHoursDatabase.FromDataFolder();
var exchangeHours = marketHoursDatabase.GetExchangeHours(config);
Security security;
if (!_algorithm.Securities.TryGetValue(config.Symbol, out security))
{
// create a canonical security object if it doesn't exist
security = new Security(exchangeHours, config, _algorithm.Portfolio.CashBook[CashBook.AccountCurrency], SymbolProperties.GetDefault(CashBook.AccountCurrency));
}
var end = _algorithm.EndDate.ConvertToUtc(_algorithm.TimeZone);
AddSubscription(new SubscriptionRequest(true, universe, security, config, start, end));
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (var universe in args.OldItems.OfType<Universe>())
{
RemoveSubscription(universe.Configuration);
}
break;
default:
throw new NotImplementedException("The specified action is not implemented: " + args.Action);
}
};
}
示例11: GetUrl
/// <summary>
/// Get the URL for the embedded charting
/// </summary>
/// <param name="job">Job packet for the URL</param>
/// <param name="liveMode">Is this a live mode chart?</param>
/// <param name="holdReady">Hold the ready signal to inject data</param>
private static string GetUrl(AlgorithmNodePacket job, bool liveMode = false, bool holdReady = false)
{
var url = "";
var hold = holdReady == false ? "0" : "1";
var embedPage = liveMode ? "embeddedLive" : "embedded";
url = string.Format(
"https://www.quantconnect.com/terminal/{0}?user={1}&token={2}&pid={3}&version={4}&holdReady={5}&bid={6}",
embedPage, job.UserId, job.Channel, job.ProjectId, Globals.Version, hold, job.AlgorithmId);
return url;
}
示例12: Initialize
/// <summary>
/// Initializes the data feed for the specified job and algorithm
/// </summary>
public void Initialize(IAlgorithm algorithm, AlgorithmNodePacket job, IResultHandler resultHandler, IMapFileProvider mapFileProvider, IFactorFileProvider factorFileProvider)
{
_algorithm = algorithm;
_resultHandler = resultHandler;
_mapFileProvider = mapFileProvider;
_factorFileProvider = factorFileProvider;
_subscriptions = new ConcurrentDictionary<Symbol, Subscription>();
_universeSelection = new UniverseSelection(this, algorithm, job.Controls);
_cancellationTokenSource = new CancellationTokenSource();
IsActive = true;
var threadCount = Math.Max(1, Math.Min(4, Environment.ProcessorCount - 3));
_controller = new ParallelRunnerController(threadCount);
_controller.Start(_cancellationTokenSource.Token);
var ffres = Time.OneSecond;
_fillForwardResolution = Ref.Create(() => ffres, res => ffres = res);
// find the minimum resolution, ignoring ticks
ffres = ResolveFillForwardResolution(algorithm);
// wire ourselves up to receive notifications when universes are added/removed
algorithm.UniverseManager.CollectionChanged += (sender, args) =>
{
switch (args.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (var universe in args.NewItems.OfType<Universe>())
{
var start = _frontierUtc != DateTime.MinValue ? _frontierUtc : _algorithm.StartDate.ConvertToUtc(_algorithm.TimeZone);
AddUniverseSubscription(universe, start, _algorithm.EndDate.ConvertToUtc(_algorithm.TimeZone));
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (var universe in args.OldItems.OfType<Universe>())
{
Subscription subscription;
if (_subscriptions.TryGetValue(universe.Configuration.Symbol, out subscription))
{
RemoveSubscription(subscription);
}
}
break;
default:
throw new NotImplementedException("The specified action is not implemented: " + args.Action);
}
};
}
示例13: LeanWinForm
//private GeckoWebBrowser _geckoBrowser;
/// <summary>
/// Create the UX.
/// </summary>
/// <param name="notificationHandler">Messaging system</param>
/// <param name="job">Job to use for URL generation</param>
public LeanWinForm(IMessagingHandler notificationHandler, AlgorithmNodePacket job)
{
InitializeComponent();
//Form Setup:
CenterToScreen();
WindowState = FormWindowState.Maximized;
Text = "QuantConnect Lean Algorithmic Trading Engine: v" + Globals.Version;
//Save off the messaging event handler we need:
_job = job;
_liveMode = job is LiveNodePacket;
_messaging = (EventMessagingHandler)notificationHandler;
var url = GetUrl(job, _liveMode);
//GECKO WEB BROWSER: Create the browser control
// https://www.nuget.org/packages/GeckoFX/
// -> If you don't have IE.
//_geckoBrowser = new GeckoWebBrowser { Dock = DockStyle.Fill, Name = "browser" };
//_geckoBrowser.DOMContentLoaded += BrowserOnDomContentLoaded;
//_geckoBrowser.Navigate(url);
//splitPanel.Panel1.Controls.Add(_geckoBrowser);
// MONO WEB BROWSER: Create the browser control
// Default shipped with VS and Mono. Works OK in Windows, and compiles in linux.
_monoBrowser = new WebBrowser() {Dock = DockStyle.Fill, Name = "Browser"};
_monoBrowser.DocumentCompleted += MonoBrowserOnDocumentCompleted;
_monoBrowser.Navigate(url);
splitPanel.Panel1.Controls.Add(_monoBrowser);
//Setup Event Handlers:
_messaging.DebugEvent += MessagingOnDebugEvent;
_messaging.LogEvent += MessagingOnLogEvent;
_messaging.RuntimeErrorEvent += MessagingOnRuntimeErrorEvent;
_messaging.HandledErrorEvent += MessagingOnHandledErrorEvent;
_messaging.BacktestResultEvent += MessagingOnBacktestResultEvent;
_logging = Log.LogHandler as QueueLogHandler;
//Show warnings if the API token and UID aren't set.
if (_job.UserId == 0)
{
MessageBox.Show("Your user id is not set. Please check your config.json file 'job-user-id' property.", "LEAN Algorithmic Trading", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (_job.Channel == "")
{
MessageBox.Show("Your API token is not set. Please check your config.json file 'api-access-token' property.", "LEAN Algorithmic Trading", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
示例14: Setup
/// <summary>
/// Intializes the real time handler for the specified algorithm and job
/// </summary>
public void Setup(IAlgorithm algorithm, AlgorithmNodePacket job, IResultHandler resultHandler, IApi api)
{
//Initialize:
_api = api;
_algorithm = algorithm;
_resultHandler = resultHandler;
_cancellationTokenSource = new CancellationTokenSource();
var todayInAlgorithmTimeZone = DateTime.UtcNow.ConvertFromUtc(_algorithm.TimeZone).Date;
// refresh the market hours for today explicitly, and then set up an event to refresh them each day at midnight
RefreshMarketHoursToday(todayInAlgorithmTimeZone);
// every day at midnight from tomorrow until the end of time
var times =
from date in Time.EachDay(todayInAlgorithmTimeZone.AddDays(1), Time.EndOfTime)
select date.ConvertToUtc(_algorithm.TimeZone);
Add(new ScheduledEvent("RefreshMarketHours", times, (name, triggerTime) =>
{
// refresh market hours from api every day
RefreshMarketHoursToday(triggerTime.ConvertFromUtc(_algorithm.TimeZone).Date);
}));
// add end of day events for each tradeable day
Add(ScheduledEventFactory.EveryAlgorithmEndOfDay(_algorithm, _resultHandler, todayInAlgorithmTimeZone, Time.EndOfTime, ScheduledEvent.AlgorithmEndOfDayDelta, DateTime.UtcNow));
// add end of trading day events for each security
foreach (var security in _algorithm.Securities.Values.Where(x => !x.SubscriptionDataConfig.IsInternalFeed))
{
// assumes security.Exchange has been updated with today's hours via RefreshMarketHoursToday
Add(ScheduledEventFactory.EverySecurityEndOfDay(_algorithm, _resultHandler, security, todayInAlgorithmTimeZone, Time.EndOfTime, ScheduledEvent.SecurityEndOfDayDelta, DateTime.UtcNow));
}
foreach (var scheduledEvent in _scheduledEvents)
{
// zoom past old events
scheduledEvent.Value.SkipEventsUntil(algorithm.UtcTime);
// set logging accordingly
scheduledEvent.Value.IsLoggingEnabled = Log.DebuggingEnabled;
}
}
示例15: Initialize
/// <summary>
/// Intializes the real time handler for the specified algorithm and job
/// </summary>
public void Initialize(IAlgorithm algorithm, AlgorithmNodePacket job, IResultHandler resultHandler, IApi api)
{
//Initialize:
_api = api;
_algorithm = algorithm;
_resultHandler = resultHandler;
_events = new ConcurrentDictionary<string, ScheduledEvent>();
_cancellationTokenSource = new CancellationTokenSource();
var todayInAlgorithmTimeZone = DateTime.UtcNow.ConvertFromUtc(_algorithm.TimeZone).Date;
// refresh the market hours for today explicitly, and then set up an event to refresh them each day at midnight
RefreshMarketHoursToday(todayInAlgorithmTimeZone);
// every day at midnight from tomorrow until the end of time
var times =
from date in Time.EachDay(todayInAlgorithmTimeZone.AddDays(1), Time.EndOfTime)
select date.ConvertToUtc(_algorithm.TimeZone);
AddEvent(new ScheduledEvent("RefreshMarketHours", times, (name, triggerTime) =>
{
// refresh market hours from api every day
RefreshMarketHoursToday(triggerTime);
}));
// add end of day events for each tradeable day
AddEvent(ScheduledEvent.EveryAlgorithmEndOfDay(_algorithm, _resultHandler, todayInAlgorithmTimeZone, Time.EndOfTime, ScheduledEvent.AlgorithmEndOfDayDelta, DateTime.UtcNow));
// add end of trading day events for each security
foreach (var security in _algorithm.Securities.Values)
{
// assumes security.Exchange has been updated with today's hours via RefreshMarketHoursToday
AddEvent(ScheduledEvent.EverySecurityEndOfDay(_algorithm, _resultHandler, security, todayInAlgorithmTimeZone, Time.EndOfTime, ScheduledEvent.SecurityEndOfDayDelta, DateTime.UtcNow));
}
foreach (var scheduledEvent in _events.Values)
{
scheduledEvent.IsLoggingEnabled = true;
}
}