The "Events Monitor" is a new tool recently introducted in QuantShare. It allows you to monitor and catch different QuantShare events and generate alerts, execute scripts, send emails... based on these events. Currently we support the following events: Symbol: Generated when a change happens to a ticker symbol (new data, information, new drawing...) NewTick: Generated on a new real time tick NewBar: Generated on a new real time bar MarketDepth: Generated when market depth changes for the analyzed security OrderStatus: Generated when an order status changes Alert: Generated when a new alert is triggered Note: All events except the first one are supported only in the real time version of QuantShare. More events will be added in newer versions. Please also note that you can use the script editor (Tools -> Script Editor) to create custom events. We will discuss how to do that in the end of this article. How to Monitor Events To start monitoring events, select "Tools" then "Events Monitor". This will bring a new form where you can select the events to display by clicking on the "All Events" button at the bottom. By default, all the events are displayed. At any moment, you can check the "Freeze" check box to stop updating the list. Each event comes with some attributes that are displayed in the "Values" column. The content or value of each attribute is displayed only if it is a numeric or text value. You will see something like "String[]" if the value is an array. In that case, you can access the different elements of the array using the Global script. More about this later in this article. How to Create an Alert based on an Event To create an alert for a specific event, click on the the "Create Alert" button at the bottom of the "Events Monitor" form. Name: Type here the name of the event Conditions: Specify the conditions that must be meet in order to trigger the Alert. All conditions must be met in order to trigger the alert. For each condition, you must first specify the event name, the field or attribute to check (You can see the different attributes in the "Events Monitor" under the "Values" column), the operation (Contains or equals to) and then the "Value" that must be checked. Happens within...: Specify the maximum number of seconds that separate the first and the last condition Notification: Select here how you want to be notified when the alert is triggered General Event: This allows you to generate a custom event when the alert is triggered As an example, in order to create an alert when you draw something on the GOOG chart, you need to create two conditions: Condition 1 Event Name: Symbol Field: symbols Operation: Contains Value: GOOG Condition 2 Event Name: Symbol Field: type Operation: Equals to Value: Drawing Using the Script Editor to Catch Events Open "Tools -> Script Editor" to create a global script. The global script allows you to control almost everything in QuantShare. When it comes to events, you can access the following two functions: Order.SendEvent: Send a custom event Order.SubscribeEvent: Subscribe to an event Example 1: // Generates a new event called "Hello" that has two attributes (Type and Value). Hashtable h = new Hashtable(); h.Add("Type", "message"); h.Add("Value", 1); Global.SendEvent("Hello", h); Example 2: // Display the message "Test" when the event "Hello" is received Global.SubscribeEvent("Hello", Receive); while(true) // Keep the script alive so that we can catch the "Hello" event { App.Main.Sleep(1000); } #functions# public void Receive(EventManager m, SubscribeThreadEventArgs e) { MessageBox.Show("Test"); } To test the above examples, create two scripts with the code in the example one and two then select the "Example 2" script, select "Settings -> Add current script to bookmark panel". Execute the script from the bookmark panel then select "Example 1" and execute it directly from the script editor by clicking on the "Execute" button in the toolbar. More information about the bookmark panel can be found here. Note that you can access the event attributes using the "e" variable of type SubsribeThreadEventArgs. That variable contains the following methods and properties: e.Event.GetElements() e.Event.GetNumeric(string attribute) e.Event.GetValue(string attribute) e.Event.Name e.Event.Timestamp
|