ARTICLE · 1005964
自编程序化交易系统策略源码模板简述及用法
自编程序化交易系统策略源码模板简述及用法首先: 鼎元程序化交易系统使用的语言是c++,推荐的编程软件是Visual Studio 2019旗舰版,做为一款生产力软件,是付费软件。所以说想自编做程序化设计是一件很严谨的事情,生产工具都是制式的。也就是说vs要能编辑工程。试用装是不行的。 不知道怎么装或不知道哪年版本的欢迎单独联系我,我指导您安装。 其次: 鼎元的策略源码是在一个C++的project即工程文档里面。做为一个完整的策略模板如下: 
这里面.vs及x64都是自动生成的,不用管,test是主文档,下面的test.sIn是指导文件,若是安装vs正确且成功,双击这个test.sIn就能打开这个工程文档。 第三: 
一个标准的策略模板文档打开后是这样的。右边导航显示了鼎元模板的两大主要文档:头文件和源文件。 头文件里面是声明变量的,源文件是编辑策略和配置策略的。里面仍然是test为文件。 设计策略主要用到的头文件是test.h。 设计策略主要用到的源文件则比较多。function.cpp是指标计算函数。用来调用指标或数学计算的。 strategy.cpp文件是配置策略的,里面配置了如下的行情模块下的策略环境。 Tick行情模式: (1)每个tick数据都要运行的策略模块。 (2)每N秒运行一次的策略模块。 (3)每当有新的bar生成时运行一次的模块。 Bar行情模式: 每天有新的bar生成时运行一次。 初始化模式: 读取历史k线,进行预生成策略信息。 鼎元程序化系统相较于其它量化软件的优势即开放了所有的行情模式接口。大部分的三方量化软件仅放开一到两或三种接口。比方说单独的K线模式,即所有的策略设计基于K线,也有些软件开放大一些,可以让K线盘中发出交易委托,即Bar内交易模式。 而鼎元则开放了所有的模式,无论是想在哪种行情模式下设计策略都可以。 第四:内置基础数据 我将基础的数据如: 这是一个专注于指标、策略与逻辑编程与设计的公众号,以公式/源码方式向大家提供一些分析市场指标与量化交易策略,虽然不能保证盈利,但是我们会持续提供各种思路与逻辑,希望能对您有所启发,并对您量化之路提供些许帮助。 我们以tradestation/multicharts研究为基础,提供广泛且专业的函数、公式与策略。以新颖的思路与逻辑为广大网友提供量化范例,以建立属于自己的程序化交易实盘策略!更多经典模型研究参考: 同时我们也维护与运行了一个基于C++语言的鼎元量化平台,将上面研究中优秀的思路、概念与逻辑移植到鼎元软件上面供广大网友在国内期货市场进行可实盘的程序化运行。鼎元量化免平台费,拥有开源的策略模板源码,以最低的佣金水平与保证金水平提供给大家选择,让广大网友可以慢慢完善与优化自己的交易策略,实现永久的无成本跑程序化实盘!下载与试用参考: 需要绑MC或鼎元量化平台与期货账户可以联系管理员或客服咨询具体流程与【平台费、手续费、保证金等政策】。 研究平台: 




Multicharts微信群: 
鼎元C++微信群 
我创建了一个基于上期CTP的C++程序化交易解决方案(鼎元全自动交易系统),从公式到指标最后到策略均基于c++设计,对客户免费使用(无论是测试或实盘都不收平台费!),欢迎有兴趣朋友测试或使用。源码托管地址: 【我已经开放从公式到指标到策略的源码模板,有兴趣的网友也可以自己在模板中DIY自己的交易策略。优势:1、支持Tick/Bar双行情模式;2、多账户交易;3、无论高频/趋势策略/套利/网格策略全部支持!4、特别是多品种多周期数据的套利类策略尤其有优势!5、全市场数据扫描,寻找机会自动交易!】


