New Trading Software QuantShare version (3.1.2) comes with the following features plus many minor updates and bug fixes. Ranking System: Auto Rank Each Node The ranking system tool (Analysis -> Ranking System Manager) has now a new feature (Auto Rank Each Node) that handles differently how ranking system is calculated. When this feature is disabled and you have 2 indicators/nodes in your ranking system, here is how it works: (Default behavior) The tool gets the indicator values, weights them then sums the results. Only after that, the results are ranked. When this feature is enabled, each node is ranked. The tool ranks each indicator values separately, weights the ranking (percentile value) then sums the results. Finally, the results are ranked. I guess a table would explain better the changes in the ranking system logic. We assume here that there is no weighting. NB: Even if the auto rank feature is enabled, the QS language function (ranking) behaves as if this feature was disabled. Find & Replace You can now open a "Find & Replace" form in QS language and C# editors by using the CONTROL+F shortcut. In this control, you have two options: Find and Replace The Find option allows you to find a specific word in the document or in the selection The Replace option allows you to replace a specific word in the document or in the selection OCA and OSO orders You can now create OCA (One-Cancels-All) orders using the money management script. Here is an example: TimeSeries goog = Data.GetPriceSeries("GOOG", "close"); _TradingOrder order = Orders.LimitOrder(goog[0] - 1); order.AddLinkedOrder(true, "GOOG", 100, Orders.StopOrder(goog[0] + 1)); Orders.AddLongPosition("GOOG", 100, order); The above example creates two orders: - Limit order to buy GOOG at close-1 - Stop order to buy GOOG at close+1 When one of these orders is filled, the other order is automatically cancelled. Here is how to create an OSO order (Order Sends Order) using the money management script: TimeSeries goog = Data.GetPriceSeries("GOOG", "close"); _TradingOrder order = Orders.LimitOrder(goog[0] - 1); order.AddChildOrder(false, "GOOG", 100, Orders.StopOrder(goog[0] - 5)); Orders.AddLongPosition("GOOG", 100, order); The above example, create one order: - Limit order to buy GOOG at close-1 When this order is filled, a new stop order to sell GOOG at close-5 is executed. NB: You can apply these orders in the simulator or ATS. Disable Money Management Script Programmatically This new function is useful if you want to optimize your trading system by testing different money management logics. Here is an example: - Create a trading system then add two money management scripts (Example: different position sizing techniques) - Add the following lines to your trading system (QS language) Optimize("mm1", 0, 1, 1); SetSimSetting(_DisableMMScript, iff(mm1, 0, -1)); Optimize("mm2", 0, 1, 1); SetSimSetting(_DisableMMScript, iff(mm2, 1, -1)); This will create 4 combinations: Combination 1: MM script 1 enabled, MM script 2 enabled Combination 2: MM script 1 enabled, MM script 2 disabled Combination 3: MM script 1 disabled, MM script 2 enabled Combination 4: MM script 1 disabled, MM script 2 disabled Backfill Using DDE Connections Using your DDE connection, you can now backfill data by referencing another data provider or a downloader. - Click on "N Data Feed(s)" at the bottom then click on "Settings" next to your DDE connection. - Select "Backfill Settings" then click on "Backfill Source" - You can either select "Another Connection" then select another data provider or you can select "Download Item" then select an existing downloader. Now, each time you backfill a chart (that is linked to a DDE connection), QuantShare will either get historical data using another connection or get the data from the downloader you have specified (Example: Intraday Data for US Stocks)
|