{"id":8096,"date":"2025-09-04T23:21:37","date_gmt":"2025-09-05T04:21:37","guid":{"rendered":"https:\/\/librarytestdev.wpenginepowered.com\/?post_type=doc&#038;p=8096"},"modified":"2025-09-04T23:23:48","modified_gmt":"2025-09-05T04:23:48","slug":"handling-trade-subscriptions","status":"publish","type":"doc","link":"https:\/\/library-staging.tradingtechnologies.com\/apis\/tt-net-sdk\/working-with-algos\/algo-server\/handling-trade-subscriptions\/","title":{"rendered":"Handling trade subscriptions"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Before you can launch an algo, you must first create an instance of the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class. Like the [instrtradesub class, the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class is derived from the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.TradeSubscription.html\">TradeSubscription<\/a>&nbsp;class. The&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.InstrumentTradeSubscription.html\">InstrumentTradeSubscription<\/a>&nbsp;class filters on a given exchange native instrument whereas the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class filters on a specific algo. The&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class is created as follows.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private AlgoLookup m_alookup = null;\nprivate AlgoTradeSubscription m_ats = null;\n\npublic void apiInstance_TTAPIStatusUpdate(object sender, TTAPIStatusUpdateEventArgs e)\n{\n\tif (e.IsReady)\n\t{\n\t\tm_alookup = new AlgoLookup(tt_net_sdk.Dispatcher.Current, \u201cTT Stop\u201d);\n\t\tProductDataEvent ev = m_alookup.Get();\n\t\tif (ev == ProductDataEvent.Found)\n\t\t{\n\t\t\t\/\/ Algo was found\n\t\t\tm_ats = new AlgoTradeSubscription(tt_net_sdk.Dispatcher.Current, m_alookup.Algo);\n\t\t\tm_ats.OrderUpdated += m_ats_OrderUpdated;\n\t\t\tm_ats.OrderAdded += m_ats_OrderAdded;\n\t\t\tm_ats.OrderDeleted += m_ats_OrderDeleted;\n\t\t\tm_ats.OrderFilled += m_ats_OrderFilled;\n\t\t\tm_ats.OrderRejected += m_ats_OrderRejected;\n\t\t\tm_ats.OrderBookDownload += m_ats_OrderBookDownload;\n\t\t\tm_ats.ExportValuesUpdated += m_ats_ExportValuesUpdated;\n\t\t\tm_ats.Start();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t\/\/ Algo was not found\n\t\t\tConsole.WriteLine(\"Cannot find algo: {0}\", ev.ToString());\n\t\t}\n\t}\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.TradeSubscription.html#tt_net_sdk_TradeSubscription_OrderBookDownload\">OrderBookDownload<\/a>&nbsp;event has fired, you can create an&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.OrderProfile.html\">OrderProfile<\/a>&nbsp;instance by calling the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.Algo.html#tt_net_sdk_Algo_GetOrderProfile\">GetOrderProfile()<\/a>&nbsp;method of the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.Algo.html\">Algo<\/a>&nbsp;instance, fill in the algo\u2019s parameters and launch an instance of an algo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note the new event named&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html#tt_net_sdk_AlgoTradeSubscription_ExportValuesUpdated\">ExportValuesUpdated<\/a>. This optional event is specifically used to receive updates for ADL algos that have exported values.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/library-staging.tradingtechnologies.com\/wp-content\/uploads\/2025\/09\/adl-algo-params.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The following code snippet shows the structure for this event handler.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void m_ats_ExportValuesUpdated(object sender, ExportValuesUpdatedEventArgs e)\n{\n\tforeach (string key in e.ExportValues.Keys)\n\t{\n\t\tConsole.WriteLine(\"Parameter Name = {0} and Parameter Value = {1}\", key, e.ExportValues&#91;key]);\n\t}\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note<\/strong>: Exported variable updates are coalesced at 250ms.<\/p>\n","protected":false},"excerpt":{"rendered":"<p class=\"wp-block-paragraph\">Before you can launch an algo, you must first create an instance of the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class. Like the [instrtradesub class, the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class is derived from the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.TradeSubscription.html\">TradeSubscription<\/a>&nbsp;class. The&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.InstrumentTradeSubscription.html\">InstrumentTradeSubscription<\/a>&nbsp;class filters on a given exchange native instrument whereas the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class filters on a specific algo. The&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html\">AlgoTradeSubscription<\/a>&nbsp;class is created as follows.<\/p>\n<p class=\"wp-block-paragraph\">After the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.TradeSubscription.html#tt_net_sdk_TradeSubscription_OrderBookDownload\">OrderBookDownload<\/a>&nbsp;event has fired, you can create an&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.OrderProfile.html\">OrderProfile<\/a>&nbsp;instance by calling the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.Algo.html#tt_net_sdk_Algo_GetOrderProfile\">GetOrderProfile()<\/a>&nbsp;method of the&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.Algo.html\">Algo<\/a>&nbsp;instance, fill in the algo\u2019s parameters and launch an instance of an algo.<\/p>\n<p class=\"wp-block-paragraph\">Note the new event named&nbsp;<a href=\"\/tt-net-sdk\/api\/tt_net_sdk.AlgoTradeSubscription.html#tt_net_sdk_AlgoTradeSubscription_ExportValuesUpdated\">ExportValuesUpdated<\/a>. This optional event is specifically used to receive updates for ADL algos that have exported values.<\/p>\n<p class=\"wp-block-paragraph\">The following code snippet shows the structure for this event handler.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Note<\/strong>: Exported variable updates are coalesced at 250ms.<\/p>\n","protected":false},"author":2,"menu_order":1470,"template":"wp-custom-template-single-doc-tt-net-sdk","meta":{"_acf_changed":true,"footnotes":""},"docs-category":[1612],"class_list":["post-8096","doc","type-doc","status-publish","hentry","docs-category-algo-server"],"acf":[],"permalink_manager":null,"_links":{"self":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/doc\/8096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/doc"}],"about":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/types\/doc"}],"author":[{"embeddable":true,"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":0,"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/doc\/8096\/revisions"}],"wp:attachment":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/media?parent=8096"}],"wp:term":[{"taxonomy":"docs-category","embeddable":true,"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/docs-category?post=8096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}