├── assets ├── A99CTP.png ├── Uninstall.png ├── set_startup.png ├── SetCommission.png ├── emit_ask_bid.png ├── oq_providers.png ├── ImportInstrument.png ├── OpenQuant2014GUI.png ├── OpenQuantMainGUI.png ├── debug_function01.png ├── debug_function02.png ├── debug_function03.png ├── debug_function04.png ├── first-strategy01.png ├── first-strategy02.png ├── first-strategy03.png ├── first-strategy04.png ├── first-strategy05.png ├── first-strategy06.png ├── OpenQuantLaunching.png ├── ProviderProperties.png ├── ProviderSetting02.png ├── ProviderSetting03.png ├── ProviderSettings01.png ├── import_third_lib01.png ├── import_third_lib02.png ├── simulated_trading01.png ├── importInstrumentDone.png ├── ImportInstumnetsRequest.png ├── PortfolioStatisticsDemo.png ├── internal_market_data01.png ├── internal_market_data02.png ├── internal_market_data03.png ├── internal_market_data04.png ├── internal_market_data05.png ├── internal_market_data06.png ├── internal_market_data07.png ├── internal_market_data08.png ├── commonly_strategy_event01.png ├── internal_market_data_csv01.png ├── internal_market_data_csv02.png ├── internal_market_data_csv03.png ├── internal_market_data_csv04.png ├── internal_market_data_csv05.png ├── internal_market_data_csv06.png ├── internal_market_data_csv07.png ├── internal_market_data_csv08.png ├── internal_market_data_csv09.png ├── internal_market_data_csv10.png ├── internal_market_data_csv11.png ├── internal_market_data_csv12.png ├── internal_market_data_csv13.png ├── internal_market_data_csv14.png ├── oq_providers_QuantBoxCTPse.png ├── equity_and_position_inquiries.png ├── oq_providers_QuantBoxCTPse_Connect.png ├── oq_providers_QuantBoxCTPse_QuoteMonitor.png ├── oq_providers_QuantBoxCTPse_Configuration_AddMD.png ├── oq_providers_QuantBoxCTPse_Configuration_AddUser.png ├── oq_providers_QuantBoxCTPse_Configuration_ConnMD.png └── oq_providers_QuantBoxCTPse_Configuration_MainWindow.png ├── plugin_introduction.md ├── debug_introduction.md ├── common_question_introduction.md ├── appendix_source_code.md ├── download.md ├── strategy_introduction.md ├── hot_key.md ├── emit_ask_bid.md ├── data_introduction.md ├── import_third_party_lib.md ├── introduction.md ├── practice_introduction.md ├── fok_fak.md ├── domestic_market_data.md ├── debug_function.md ├── load_historical_data_in_live_mode.md ├── domestic_HistoricalData.md ├── realtime_trading.md ├── install_plugins.md ├── open_and_close.md ├── equity_and_position_inquiries.md ├── simulated_trading.md ├── whats_the_smartquant_or_openquant.md ├── domestic_market_data-Thanf.md ├── SUMMARY.md ├── first_strategy.md ├── domestic_market_data_csv.md ├── README.md ├── source_code_OpenQuantOutside.md ├── back_test.md ├── installing.md └── common_strategy_event.md /assets/A99CTP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/A99CTP.png -------------------------------------------------------------------------------- /plugin_introduction.md: -------------------------------------------------------------------------------- 1 | # 插件 2 | 3 | --- 4 | 5 | 6 | * [下载和安装插件](install_plugins.md) 7 | -------------------------------------------------------------------------------- /assets/Uninstall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/Uninstall.png -------------------------------------------------------------------------------- /debug_introduction.md: -------------------------------------------------------------------------------- 1 | # 调试 2 | 3 | --- 4 | 5 | 6 | * [OpenQuant的调试功能](debug_function.md) 7 | -------------------------------------------------------------------------------- /assets/set_startup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/set_startup.png -------------------------------------------------------------------------------- /assets/SetCommission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/SetCommission.png -------------------------------------------------------------------------------- /assets/emit_ask_bid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/emit_ask_bid.png -------------------------------------------------------------------------------- /assets/oq_providers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers.png -------------------------------------------------------------------------------- /assets/ImportInstrument.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/ImportInstrument.png -------------------------------------------------------------------------------- /assets/OpenQuant2014GUI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/OpenQuant2014GUI.png -------------------------------------------------------------------------------- /assets/OpenQuantMainGUI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/OpenQuantMainGUI.png -------------------------------------------------------------------------------- /assets/debug_function01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/debug_function01.png -------------------------------------------------------------------------------- /assets/debug_function02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/debug_function02.png -------------------------------------------------------------------------------- /assets/debug_function03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/debug_function03.png -------------------------------------------------------------------------------- /assets/debug_function04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/debug_function04.png -------------------------------------------------------------------------------- /assets/first-strategy01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/first-strategy01.png -------------------------------------------------------------------------------- /assets/first-strategy02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/first-strategy02.png -------------------------------------------------------------------------------- /assets/first-strategy03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/first-strategy03.png -------------------------------------------------------------------------------- /assets/first-strategy04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/first-strategy04.png -------------------------------------------------------------------------------- /assets/first-strategy05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/first-strategy05.png -------------------------------------------------------------------------------- /assets/first-strategy06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/first-strategy06.png -------------------------------------------------------------------------------- /assets/OpenQuantLaunching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/OpenQuantLaunching.png -------------------------------------------------------------------------------- /assets/ProviderProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/ProviderProperties.png -------------------------------------------------------------------------------- /assets/ProviderSetting02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/ProviderSetting02.png -------------------------------------------------------------------------------- /assets/ProviderSetting03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/ProviderSetting03.png -------------------------------------------------------------------------------- /assets/ProviderSettings01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/ProviderSettings01.png -------------------------------------------------------------------------------- /assets/import_third_lib01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/import_third_lib01.png -------------------------------------------------------------------------------- /assets/import_third_lib02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/import_third_lib02.png -------------------------------------------------------------------------------- /assets/simulated_trading01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/simulated_trading01.png -------------------------------------------------------------------------------- /assets/importInstrumentDone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/importInstrumentDone.png -------------------------------------------------------------------------------- /assets/ImportInstumnetsRequest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/ImportInstumnetsRequest.png -------------------------------------------------------------------------------- /assets/PortfolioStatisticsDemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/PortfolioStatisticsDemo.png -------------------------------------------------------------------------------- /assets/internal_market_data01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data01.png -------------------------------------------------------------------------------- /assets/internal_market_data02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data02.png -------------------------------------------------------------------------------- /assets/internal_market_data03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data03.png -------------------------------------------------------------------------------- /assets/internal_market_data04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data04.png -------------------------------------------------------------------------------- /assets/internal_market_data05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data05.png -------------------------------------------------------------------------------- /assets/internal_market_data06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data06.png -------------------------------------------------------------------------------- /assets/internal_market_data07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data07.png -------------------------------------------------------------------------------- /assets/internal_market_data08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data08.png -------------------------------------------------------------------------------- /assets/commonly_strategy_event01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/commonly_strategy_event01.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv01.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv02.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv03.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv04.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv05.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv06.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv07.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv08.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv09.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv10.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv11.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv12.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv13.png -------------------------------------------------------------------------------- /assets/internal_market_data_csv14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/internal_market_data_csv14.png -------------------------------------------------------------------------------- /assets/oq_providers_QuantBoxCTPse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers_QuantBoxCTPse.png -------------------------------------------------------------------------------- /assets/equity_and_position_inquiries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/equity_and_position_inquiries.png -------------------------------------------------------------------------------- /assets/oq_providers_QuantBoxCTPse_Connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers_QuantBoxCTPse_Connect.png -------------------------------------------------------------------------------- /assets/oq_providers_QuantBoxCTPse_QuoteMonitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers_QuantBoxCTPse_QuoteMonitor.png -------------------------------------------------------------------------------- /common_question_introduction.md: -------------------------------------------------------------------------------- 1 | # 其它常见问题 2 | 3 | --- 4 | * [如何在实盘模式下加载历史数据](load_historical_data_in_live_mode.md) 5 | * [OpenQuant快捷键](hot_key.md) 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /assets/oq_providers_QuantBoxCTPse_Configuration_AddMD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers_QuantBoxCTPse_Configuration_AddMD.png -------------------------------------------------------------------------------- /assets/oq_providers_QuantBoxCTPse_Configuration_AddUser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers_QuantBoxCTPse_Configuration_AddUser.png -------------------------------------------------------------------------------- /assets/oq_providers_QuantBoxCTPse_Configuration_ConnMD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers_QuantBoxCTPse_Configuration_ConnMD.png -------------------------------------------------------------------------------- /assets/oq_providers_QuantBoxCTPse_Configuration_MainWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantBox/OpenQuantBook/HEAD/assets/oq_providers_QuantBoxCTPse_Configuration_MainWindow.png -------------------------------------------------------------------------------- /appendix_source_code.md: -------------------------------------------------------------------------------- 1 | # 代码附录 2 | 3 | --- 4 | 5 | 6 | * [OpenQuantOutside](source_code_OpenQuantOutside.md) 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /download.md: -------------------------------------------------------------------------------- 1 | # 最新OpenQuant系统软件的下载 2 | 3 | 在SmartQuant的官方网站中,您可以下载到OpenQuant最新版进行全功能的限时测试,测试期为30天。下载地址为: 4 | 5 | [http://www.smartquant.com/downloads.html ](http://www.smartquant.com/downloads.html) 6 | 7 | 也可以注册在线版本QuantWeb直接进行在线测试。 8 | 9 | -------------------------------------------------------------------------------- /strategy_introduction.md: -------------------------------------------------------------------------------- 1 | # 策略 2 | 3 | --- 4 | 5 | * [开始第一个策略](first_strategy.md) 6 | * [新建策略](first_strategy.md/#New_Strategy) 7 | * [编写Hello OpenQuant策略](first_strategy.md/#Hello_OpenQuant_Strategy) 8 | * [导入第三方库](import_third_party_lib.md) 9 | * [常用的策略事件](common_strategy_event.md) 10 | * [订单类型](order_type.md) 11 | 12 | -------------------------------------------------------------------------------- /hot_key.md: -------------------------------------------------------------------------------- 1 | # OpenQuant快捷键 2 | 3 | --- 4 | 5 | \[Ctrl+S\]组合键:保存 6 | 7 | \[ALT+F4\]组合键:退出 8 | 9 | \[Ctrl+Z\] 组合键:复原 10 | 11 | \[Ctrl+Shift+Z\] 组合键:重做 12 | 13 | \[Ctrl+X\] 组合键:剪切 14 | 15 | \[Ctrl+C\] 组合键:拷贝 16 | 17 | \[Ctrl+V\] 组合键:粘贴 18 | 19 | \[Ctrl+F\] 组合键:查找 20 | 21 | \[Ctrl+H\] 组合键:替换 22 | 23 | \[Ctrl+G\] 组合键:定位 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /emit_ask_bid.md: -------------------------------------------------------------------------------- 1 | # CTP插件Ask和Bid事件无法触发的问题 2 | --- 3 | 在CTP插件的属性配置选项: Settings - MarketData 4 | 5 |  6 | 7 | EmitBidAsk: 8 | true:触发OnBid和OnAsk事件(如果想要触发OnAsk或OnBid,此项必须为true) 9 | false:不触发OnBid和OnAsk事件 10 | 11 | EmitBidAskFirst: 12 | true:先触发OnBid和OnAsk事件,再触发OnTrade事件 13 | false:先触发OnTrade事件,再触发OnBid和OnAsk事件 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /data_introduction.md: -------------------------------------------------------------------------------- 1 | # 数据 2 | 3 | --- 4 | 5 | 6 | * [获取国内市场数据](domestic_market_data.md) 7 | * [支持股票、基金、外汇、期权、期货吗](domestic_market_data.md/#Data_Support) 8 | * [提供什么数据](domestic_market_data.md/#What_data_is_available) 9 | * [数据每天什么时候更新](domestic_market_data.md/#Data_Update) 10 | * [我们提供的数据和其他平台数据有差异的原因](domestic_market_data.md/#The_Reason_Of_Data_Difference) 11 | * [数据如何接入](domestic_market_data.md/#Data_access) 12 | * [导入csv或txt格式的数据](domestic_market_data_csv.md) -------------------------------------------------------------------------------- /import_third_party_lib.md: -------------------------------------------------------------------------------- 1 | # 如何导入第三方库 2 | 3 | --- 4 | 5 | 展开需要添加第三方库的工程,右键References->Add,会看到提供三种方式添加,分别是Global Assembly Cache、Browse、Solution。 6 | 7 |  8 | 9 | **<a>Global Assembly Cache: 在已经安装的.net framework中选择引入** 10 | 11 | **<b>Browse: 通过文件浏览方式选择引入** 12 | 13 | **<c>Solution: 添加项目方式引入** 14 | 15 | 以添加.net framework中System.IO为例Add->Global Assembly Cache,选择System.IO,单击OK按钮,添加完成 16 | 17 |  18 | 19 | -------------------------------------------------------------------------------- /introduction.md: -------------------------------------------------------------------------------- 1 | # 简介 2 | 3 | --- 4 | 5 | 6 | * [SmartQuant公司的OpenQuant系统](whats_the_smartquant_or_openquant.md) 7 | * [什么是SmartQuant](whats_the_smartquant_or_openquant.md/#What_is_SmartQuant) 8 | * [SmartQuant公司的软件产品](whats_the_smartquant_or_openquant.md/#SmartQuant_Products) 9 | * [什么是OpenQuant](whats_the_smartquant_or_openquant.md/#What_is_OpenQuant) 10 | * [OpenQuant系统特点](whats_the_smartquant_or_openquant.md/#OpenQuant_system_features) 11 | * [OpenQuant软件下载、安装、运行](installing.md) 12 | 13 | 14 | -------------------------------------------------------------------------------- /practice_introduction.md: -------------------------------------------------------------------------------- 1 | # 实战 2 | 3 | --- 4 | 5 | * [回测常见问题](back_test.md) 6 | * [回测的速度](back_test.md/#Back_test_speed) 7 | * [回测的相关菜单功能](back_test.md/#Back_test_menu) 8 | * [回测的各项指标展示说明](back_test.md/#Back_test_indicators) 9 | * [手续费和滑点的处理](back_test.md/#Commission_and_slip_points) 10 | * [分红派息](back_test.md/#Dividend) 11 | * [回测的成交原理](back_test.md/#Transaction_principle) 12 | * [如何进行模拟交易](simulated_trading.md) 13 | * [模拟交易的数据源是什么](simulated_trading.md/#Paper_data_source) 14 | * [模拟交易与和回测的数据差异](simulated_trading.md/#Paper_and_Backtest_data_diff) 15 | * [如何进行模拟交易](simulated_trading.md/#Paper) 16 | * [如何进行实盘交易](realtime_trading.md) 17 | -------------------------------------------------------------------------------- /fok_fak.md: -------------------------------------------------------------------------------- 1 | # OpenQuant中FOK指令的使用方法 2 | --- 3 | 4 | FOK指令:立即全部成交否则自动撤销指令,指在限定价位下达指令,如果该指令下所有申报手数未能全部成交,该指令下所有申报手数自动被系统撤销。在OpenQuant中可以通过设置order的TimeInForce = TimeInForce.FOK实现。 5 | 6 | FAK指令:立即成交剩余否则自动撤销指令,指在限定价位下达指令,如果该指令下部分申报手数成交,该指令下剩余申报手数自动被系统撤销。在OpenQuant中可以通过设置order的TimeInForce = TimeInForce.IOC实现。 7 | 8 | 以下代码是在SimNow环境下测试通过的示例: 9 | 10 | ``` 11 | protected override void OnTrade(Instrument instrument, Trade trade) 12 | { 13 | if (i == 0) 14 | { 15 | Order buyOrder = BuyLimitOrder(instrument, 10, trade.Price - 30 * instrument.TickSize, "buyopen"); 16 | buyOrder.TimeInForce = TimeInForce.FOK; 17 | Send(buyOrder); 18 | System.Console.WriteLine("OnTrade "+instrument.Symbol+" FOK order "); 19 | } 20 | 21 | if (i == 1) 22 | { 23 | Order buyOrder = BuyLimitOrder(instrument, 100, trade.Price - 30 * instrument.TickSize, "buyopen"); 24 | buyOrder.TimeInForce = TimeInForce.IOC;//FAK 25 | buyOrder.MinQty = 50; 26 | Send(buyOrder); 27 | System.Console.WriteLine("OnTrade " + instrument.Symbol + " IOC order "); 28 | } 29 | 30 | i++; 31 | } 32 | ``` 33 | -------------------------------------------------------------------------------- /domestic_market_data.md: -------------------------------------------------------------------------------- 1 | # 3. OpenQuant2014连接CTP柜台并获取实时数据 2 | 3 | ##
3.1 在OpenQuant中连接CTP柜台 4 | 5 | OpenQuant交易通道配置完成后,在Providers窗口中,鼠标右击QuantBoxCtpse这个通道,并选择连接。 6 | 7 |  8 | 9 | 连接成功后,Output窗口应该有柜台信息的输出,此时通道连接成功。如果不成功,也可以查看Output窗口中的输出并检查问题。 10 | 11 | 12 | 13 | 14 | 15 | ## 3.2 通过CTP实时获取CTP交易的合约信息 16 | 17 | 在OpenQuant2014已经连接到CTP柜台后,可以从CTP交易柜台实时导入当前交易合约的信息,包括合约代码,报价单位,基础价差,合约乘数等基础信息。 18 | 19 | 点击OpenQuant2014菜单并依次选择:Data - Import - Instruments - QuantBoxCtpse ,打开在Import Instruments [QuantBoxCtpse]窗口中,筛选类型、交易所、代码等信息后,按Request按钮获取合约信息,然后按Import进行导入即可。 20 | 21 | 👽目前期货合约及期权合约数量众多,建议导入时可以按照合约代码的关键字进行过滤。 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | ## 3.3 通过CTP观察合约的实时数据 30 | 31 | 在CTP正常连接,并且在连续交易的盘中时段,在OpenQuant菜单中依次点击选择:View-QuoteMonitor - QuantBoxCtpse ,在打开的QuoteMonitor窗口中, 用鼠标拖动合约窗口中的代码,拖入QuoteMonitor窗口,此时就可以看到市场这些合约的报价情况,鼠标右键这些市场中的合约代码,可以选择直接下单交易。 32 | 33 |  34 | 35 | 36 | 37 | ## 3.4 查询CTP柜台的账户基本信息 38 | 39 | 在OpenQuant菜单中依次选择:View-Account ,即可查看自己账户的资金信息。 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /debug_function.md: -------------------------------------------------------------------------------- 1 | # 如何调试一个策略 2 | 3 | --- 4 | 5 | 简单的策略调试可以在代码中使用Console.WriteLine\(\)输出调试信息。如果需要高级调试功能可以通过Visual Studio来进行, OpenQuant的策略工程是一个标准的Visual Studio解决方案,可以使用Visual Studio打开、运行、调试OpenQuant的策略。需要注意的是由于运行环境的变化,当需要在Visual Studio中开发调试策略时要对策略项目配置进行一些调整: 6 | 7 | 修改策略项目中的场景工程\(Backtest、Realtime、Optimization\)的程序集信息,需要将信息中的公司属性设置成” SmartQuant Ltd。 8 | 9 |  10 | 11 |  12 | 13 | 修改工程生成属性,将工程编译64位程序。注意要同时修改Debug和Release两种配置方式。 14 | 15 |  16 | 17 | 在Visual Studio中运行调试策略时,默认配置下策略程序并不生成在OpenQuant的安装目录,这就带来了策略引用的模块无法找到的问题,有两种方式解决这个问题: 18 | 19 | 20 | * 将策略工程的输出目录改成OpenQuant的安装目录,由于OpenQuant安装在C:\Program Files\目录下,在这个目录下输出程序需要以管理员身份运行Visual Studio。 21 | 22 |  23 | 24 | * 修改Program.cs在Main入口函数中添加OpenQuantOutside.Init 函数调用。这个函数可以解决策略程序在OpenQuant安装目录外运行时遇到的问题。 25 | 26 | ``` 27 | class Program 28 | { 29 | static void Main(string[] args) 30 | { 31 | OpenQuantOutside.Init(); 32 | var scenario = new BacktestScenario(Framework.Current); 33 | scenario.Run(); 34 | } 35 | } 36 | ``` 37 | OpenQuantOutside 类的源代码见代码附录:[OpenQuantOutside](source_code_OpenQuantOutside.md) 38 | 39 | -------------------------------------------------------------------------------- /load_historical_data_in_live_mode.md: -------------------------------------------------------------------------------- 1 | # 如何在实盘模式下加载历史数据 2 | 3 | --- 4 | 5 | 用户在编写一些趋势策略时经常需要在策略启动时导入历史数据做初始化,例如,加载前20个交易日的日线数据等。要实现这个功能最直接的办法是使用“回测转实盘”的策略运行模式,所谓“回测转实盘”的策略运行模式就是策略先在回测模式下处理历史数据,等到历史数据处理完成后,再进入实盘模式下运行。这种模式可以让策略一种非常自然的模式处理数据,不用区分回测还是实盘。 6 | 7 | 下面就用实例来说明如何实现“回测转实盘”。首先要修改实盘场景的Scenario文件,在Run方法中添加需要加载的历史数据区间 \(设置DataSimulator的DataTime1和DateTime2属性\),然后调用 StartBacktest\(\) 进入回测模式,在回测模式完成后设置实盘交易通道,调用 StartLive\(\) 进入实盘模式。这里需要注意的是,为了解决“回测转实盘”后策略的 OnTrade、OnAsk、OnBid 不能触发的问题,需要在进入实盘模式前调用 OpenQuantOutside.Resubscribe 重新设置行情订阅。 8 | 9 | ``` 10 | public override void Run() 11 | { 12 | strategy = new TurtleStrategy(framework, "main"); 13 | BarFactory.Clear(); 14 | var inst = InstrumentManager.Instruments[“rb1710”]; 15 | strategy.AddInstrument(inst); 16 | BarFactory.Add(inst, BarType.Time, 60); 17 | DataSimulator.DateTime1 = new DateTime(2017, 06, 25); 18 | DataSimulator.DateTime2 = new DateTime(2017, 06, 27); 19 | StartBacktest(); 20 | strategy.DataProvider = ProviderManager.GetDataProvider("A99CTP"); 21 | strategy.ExecutionProvider = ProviderManager.GetExecutionProvider("A99CTP"); 22 | OpenQuantOutside.Resubscribe(strategy); 23 | StartLive(); 24 | } 25 | ``` 26 | 27 | OpenQuantOutside 类的源代码见代码附录:[OpenQuantOutside](source_code_OpenQuantOutside.md) 28 | 29 | -------------------------------------------------------------------------------- /domestic_HistoricalData.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 4. 导入历史数据 4 | 5 | 在进行策略开发、数据研究及策略回测的时候,需要使用大量的历史数据。OpenQuant支持从数据中心或本地文件中导入历史数据。 6 | 7 | 8 | 9 | ## 4.1 通过QuantBox数据中心获取数据 10 | 11 | ### 4.1.1 连接QuantBox数据中心 12 | 13 | 在OpenQuant中,打开View菜单栏,显示Providers面板,展开Historical Data菜单,找到**QuantBoxData**并鼠标右键点击Connect。如果连接成功,QuantBoxData前面的信号灯图标会由红色变为绿色。 14 | 15 | 特别需要注意的是,QuantBoxData属性面板(View -> Properties)中的DataCenterHost字段,应该确保填写的是[http://data.quantbox.com](http://data.quantbox.com) 16 | 17 | ### 4.1.2 获取历史合约信息 18 | 19 | QuantBoxData连接成功后,在菜单栏选择Data -> Import -> Instruments -> QuantBoxData,会弹出“Import Instruments [QuantBoxData]”窗口,点击右侧Request按钮后,会显示QuantBoxData提供的所有合约列表。 20 | 21 | 👽建议使用Filter按照合约类型、交易所、字符等过滤合约后,再点击Request,以高效获取数据。 22 | 23 | 获取合约列表后,选择您想要导入本地使用的合约,点击右侧Import按钮,导入完成后,OpenQuant就会将已选的合约添加进Instruments面板(View -> Instruments)。 24 | 25 | ### 4.1.3 获取期货行情的历史数据 26 | 27 | 目前QuantBoxData提供的期货合约数据是自2012年8月至今的Trade和Quote类型的Tick数据,提供的股票合约数据是已经前复权处理过的股市开盘至今的Bar Time类型并且Bar Size设置为86400的日线数据。 28 | 29 | 获取方法为:在成功获取合约信息后,便可以开始导入历史数据。在菜单栏选择Data -> Import -> Historical -> QuantBoxData,会弹出“Import Historical Data[QuantBoxData]”界面。将左侧Instruments面板栏中的合约拖至导入列表框中,此时合约状态为Pending等待状态,设置数据类型和时间段。 30 | 31 | 32 | 33 | 设置完成后,再点击导入界面的绿色箭头按钮,开始导入。导入过程中,合约状态为Processing,导入成功后,合约的状态会变为Completed,此时,双击Instruments栏中的该合约,即可查看导入的历史数据列表详细信息。 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /realtime_trading.md: -------------------------------------------------------------------------------- 1 | # 如何进行实盘交易 2 | 3 | --- 4 | 5 | 通过一个实例来说明如何在OpenQuant中进行实盘交易。 6 | 7 | 在OpenQuant 中打开SMACrossover策略项目,把Realtime工程设置成启动项。 8 | 9 |  10 | 11 | 打开场景文件\(Scenario.cs\),把使用的合约修改成国内上市交易的合约。 12 | 13 | > ```java 14 | > public override void Run() 15 | > { 16 | > Instrument instrument1=InstrumentManager.Instruments["rb1710"]; 17 | > Instrument instrument2=InstrumentManager.Instruments["cu1708"]; 18 | > //... 19 | > //... 20 | > } 21 | > ``` 22 | 23 | 修改策略使用的行情通道\(Data Provider\)和交易通道\(ExecutionProvider\),连接CTP交易行情通道,在Run函数最后以StartLive方式启动策略。 24 | 25 | > ```java 26 | > public override void Run() 27 | > { 28 | > Instrument instrument1 = InstrumentManager.Instruments["rb1710"]; 29 | > Instrument instrument2 = InstrumentManager.Instruments["cu1708"]; 30 | > // Create SMA Crossover strategy 31 | > strategy = new MyStrategy(framework, "SMACrossover"); 32 | > // Add instruments 33 | > strategy.AddInstrument(instrument1); 34 | > strategy.AddInstrument(instrument2); 35 | > strategy.DataProvider = ProviderManager.GetDataProvider("A99CTP"); 36 | > strategy.ExecutionProvider = ProviderManager.GetExecutionProvider("A99CTP"); 37 | > // Add 1 minute bars 38 | > BarFactory.Clear(); 39 | > BarFactory.Add(instrument1, BarType.Time, barSize); 40 | > BarFactory.Add(instrument2, BarType.Time, barSize); 41 | > // Run the strategy 42 | > //StartStrategy(); 43 | > StartLive(); 44 | > } 45 | > ``` 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /install_plugins.md: -------------------------------------------------------------------------------- 1 | # 下载、安装、使用插件 2 | 3 | --- 4 | 5 | ### 下载、安装国内期货交易插件 6 | 7 | OpenQuant系统中可以由第三方服务商或者开发者自行进行扩展,例如行情源的接入、交易通道的接入、历史数据源的接入等等,这些扩展我们称之为插件(Plugins)。 8 | 9 | 上期技术公司的CTP系统是获取国内期货实时行情、进行交易的主要平台。各个主流期货经纪商均支持客户通过CTP柜台进行期货、期权的交易。您可以在SmartQuant中文网站\([http://www.smartquant.cn](http://www.smartquant.cn)\)下载64位的CTP插件安装程序,并以默认过程安装完成后,打开OpenQuant,就可以在Providers面板找到CTP插件。 10 | 11 |  12 | 13 | 14 | 15 | CTP插件提供了合约管理、交易接口和获取实时行情的接口功能。 16 | 17 | ### 使用期货交易插件 18 | 19 | * #### 配置插件 20 | 21 | 安装CTP插件后,先需要配置交易通道的IP地址及端口号,交易者账户及密码等信息,使得CTP插件可以正常连接和工作。 22 | 23 | 鼠标右键点击Providers面板中的A99CTP插件,选择Properties属性: 24 | 25 |  26 | 27 | 28 | 29 | 在CTP插件中,用户可以配置多套服务器及账户信息,但需要指定使用哪套账户信息(账号及密码)及指定哪套交易服务器、行情服务器,这些服务器使用哪个账户。 30 | 31 | 在Properties窗口中,选择Settings选项中的AllConfig,按照下列图片过程进行设置,即可以完成CTP插件的交易账号和相关信息的配置。 32 | 33 |  34 | 35 |  36 | 37 |  38 | 39 | * #### 添加合约 40 | 41 | 当CTP插件(Provider A99CTP)与CTP交易柜台正常连接后,即可为你的OpenQuant系统添加合约信息。在菜单栏中选择Data -> Import -> Instruments -> A99CTP ,下图所示: 42 | 43 |  44 | 45 | 46 | 弹出如下图所示界面,点击右侧Request按钮后,会显示您所连接的CTP柜台中提供的所有合约列表。您也可以使用Filter按照合约类型、交易所、字符等过滤合约后,再点击Request。 47 | 48 |  49 | 50 | 获取合约列表后,选择您想要导入本地使用的合约,点击右侧Import按钮,导入完成后,OpenQuant就会将已选的合约添加进Instruments面板(View -> Instruments),如下图所示。 51 | 52 |  53 | 54 | -------------------------------------------------------------------------------- /open_and_close.md: -------------------------------------------------------------------------------- 1 | # 如何实现限价单和市价单的开平仓 2 | 3 | --- 4 | 5 | OpenQuant支持的订单类型很多,但是国内交易市场很多不支持。下面主要介绍几种国内市场支持的订单类型,限价单和市价单的开平仓。 6 | 想要实现国内开平仓操作,需要下载安装64位CTP插件,并在项目中引用 QuantBox.OQ,下载地址:http://www.smartquant.cn/rjxz.html 7 | 8 | 这里有个简单的例子描述如何开多和平多,并直接下单(开空和平空和这个类似,方向相反而已)。 9 | 10 | 11 | ``` 12 | using QuantBox; 13 | 14 | Order openLimitOrder; 15 | Order openMarketOrder; 16 | private Order closeLimitOrder; 17 | 18 | private void OnBar(Instrument instrument,Bar bar) 19 | { 20 | //开仓买限价单 21 | openLimitOrder = BuyLimitOrder(instrument, 1, bar.Open, "buy limit order"); 22 | openLimitOrder.Open(); 23 | Send(openLimitOrder); 24 | 25 | AddReminder(Clock.DateTime.AddMinutes(1),"cancel buy limit order");//添加定时器,下单1分钟后还未成交的话做撤单处理 26 | 27 | //开仓买市价单 28 | openMarketOrder = BuyOrder(instrument, 2, "buy market order");//买市价单 29 | openMarketOrder.Open(); 30 | Send(openMarketOrder); 31 | } 32 | 33 | protected override void OnOrderFilled(Order order) 34 | { 35 | if (order.Text == "buy market order") 36 | { 37 | //平仓卖限价单 38 | closeLimitOrder = SellLimitOrder(order.Instrument, order.Qty, order.Price + order.Instrument.TickSize * 2); 39 | closeLimitOrder.Close(); 40 | Send(closeLimitOrder); 41 | } 42 | } 43 | 44 | protected override void OnReminder(DateTime dateTime, object data) 45 | { 46 | if (data != null && data.ToString() == "cancel buy limit order") 47 | { //是撤单定时器触发的 48 | if (!openLimitOrder.IsDone) 49 | {//openLimitOrder还未成交 50 | Cancel(openLimitOrder); 51 | } 52 | } 53 | } 54 | ``` 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /equity_and_position_inquiries.md: -------------------------------------------------------------------------------- 1 | # 权益和持仓的查询 2 | --- 3 | 4 | 在策略中,可以通过调用AccountDataManager.GetSnapshots()方法获取所有providerID下的账户权益和持仓的明细,或GetSnapshot(byte providerId, byte route)获取指定providerID下的账户权益和持仓的明细,调用示例如下: 5 | 6 | ``` 7 | 8 | private void AccountInfo() 9 | { 10 | System.Console.WriteLine("AccountInfo ... .. . .. "); 11 | //查询所有providerID的账户 12 | AccountDataSnapshot[] ads = this.AccountDataManager.GetSnapshots(); 13 | System.Console.WriteLine("ads.Length=" + ads.Length); 14 | 15 | //AccountDataSnapshot ads_ctp = AccountDataManager.GetSnapshot(99,99); //查询CTP通道的账户 16 | 17 | foreach (AccountDataSnapshot item in ads) 18 | { 19 | AccountDataEntry[] ades = item.Entries; 20 | foreach (AccountDataEntry ade in ades) 21 | { 22 | AccountDataFieldList fields = ade.Values.Fields; 23 | foreach (AccountDataField field in fields) 24 | { 25 | Console.WriteLine("{0} = {1}" , field.Name, field.Value); 26 | } 27 | 28 | AccountData[] pos = ade.Positions; 29 | foreach (var po in pos) 30 | { 31 | Console.WriteLine("----------------------------------------"); 32 | var ad = (AccountData)po; 33 | foreach (AccountDataField field in ad.Fields) 34 | { 35 | Console.WriteLine("{0} = {1}", field.Name, field.Value); 36 | } 37 | } 38 | } 39 | } 40 | } 41 | ``` 42 | 43 | 查询结果如下: 44 | 45 |  46 | 47 | 48 | -------------------------------------------------------------------------------- /simulated_trading.md: -------------------------------------------------------------------------------- 1 | # 如何进行模拟交易 2 | 3 | --- 4 | 5 | ### 模拟交易的数据源是什么 6 | 7 | Paper\(模拟\)模式下连接是真实的行情数据。 8 | 9 | ### 模拟交易与和回测的数据差异 10 | 11 | 模拟交易和回测的差异在于接入的行情不一样,模拟交易使用的是真实行情,回测使用的是历史行情。 12 | 13 | ### 如何进行模拟交易 14 | 15 | 要进行模拟交易先要理解什么是模拟交易。OpenQuant包含三种工作模式,Backtest\(回测\)、Paper\(模拟\)、Live\(实盘\),而在系统内核里只有两种运行模式:Real-time、Simulation分别对应Live\(实盘\)和Backtest\(回测\)模式。这就出现了一个问题,既然系统内核中并不存在一种和Paper\(模拟\) 相对应的运行模式,那么当策略运行在Paper\(模拟\)模式时,系统内核到底发生了什么? 16 | 17 | 实际上当策略运行在Paper\(模拟\)模式时,系统内核的运行模式是Realtime。这就表示Live\(实盘\)和Paper\(模拟\)内核运行模式是相同的,那Live\(实盘\)和Paper\(模拟\)不同的运行效果是如何实现的呢,关键就是策略运行时指定的交易通道不同。Live\(实盘\)模式下策略都会连接真实的交易通道向交易所或代理商发送订单接收行情,而在Paper\(模拟\)模式下虽然也会连接真实的交易通道接收行情,但是报单并不发送给交易所或代理商而是使用系统自带的模拟交易引擎进行模拟撮合。 18 | 19 | 通过一个实例来说明如何在OpenQuant中进行模拟交易。 20 | 21 | 在OpenQuant 中打开SMACrossover策略项目,把Realtime工程设置成启动项。 22 | 23 |  24 | 25 | 打开场景文件\(Scenario.cs\),把使用的合约修改成国内上市交易的合约。 26 | 27 | ``` 28 | public override void Run() 29 | { 30 | Instrument instrument1=InstrumentManager.Instruments["rb1710"]; 31 | Instrument instrument2=InstrumentManager.Instruments["cu1708"]; 32 | ... 33 | ... 34 | } 35 | ``` 36 | 37 | 修改策略使用的行情通道 \(Data Provider\) 连接 CTP 行情通道,在Run函数最后以 StartPaper 方式启动策略。 38 | 39 | ``` 40 | public override void Run() 41 | { 42 | Instrument instrument1 = InstrumentManager.Instruments["rb1710"]; 43 | Instrument instrument2 = InstrumentManager.Instruments["cu1708"]; 44 | // Create SMA Crossover strategy 45 | strategy = new MyStrategy(framework, "SMACrossover"); 46 | // Add instruments 47 | strategy.AddInstrument(instrument1); 48 | strategy.AddInstrument(instrument2); 49 | strategy.DataProvider = ProviderManager.GetDataProvider("A99CTP"); 50 | //strategy.ExecutionProvider = ProviderManager.GetExecutionProvider("A99CTP"); 51 | // Add 1 minute bars 52 | BarFactory.Clear(); 53 | BarFactory.Add(instrument1, BarType.Time, barSize); 54 | BarFactory.Add(instrument2, BarType.Time, barSize); 55 | // Run the strategy 56 | // StartStrategy(); 57 | StartPaper(); 58 | } 59 | ``` 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /whats_the_smartquant_or_openquant.md: -------------------------------------------------------------------------------- 1 | # SmartQuant公司的OpenQuant系统 2 | 3 | --- 4 | 5 | ### 什么是SmartQuant? 6 | 7 | 2003年成立于美国的SmartQuant有限责任公司,是一家专业量化金融软件提供商。SmartQuant公司专门面向对冲基金和专业交易机构,开发端到端程序化交易解决方案。为新兴和不断成长的量化交易机构提供成本可控,具备工业级强度的量化策略研发、策略回测及优化、交易策略自动化执行的综合平台,并以可靠的质量,速度和适应性来助力机构的成长。 8 | 9 | SmartQuant公司开发的基于微软C\#和.NET技术的完整量化交易解决方案,核心产品是量化交易集成开发执行系统OpenQuant,及交易报单路由管理QuantRouter、高性能市场数据系统QuantBase、策略执行系统QuantTrader及分布式构架交易管理系统Quant Controller 等一系列量化金融软件。随着产品不断的发展和完善,OpenQuant系列产品充分经过市场及客户的验证,公司已经拥有大量的专业机构类量化投资客户。 10 | 11 | ### SmartQuant公司的软件产品 12 | 13 | 14 | SmartQuant公司围绕量化交易提供全面的解决方案,目前SmartQuant公司的主要产品有: 15 | 16 | **OpenQuant**:SmartQuant旗舰产品,用于量化交易的策略开发、策略测试、策略优化、执行和监控。 17 | 18 | **QuantRouter**:交易定单路由系统,可以分拆、合并,并管理交易定单的路由。 19 | 20 | **QuantBase**:高性能市场数据处理系统,可集中管理实时行情及海量历史行情数据。 21 | 22 | **QuantTrader**:成熟策略上线后的高效执行系统。 23 | 24 | **QuantController**:用于构架及管理分布式构架的交易体系。 25 | 26 | 更多的产品信息请访问SmartQuant公司网站及SmartQuant中文网站 27 | 28 | [http://www.smartquant.com ](http://www.smartquant.com) 29 | 30 | [http://www.smartquant.cn ](http://www.smartquant.cn) 31 | 32 | ### 什么是OpenQuant? 33 | 34 | OpenQuant系列软件产品是SmartQuant公司研发的专业量化交易系统。OpenQuant面向专业量化策略研究员、交易员,提供强大的策略开发、回测、运行及监控功能。OpenQuant系统采用标准的C\#语言进行策略编程,不仅内置了众多量化金融函数、指标和算法,更可以让用户进行个性化的功能扩展。OpenQuant系统自1997年不断创新发展至今,被全球众多专业金融机构广泛应用。 35 | 36 |  37 | 38 | ### OpenQuant系统特点 39 | 40 | * #### 面向专业交易机构,完善的量化交易平台 41 | 42 | OpenQuant是SmartQuant公司旗舰产品,专业金融机构用户可以根据需要,配合SmartQuant其他产品组成大型对冲基金级量化交易解决方案,而OpenQuant是系统的核心,是多种应用场景中最为关键的部分。能够使用户构架完整的策略开发、策略回测、策略执行及监控系统。 43 | 44 | * #### 采用标准的微软.NET框架及C\#编程语言 45 | 46 | OpenQuant采用标准的微软Windows .NET框架体系及C\#语言开发策略,开发者可以采用OpenQuant内置的策略集成开发环境,更可以使用标准的微软Virtual Studio集成开发环境进行开发,并对策略进行断点设置,单步执行策略代码,对各类变量进行跟踪,让调试工作方便而高效。 47 | 48 | * #### 无限的功能扩展可能 49 | 50 | 由于采用通用标准的软件开发框架,有编程经验的用户更可以基于OpenQuant底层框架,将各类金融工具或组建进行集成,更可以发挥技术想象力,独立扩展出全新的功能,定制化一个完全独特的量化交易管理系统。 51 | 52 | * #### 丰富的金融函数及专业软件对接能力 53 | 54 | OpenQuant提供丰富的内置金融指标, 可以扩展开发更多个性化指标,更可以拓展调用大型专业分析软件动态连接库。 55 | 56 | * #### 强大的数据处理能力及广泛的市场连接 57 | 58 | Tick行情的驱动机制,可以精细扑捉市场的每一个细节。支持中国的期货、现货、期权各类交易,支持众多外盘交易通道。 59 | 60 | -------------------------------------------------------------------------------- /domestic_market_data-Thanf.md: -------------------------------------------------------------------------------- 1 | # 获取国内市场数据 2 | 3 | --- 4 | 5 | ## 支持股票、基金、外汇、期权、期货吗? 6 | 7 | OpenQuant功能上支持以上所有标的。 8 | 9 | 数据上,目前暂时已接入了中国大陆的A股、期货数据。 10 | 11 | 其他的数据,例如中国大陆的B股、基金、期权也在接入的计划中;美股、港股、外汇数据会在上述三种数据接入完成再逐步接入。 12 | 13 | ## 提供什么数据? 14 | 15 | 目前提供的数据有: 16 | 17 | 股票开盘至今的A股前复权日线数据 18 | 19 | 2012年8月至今的期货tick数据 20 | 21 | A股、指数、期货的标的信息 22 | 23 | ## 数据每天什么时候更新? 24 | 25 | 目前的A股数据、期货数据均是在18:00 ~ 20:00 更新。 26 | 27 | ## 我们提供的数据和其他平台数据有差异的原因? 28 | 29 | 目前存在差异的地方有: 30 | 31 | 股票的前复权计算,我们的前复权计算减去了相应的分红数据,这样回测会造成您在回测最开始的时间会默认已经取得所有回测时间段内的分红。建议提高手续费对冲这部分误差。 32 | 33 | 主力连续合约的计算方式,我们采用的是加减法的方式对主力合约进行复权。 34 | 35 | ## 数据如何接入? 36 | 37 | 可以通过官方发布的Provider ThanfData下载数据。 38 | 39 | ### 1.Thanf数据接口的连接 40 | 41 | 打开View菜单栏,显示Providers面板,展开Historical Data菜单,找到ThanfData并右键,如下图1所示,点击Connect,如果连接成功,ThanfData前面的图标会由红色变为绿色。 42 | 43 | 特别需要注意的是,如图1右侧属性面板(View -> Properties)中的DataCenterHost字段,应该确保填写的是[http://data.thanf.com/。](http://data.thanf.com/。) 44 | 45 |  46 | 47 | ``` 48 | 图 1 连接Thanf数据接口 49 | ``` 50 | 51 | ### 2.获取Thanf合约信息 52 | 53 | ThanfData连接成功后,在菜单栏选择Data -> Import -> Instruments -> ThanfData,会弹出如图2所示界面,点击右侧Request按钮后,会显示Thanf提供的所有合约列表。 54 | 55 | 您也可以使用Filter按照合约类型、交易所、字符等过滤合约后,再点击Request,如图3所示。 56 | 57 | 获取合约列表后,选择您想要导入本地使用的合约,点击右侧Import按钮,导入完成后,OQ就会将已选的合约添加进Instruments面板(View -> Instruments),如图4所示。 58 | 59 |  60 | 61 | ``` 62 | 图 2 导入Thanf合约初始界面 63 | ``` 64 | 65 |  66 | 67 | ``` 68 | 图 3 请求订阅合约 69 | ``` 70 | 71 |  72 | 73 | ``` 74 | 图 4 导入Thanf合约完成界面 75 | ``` 76 | 77 | ### 3.获取Thanf历史数据 78 | 79 | 成功获取合约信息后,便可以开始导入历史数据。在菜单栏选择Data -> Import -> Historical -> ThanfData,会弹出如图5所示界面。 80 | 81 |  82 | 83 | ``` 84 | 图 5 导入Thanf合约历史数据初始界面 85 | ``` 86 | 87 | 将左侧Instruments面板栏中的合约拖至导入列表框中,此时合约状态为Pending等待状态,设置数据类型和时间段,如图6所示。 88 | 89 | 目前Thanf提供的期货合约数据是自2012年8月至今的Trade和Quote类型的Tick数据,提供的股票合约数据是已经前复权处理过的股市开盘至今的Bar Time类型并且Bar Size设置为86400的日线数据。 90 | 91 | 设置完成后,再点击导入界面的绿色箭头按钮,开始导入。 92 | 93 |  94 | 95 | ``` 96 | 图 6 开始导入合约历史数据 97 | ``` 98 | 99 |  100 | 101 | ``` 102 | 图 7 Thanf合约历史数据导入完成界面 103 | ``` 104 | 105 | 导入过程中,合约状态为Processing,导入成功后,合约的状态会变为Completed,如图7所示。 106 | 107 | 此时,双击Instruments栏中的该合约,即可查看导入的历史数据列表详细信息,如图8所示。 108 | 109 |  110 | 111 | ``` 112 | 图 8 查看合约历史数据 113 | ``` 114 | 115 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | --- 3 | 4 | * [0. Introduction](README.md) 5 | 6 | * [1. 简介](introduction.md) 7 | 8 | * [1.1 SmartQuant公司的OpenQuant系统](whats_the_smartquant_or_openquant.md) 9 | * [1.1.1 什么是SmartQuant](whats_the_smartquant_or_openquant.md/#What_is_SmartQuant) 10 | * [1.1.2 SmartQuant公司的软件产品](whats_the_smartquant_or_openquant.md/#SmartQuant_Products) 11 | * [1.1.3 什么是OpenQuant](whats_the_smartquant_or_openquant.md/#What_is_OpenQuant) 12 | * [1.1.4 OpenQuant系统特点](whats_the_smartquant_or_openquant.md/#OpenQuant_system_features) 13 | 14 | * [2 OpenQuant软件下载、安装、运行](installing.md) 15 | 16 | * [2.1 最新OpenQuant软件下载](installing.md/#2.1) 17 | 18 | * [2.2 OpenQuant软件运行环境](installing.md/#2.2) 19 | 20 | * [2.3 OpenQuant软件的安装](installing.md/#2.3) 21 | 22 | * [2.4 OpenQuant软件的卸载](installing.md/#2.4) 23 | 24 | * [2.5 OpenQuant软件的启动运行](installing.md/#2.5) 25 | 26 | * [2.6 配置OpenQuant对接国内期货交易通道](installing.md/#2.6) 27 | 28 | * [3. OpenQuant2014连接CTP柜台并获取实时数据](domestic_market_data.md) 29 | 30 | * [3.1 在OpenQuant中连接CTP柜台](domestic_market_data.md/#3.1) 31 | * [3.2 通过CTP实时获取CTP交易的合约信息](domestic_market_data.md/#3.2) 32 | * [3.3 通过CTP观察合约的实时数据](domestic_market_data.md/#3.3) 33 | * [3.4 查询CTP柜台的账户基本信息](domestic_market_data.md/#3.4) 34 | 35 | * [4. 导入历史数据](domestic_HistoricalData.md) 36 | 37 | * [4.1 通过QuantBox数据中心获取数据](domestic_HistoricalData.md/#4.1) 38 | * [4.2 导入csv或txt格式的数据](domestic_market_data_csv.md) 39 | 40 | * [5. 策略](strategy_introduction.md) 41 | 42 | * [5.1 开始第一个策略](first_strategy.md) 43 | * [5.1.1 新建策略](first_strategy.md/#New_Strategy) 44 | * [5.1.2 编写Hello OpenQuant策略](first_strategy.md/#Hello_OpenQuant_Strategy) 45 | * [5.2 导入第三方库](import_third_party_lib.md) 46 | * [5.3 常用的策略事件](common_strategy_event.md) 47 | 48 | * [6. 实战](practice_introduction.md) 49 | 50 | * [6.1 回测常见问题](back_test.md) 51 | * [6.1.1 回测的速度](back_test.md/#Back_test_speed) 52 | * [6.1.2 回测的相关菜单功能](back_test.md/#Back_test_menu) 53 | * [6.1.3 回测的各项指标展示说明](back_test.md/#Back_test_indicators) 54 | * [6.1.4 手续费和滑点的处理](back_test.md/#Commission_and_slip_points) 55 | * [6.1.5 分红派息](back_test.md/#Dividend) 56 | * [6.1.6 回测的成交原理](back_test.md/#Transaction_principle) 57 | * [6.2 如何进行模拟交易](simulated_trading.md) 58 | * [6.2.1 模拟交易的数据源是什么](simulated_trading.md/#Paper_data_source) 59 | * [6.2.2 模拟交易与和回测的数据差异](simulated_trading.md/#Paper_and_Backtest_data_diff) 60 | * [6.2.3 如何进行模拟交易](simulated_trading.md/#Paper) 61 | * [6.3 如何进行实盘交易](realtime_trading.md) 62 | 63 | * [7. 调试](debug_introduction.md) 64 | 65 | * [7.1 OpenQuant的调试功能](debug_function.md) 66 | 67 | * [8. 其它常见问题](common_question_introduction.md) 68 | 69 | * [8.1 如何在实盘模式下加载历史数据](load_historical_data_in_live_mode.md) 70 | * [8.2 如何实现限价单和市价单的开平仓](open_and_close.md) 71 | * [8.3 权益和持仓的查询](equity_and_position_inquiries.md) 72 | * [8.4 CTP插件Ask和Bid事件无法触发的问题](emit_ask_bid.md) 73 | * [8.5 OpenQuant中FOK指令的使用方法](fok_fak.md) 74 | * [8.6 OpenQuant快捷键](hot_key.md) 75 | 76 | * [9. 代码附录](appendix_source_code.md) 77 | 78 | * [9.1 OpenQuantOutside](source_code_OpenQuantOutside.md) 79 | 80 | * [补充:下载和安装插件](install_plugins.md) 81 | 82 | * ### 联系我们 83 | 84 | OpenQuant中文服务QQ群:50511635 85 | 86 | 87 | -------------------------------------------------------------------------------- /first_strategy.md: -------------------------------------------------------------------------------- 1 | # 开始第一个策略 2 | 3 | --- 4 | 5 | Solution:解决方案 6 | 7 | Project:项目 8 | 9 | 一个解决方案下可以有多个项目,但是只有一个启动项 10 | 11 | 双击cs文件可以打开编辑代码 12 | 13 | ### 新建策略 14 | 15 | 在菜单栏File->New->Solution,新建一个解决方案 16 | 17 |  18 | 19 |  20 | 21 | 选择新建SmartQuant Instrument Strategy Solution模式的解决方案 22 | 23 | |Solution的类型|说明| 24 | |--------|--------| 25 | |SmartQuant Instrument Strategy Solution|合约标的策略解决方案:为订阅的每个合约创建一个实例,每个实例处理一个合约的数据,互不干扰。| 26 | |SmartQuant Strategy Solution|策略解决方案:可以在一个策略实例中处理多个合约的数据。| 27 | |SmartQuant Sell Side Strategy Solution|卖方策略解决方案:新建后,除了 Backtest 以外,会有 2 个策略项目,MySellSideStrategy卖方策略可以理解为是 MyBuySideStrategy 买方策略的一个插件,在买方策略和经纪服务商之间添加了一个策略接口,实现一些可以解耦的功能。| 28 | |Empty Solution|空解决方案:新建后可以自行创建策略项目。| 29 | |Class Library|新建类库:可以供策略使用。| 30 | |Console Application|控制台应用程序:功能与 VisualStudio 的控制台应用程序相同。| 31 | 32 | 33 | 34 | Name是解决方案的名称 35 | 36 | Location 是解决方案(代码)保存的位置 37 | 38 | 单击OK按钮即新建完成,在解决方案资源管理器我们看到新建好的解决方案,而且也可以在相应的目录下找到代码文件 39 | 40 |  41 | 42 |  43 | 44 | ### 编写Hello OpenQuant策略 45 | 46 | OpenQaunt代码编辑器支持语法高亮、格式化、自动完成,如下所示(自动完成) 47 | 48 |  49 | 50 | ### 1. 编写场景 51 | 52 | 在解决方案资源管理器中,可以看到Backtest项目名称是黑体加粗(右键项目名称->Set as StartUP Project可以设置启动项,每个解决方案只有一个启动项),这表示Backtest项目为启动项,而Backtest项目又以Program.cs中的Main函数为入口。 53 | 54 | Program.cs->Main函数: 55 | 56 | ``` 57 | static void Main(string[] args) 58 | 59 | { 60 | 61 | Scenario scenario = new MyScenario(Framework.Current); 62 | 63 | scenario.Run(); 64 | 65 | } 66 | ``` 67 | 68 | 上面代码可以看出,Main函数会调用MyScenario.cs里面的Run函数。 69 | 70 | 打开Backtest项目中MyScenario.cs(场景文件),找到Run函数,添加订阅合约的代码, 71 | 72 | 我们以订阅IF1705为例。场景文件主要目的就是订阅合约、设置Bar周期等作用。 73 | 74 | ``` 75 | public override void Run() 76 | 77 | { 78 | 79 | //这里的合约是需要在Instruments中存在的合约 80 | 81 | Instrument instrument = InstrumentManager.Instruments["IF1705"]; 82 | 83 | strategy = new MyStrategy(framework, "Backtest"); 84 | 85 | //订阅合约 86 | 87 | strategy.AddInstrument(instrument); 88 | 89 | Initialize(); 90 | 91 | StartStrategy(); 92 | 93 | } 94 | ``` 95 | 96 | strategy = new MyStrategy\(framework, "Backtest"\);这行代码就代表了我们的策略代码是MyStartegy.cs文件中的MyStrategy类 97 | 98 | ### 2. 编写策略代码 99 | 100 | 在已经编写好的场景文件中,可以看到Run函数new了MyStrategy实例,并且调用了StartStrategy\(\)函数,这就表示开始启动MyStrategy策略了。OpenQuant的策略执行机制是事件机制,即触发了某事件则会调用相应的处理函数,具体各个事件和相应的处理函数后面会详细介绍,在编写实际交易策略时,这些事件和处理函数是必须了解的。 101 | 102 | 打开MyStrategy.cs,可以看到如下代码: 103 | 104 | ``` 105 | using System; 106 | 107 | using SmartQuant; 108 | 109 | namespace OpenQuant 110 | 111 | { 112 | 113 | public class MyStrategy : InstrumentStrategy 114 | 115 | { 116 | 117 | public MyStrategy(Framework framework, string name) 118 | 119 | : base(framework, name) 120 | 121 | { 122 | 123 | } 124 | 125 | protected override void OnStrategyStart() 126 | 127 | { 128 | 129 | System.Console.WriteLine("Hello OpenQuant"); 130 | 131 | } 132 | 133 | protected override void OnBar(Instrument instrument, Bar bar) 134 | 135 | { 136 | 137 | } 138 | 139 | } 140 | 141 | } 142 | ``` 143 | 144 | 我们在OnStrategyStart\(\)函数中,添加System.Console.WriteLine\("Hello OpenQuant"\),至此我们第一个策略完成,运行策略可以看到结果。 145 | 146 |  147 | 148 | -------------------------------------------------------------------------------- /domestic_market_data_csv.md: -------------------------------------------------------------------------------- 1 | # 如何导入csv或txt格式的第三方数据? 2 | 3 | --- 4 | 5 | ### 1. 数据准备 6 | 7 | 请提前准备好需要导入的数据,数据格式参考下图1: 8 | 9 |  10 | 11 | ``` 12 | 图 1 数据格式 13 | ``` 14 | 15 | ### 2.数据导入过程 16 | 17 | ### 2.1添加数据 18 | 19 | 打开OpenQuant2014,点击Data->Import->CSV or Text Files 进入到数据导入界面,如图2: 20 | 21 |  22 | 23 | ``` 24 | 图 2 导入菜单入口 25 | ``` 26 | 27 | 点击界面右侧的Add File,选择要添加的数据(可同时选择多个文件),然后点击Next进入到数据格式设置页面,如下图3: 28 | 29 |  30 | 31 | ``` 32 | 图 3 添加文件界面 33 | ``` 34 | 35 | 导入数据格式设置有五部分,如下图: 36 | 37 |  38 | 39 | ``` 40 | 图 4 数据格式设置 41 | ``` 42 | 43 | 第一部分:CSV部分 44 | 45 | A.Separator 分隔符选择,共有Tab制表符/Comma 逗号/Semicolon分号/Space空格四个选项,根据导入数据的格式来选择,如下图5,分隔符为逗号,则选择Comma。 46 | 47 |  48 | 49 | ``` 50 | 图 5 分隔符示例 51 | ``` 52 | 53 | B.Header with以第几行为开头的选择,导入的第一行必须是数据,非数据行需跳过,如果导入的第一行是数据,则Header with后的选项框填0,如果导入的数据第一行为列名(如下图),则填写1,即Header with \( 1 \) line。 54 | 55 |  56 | 57 | ``` 58 | 图 6 表头示例 59 | ``` 60 | 61 | 第二部分:Data 数据类型选择 62 | 63 | 类型选择分为Bar\(Time\)/Trade/Quote三种,如果数据是Bar 格式的就选择Bar(Time),可选择Bar的时间;如果是Trade 就选择Trade,策略里需用报价需再导一次Quote ,即Trade 数据和 Quote数据需分别导入。 64 | 65 |  66 | 67 | ``` 68 | 图 7 数据类型选择 69 | ``` 70 | 71 | 第三部分:Date时间索引选择 72 | 73 | A.column,按列导入,时间索引以数据文件中的时间列为准。 74 | 75 | B.manually,手动导入,可手动导入具体某一天的数据。应用后时间索引不包含日期信息,只包含分时信息。 76 | 77 | 第四部分:标的标签选择 78 | 79 | 类型选择分为column /file/manually三种,此部分主要是确定标的名称,如是以数据文件中的某列为标的名称,则选Column;如是以文件名为标的名称,则选file(适用于批量文件导入);也可自定义标的名称即通过manually来设置。 80 | 81 | 第五部分:设置导入的列标签 82 | 83 | 给导入的每一列设置一个标签,点击skipped根据弹出的选项设置即可。 84 | 85 | 导入K线\(Type – Bar\)数据列设置建议有以下选项: 86 | 87 | DataTime、Open、High、Low、Close、Volumn。 88 | 89 | 导入交易\(Type – Trade\)数据列设置建议有以下选项: 90 | 91 | DataTime、Price\(成交价\)、Size\(成交量\)、Direction\(方向\)。 92 | 93 | 导入报价\(Type –Quote\)数据列设置建议有以下选项: 94 | 95 | DataTime、Bid、BidSize、Ask、AskSize。 96 | 97 | 例:时间设置 98 | 99 | 点击时间列的skipped,选择Date Time,可选择列表中弹出的时间格式,也可点击Custom 自行设置时间格式。时间格式可参考时间设置页面的Format help,如下图8和图9: 100 | 101 |  102 | 103 | ``` 104 | 图 8 时间格式设置1 105 | ``` 106 | 107 |  108 | 109 | ``` 110 | 图 9 时间格式设置2 111 | ``` 112 | 113 | 也可通过Advanced进行高级设置,点击Advanced,进入设置界面,通过 Other-Create instrument 可设置导入的数据存放在哪个分类下(默认为Stock),如下图10: 114 | 115 |  116 | 117 | ``` 118 | 图 10 高级设置 119 | ``` 120 | 121 | 全部设置好后,可点击Template右侧的Save ,将之前的设置存为模板。之后设置同样格式的数据文件时可选择模板然后点击Apply即可使用模版。然后点击Next,进入数据导入界面。 122 | 123 | ### 2.2导入数据 124 | 125 | 在数据导入页面,点击左上角的绿色小三角开始导入,等待导入完成后点击Close即可,如下图11: 126 | 127 |  128 | 129 | ``` 130 | 图 11 导入数据 131 | ``` 132 | 133 | ### 3.查看导入数据 134 | 135 | 选择View-Instruments,点击导入数据存放的文件类,找到导入的数据,右键单击,在弹出菜单选择 Data,即可看到所导入的数据。如下图12、13、14: 136 | 137 |  138 | 139 | ``` 140 | 图 12 查看数据菜单入口 141 | ``` 142 | 143 |  144 | 145 | ``` 146 | 图 13 查看数据 147 | ``` 148 | 149 |  150 | 151 | ``` 152 | 图 14 数据显示 153 | ``` 154 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenQuantBook - v1.2.1 20240603 2 | 3 | --- 4 | 5 | * ### 简介 6 | 7 | OpenQuant系列软件产品是SmartQuant公司研发的专业量化交易系统。OpenQuant面向专业量化策略研究员、交易员,提供强大的策略开发、回测、运行及监控功能。OpenQuant系统采用标准的C\#语言进行策略编程,不仅内置了众多量化金融函数、指标和算法,更可以让用户进行个性化的功能扩展。OpenQuant系统自1997年不断创新发展至今,被全球众多专业金融机构广泛应用。 8 | 9 | * ### Book 最近更新 10 | 11 | 日期:20170816 12 | 内容:在常见问题中添加OpenQuant中FOK指令的使用方法 13 | 14 | 日期:20170814 15 | 内容:在常见问题中添加CTP插件Ask和Bid事件无法触发的问题 16 | 17 | 日期:20170809 18 | 内容:在常见问题中添加权益和持仓的查询 19 | 20 | 日期:20170803 21 | 内容:在常见问题中添加如何实现限价单和市价单的开平仓 22 | 23 | 日期:20240603 24 | 内容:修订软件环境的安装及配置过程、历史数据获取 25 | 26 | 27 | 28 | ### 29 | 30 | * ### 目录 31 | 32 | * [0. Introduction](README.md) 33 | 34 | * [1. 简介](introduction.md) 35 | 36 | * [1.1 SmartQuant公司的OpenQuant系统](whats_the_smartquant_or_openquant.md) 37 | * [1.1.1 什么是SmartQuant](whats_the_smartquant_or_openquant.md/#What_is_SmartQuant) 38 | * [1.1.2 SmartQuant公司的软件产品](whats_the_smartquant_or_openquant.md/#SmartQuant_Products) 39 | * [1.1.3 什么是OpenQuant](whats_the_smartquant_or_openquant.md/#What_is_OpenQuant) 40 | * [1.1.4 OpenQuant系统特点](whats_the_smartquant_or_openquant.md/#OpenQuant_system_features) 41 | 42 | 43 | * [2 OpenQuant软件下载、安装、运行](installing.md) 44 | 45 | * [2.1 最新OpenQuant软件下载](installing.md/#2.1) 46 | 47 | * [2.2 OpenQuant软件运行环境](installing.md/#2.2) 48 | 49 | * [2.3 OpenQuant软件的安装](installing.md/#2.3) 50 | 51 | * [2.4 OpenQuant软件的卸载](installing.md/#2.4) 52 | 53 | * [2.5 OpenQuant软件的启动运行](installing.md/#2.5) 54 | 55 | * [2.6 配置OpenQuant对接国内期货交易通道](installing.md/#2.6) 56 | 57 | * [3. OpenQuant2014连接CTP柜台并获取实时数据](domestic_market_data.md) 58 | 59 | * [3.1 在OpenQuant中连接CTP柜台](domestic_market_data.md/#3.1) 60 | * [3.2 通过CTP实时获取CTP交易的合约信息](domestic_market_data.md/#3.2) 61 | * [3.3 通过CTP观察合约的实时数据](domestic_market_data.md/#3.3) 62 | * [3.4 查询CTP柜台的账户基本信息](domestic_market_data.md/#3.4) 63 | 64 | * [4. 导入历史数据](domestic_HistoricalData.md) 65 | 66 | * [4.1 通过QuantBox数据中心获取数据](domestic_HistoricalData.md/#4.1) 67 | * [4.2 导入csv或txt格式的数据](domestic_market_data_csv.md) 68 | 69 | * [5. 策略](strategy_introduction.md) 70 | 71 | * [5.1 开始第一个策略](first_strategy.md) 72 | * [5.1.1 新建策略](first_strategy.md/#New_Strategy) 73 | * [5.1.2 编写Hello OpenQuant策略](first_strategy.md/#Hello_OpenQuant_Strategy) 74 | * [5.2 导入第三方库](import_third_party_lib.md) 75 | * [5.3 常用的策略事件](common_strategy_event.md) 76 | 77 | * [6. 实战](practice_introduction.md) 78 | 79 | * [6.1 回测常见问题](back_test.md) 80 | * [6.1.1 回测的速度](back_test.md/#Back_test_speed) 81 | * [6.1.2 回测的相关菜单功能](back_test.md/#Back_test_menu) 82 | * [6.1.3 回测的各项指标展示说明](back_test.md/#Back_test_indicators) 83 | * [6.1.4 手续费和滑点的处理](back_test.md/#Commission_and_slip_points) 84 | * [6.1.5 分红派息](back_test.md/#Dividend) 85 | * [6.1.6 回测的成交原理](back_test.md/#Transaction_principle) 86 | * [6.2 如何进行模拟交易](simulated_trading.md) 87 | * [6.2.1 模拟交易的数据源是什么](simulated_trading.md/#Paper_data_source) 88 | * [6.2.2 模拟交易与和回测的数据差异](simulated_trading.md/#Paper_and_Backtest_data_diff) 89 | * [6.2.3 如何进行模拟交易](simulated_trading.md/#Paper) 90 | * [6.3 如何进行实盘交易](realtime_trading.md) 91 | 92 | * [7. 调试](debug_introduction.md) 93 | * [7.1 OpenQuant的调试功能](debug_function.md) 94 | 95 | * [8. 其它常见问题](common_question_introduction.md) 96 | * [8.1 如何在实盘模式下加载历史数据](load_historical_data_in_live_mode.md) 97 | * [8.2 如何实现限价单和市价单的开平仓](open_and_close.md) 98 | * [8.3 权益和持仓的查询](equity_and_position_inquiries.md) 99 | * [8.4 CTP插件Ask和Bid事件无法触发的问题](emit_ask_bid.md) 100 | * [8.5 OpenQuant中FOK指令的使用方法](fok_fak.md) 101 | * [8.6 OpenQuant快捷键](hot_key.md) 102 | 103 | * [9. 代码附录](appendix_source_code.md) 104 | 105 | * [9.1 OpenQuantOutside](source_code_OpenQuantOutside.md) 106 | 107 | * [补充:下载和安装插件](install_plugins.md) 108 | 109 | * ### 联系我们 110 | 111 | OpenQuant中文服务QQ群:50511635 112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /source_code_OpenQuantOutside.md: -------------------------------------------------------------------------------- 1 | ``` 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.IO; 6 | using System.Reflection; 7 | using System.Threading; 8 | using Microsoft.Win32; 9 | using System.Linq; 10 | 11 | namespace SmartQuant 12 | { 13 | public class OpenQuantOutside 14 | { 15 | private static readonly string SmartQuantPath; 16 | 17 | private static string GetSmartQuantPath() 18 | { 19 | var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C224DA18-4901-433D-BD94-82D28B640B2C}"); 20 | if (key != null) { 21 | var names = new List