open, high, low, close, volume, openInterest;// 公共变量设定,在鼎元中统一口径,仅用作特定的使用1bardate, bartime; // 公共变量设定,在鼎元中统一口径,仅用作特定的使用2Second, Minute, Hour, Day, DayOfWeek, Month, Year; // 全局时间变量
Bar元素的:开盘价,最高价,最低价,收盘价,成交量,持仓量,时间,日期。
时间变量:年,月,周,日,时,分,秒这些时间变量。
可以实现:
(1)、vector数组形式数据,比方说close,即从左至右所有收盘价的数组。
(2,具体数值数据,比方说close[0]是最新的收盘价,close[1]上一根收盘价。
等等。
第五:经典指标直接调用
//+-----------------------------------------------------------------------------------------------------------------+//| 第五部分:常用指标函数 【逆序数组,[0]=最新】 |//+-----------------------------------------------------------------------------------------------------------------+vector<double> Summation(vector<double> pc, int num); // 求和vector<double> Average(vector<double> pc, int num); // 均线vector<double> Xaverage(vector<double> pc, int num); // EMA(Xaverage)vector<double> EMA(vector<double> pc, int num); // EMAvector<double> SMA(vector<double> pc, int num, int num2); // 指数平滑均线vector<double> WMA(vector<double> pc, int num); // 加权均线vector<double> Highest(vector<double> pc, int num); // N周期最高值vector<double> Lowest(vector<double> pc, int num); // N周期最低值vector<double> AvgTruerange(int num); // ATRvector<double> Truerange(); // 真实波幅vector<double> TR(); // 真实波幅vector<double> ATR(int num); // ATR平均真实波幅vector<double> Variance(vector<double> pc, int num); // 方差vector<double> StandardDev(vector<double> pc, int num); // 标准差vector<double> KDJ_kvalue(int num1, int num2, int num3); // KDJ-K值vector<double> KDJ_dvalue(int num1, int num2, int num3); // KDJ-D值vector<double> KDJ_jvalue(int num1, int num2, int num3); // KDJ-J值vector<double> MACD_DIFF(vector<double> pc, int num1, int num2, int num3); // MACD-DIFFvector<double> MACD_DEA(vector<double> pc, int num1, int num2, int num3); // MACD-DEAvector<double> MACD(vector<double> pc, int num1, int num2, int num3); // MACD-Barvector<double> SwingHigh(vector<double>pc, int leftbars, int rightbars); // 返回SwingHigh数值(逆序数组)vector<double> SwingLow(vector<double>pc, int leftbars, int rightbars); // 返回SwingLowh数值(逆序数组)vector<double> RMS(vector<double>pc, int num); // 返回均方根(Root Mean Square,RMS)(逆序数组)vector<double> SuperSmoother(vector<double>pc, int num); // 返回均方根(Root Mean Square,RMS)(逆序数组)vector<double> Highpass(vector<double>pc, int num); // 返回Highpass(逆序数组)vector<double> Adx(int num, int num2); // adx指标(逆序版)vector<double> Adx_pdi(int num); // 返回+DI数组形式(逆序版)vector<double> Adx_mdi(int num); // 返回-DI数组形式(逆序版)vector<double> SAR(vector<double>highs, vector<double>lows, double initial_af, double max_af);// 抛物线转向指标(SAR)默认参数,initial_af = 0.02,max_af = 0.2vector<double> CalcSAR(int N, double STEP, double MAX);vector<double> Parabolic(int N, double STEP, double MAX); // 严格遵守文华财经规则的SAR公式vector<double> RSI(vector<double>pc, int num); // RSI指标计算公式vector<double> CR(int num); // CR能量指标vector<double> LinearRegression(vector<double>pc, int num); // LinearRegression线性回归【逆序数组格式】vector<double> LinearRegression_slope(vector<double>pc, int num); // LinearRegression线性回归角度【逆序数组格式】vector<double> LinearRegression_intercept(vector<double>pc, int num); // LinearRegression线性回归截距【逆序数组格式】vector<double> OBV(); // OBV指标:能量潮【逆序数组格式】vector<double> CCI(vector<double> pc, int num); // 指定价格序列计算CCI【逆序数组格式】
第六:模块化模板:
//+=============================================================================================+//| 策略备注与说明 |//+=============================================================================================+/**///+---------------------------------------------------------------------------------------------+//| 一、外部函数调用 |//+---------------------------------------------------------------------------------------------+#include"pch.h"#include"test.h"//+---------------------------------------------------------------------------------------------+//| 二、策略初始化 |//+---------------------------------------------------------------------------------------------+voidtest::StrategyOnRun(){//+---------------------------------------------------------------------+//| 策略初始化 |//+---------------------------------------------------------------------+}//+---------------------------------------------------------------------------------------------+//| 三、Tick策略模式一 |//+---------------------------------------------------------------------------------------------+voidtest::StrategyOnTick(){//+---------------------------------------------------------------------+//| Tick模式策略设计专区(每个tick执行一次) |//+---------------------------------------------------------------------+}//+---------------------------------------------------------------------------------------------+//| 四、Tick策略模式二 |//+---------------------------------------------------------------------------------------------+voidtest::StrategyperNTick(){//+---------------------------------------------------------------------+//| Tick模式策略设计专区(每N秒tick执行一次) |//+---------------------------------------------------------------------+}//+---------------------------------------------------------------------------------------------+//| 五、Tick策略模式三 |//+---------------------------------------------------------------------------------------------+voidtest::StrategyperBar(){//+---------------------------------------------------------------------+//| Tick模式策略设计专区(每当新Bar生成后执行一次) |//+---------------------------------------------------------------------+}//+---------------------------------------------------------------------------------------------+//| 六、Bar策略函数 |//+---------------------------------------------------------------------------------------------+voidtest::StrategyOnBar(){//+---------------------------------------------------------------------+//| Bar(K线)模式策略设计专区(每个Bar生成后执行一次) |//+---------------------------------------------------------------------+}
一个经典的模块化模板。需要哪个模块下的策略设计就写哪一个,不用的空着即可。
交易系统实验室(TRADING SYSTEM LAB)
http://www.qhlt.cn/forum-109-1.htmlhttp://algo2.club/






https://gitee.com/dyauto/software