交易开拓者(TB)编程初级篇
- 格式:doc
- 大小:35.50 KB
- 文档页数:15
TradeBlazer公式的结构与编程目录页码一、TB的程序化交易的功能与特点 41-1、TB程序化交易的功能 4 1-2、TB公式说明 4 1-3、TB编程步骤 5 二、数据的说明与使用 62-1、Bar数据 6 2-2、计算方法6 2-3、叠加数据8 2-4、行情数据9 2-5、属性数据9 三、TB公式编程基础知识93-1、TB的公式的结构9 3-2、公式名称规则11 3-3、语句写法11 四、参数的说明与应用214-1、参数说明22 4-2、参数的使用与说明22 4-3、参数的默认值23 4-4、参数使用例子24 4-5、变量参数24五、变量的类型与使用255-1、变量参数25 5-2、变量声明26 5-3、变量的默认值27 5-4、变量赋值27 5-5、序列变量28 5-6、变量、数据与函数的回溯28 六、系统函数的使用316-1、标点符号31 6-2、控制语句32 6-3、循环语句37 七、用户函数的使用与说明407-1、TB用户函数40 7-2、序列函数42 7-3、使用内建用户函数42 7-4、用户函数的调用44 7-5、用默认参数调用用户函数44 八、技术指标编写458-1、技术指标与应用45 8-2、常用的技术指标应用举例48 8-3、自编指标的输出56 8-4、指标编写常见问题58 九、用户函数编写589-1、TB用户函数的编写58 9-2、交易指令(Buy/Sell)61 9-3、叠加多个商品合约进行交易629-4、交易常用系统函数介绍62 十、交易策略的程序实现与实例6510-1、利用技术指标的交易策略65 10-2、止赢止损70 10-3、加仓减仓77 10-4、多品种交易80 10-5、集合竞价数据过滤82 10-6、函数下单撤单和全局变量操作83 10-7、数据库读写83十一、其他注意事项88 11-1、信号消失问题及解决办法91 11-2、盘中和盘后公式运行的差别94十二、策略评估的常用指标94正文一、TB程序化交易的功能与特点TradeBlazer公式(简称TB),新推出的V4公式,运行效率大幅提高,除支持多线程应用功能,在程序交易的主要特点如下:1-1、TB程序化交易的功能➢所使用的TBL(TradeBlazer Language)语言功能强大、语法简明易懂;➢TB的公式执行机制是在每根BAR上都会执行一遍公式,能实现公式和算法的精确控制;➢具有结构化的控制语句,支持复合语句—IF语句和FOR,WHILE语句;➢提供了丰富的系统函数,支持用户函数,便于实现程序的模块化设计;➢提供A函数、Q函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;➢支持单图表叠加多个商品的交易和测试;➢技术指标源代码公开,便于指标算法的改进;➢强大的图表化、多维度的交易模型测试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;➢支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用。
TB公式入门交易开拓者公式基础Bar数据:公式在进行计算时,都是建立在基本数据源(Bar数据)之上,我们这里所谓的Bar 数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间。
期货等品种还有持仓量等数据。
所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar 数据。
公式如何执行:TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。
公式执行从上至下,Bar从左到右执行。
公式执行顺序公式执行顺序TradeBlazer公式的HelloWorld!/forum/thread-63-1-1.htmlBeginFileAppend("c:\\Formula.log","hello world");End公式的种类指标K线形态特征走势交易指令函数公式环境的组织层次(1)公式环境的组织层次(2)建立一个最简单的指标:画零线BeginPlotNumeric(“Line1”,0);EndBegin和End宣告公式正文的开始和结束,公式语句应该放到Begin和End之间。
PlotNumeric表示输出一个数值型组成的数组。
技术指标属性的设置再画一条线…BeginPlotNumeric(“Line1”,5);End参数一根线ParamsNumeric Length(0);BeginPlotNumeric(“Line1”,length);EndN根线ParamsNumeric Length1(0);Numeric Length2(5);BeginPlotNumeric(“Line1”,length1);PlotNumeric(“Line2”,length2);End取较大值ParamsNumeric Length1(0);Numeric Length2(5);Beginif(Length1 >= Length2){PlotNumeric(“Line1”,length1);}else{PlotNumeric(“Line1”,length1);}EndPlotNumeric由输出的名字来区分是否为同一条线。
交易开拓者(TB)期货程序化交易编程本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。
TB里面代码执行1,代码从第一根K线开始执行,一直到最后一根K线;2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;我们就写个输出每日的收盘价的例子;打开TB,在左边的TB公式里面,点击新建技术指标,然后在出来的公式编辑器里面输入BeginEnd注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间我们再在Begin和End之间输入一些代码,完整的就是:BeginFileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");FileAppend("C:\\a.log",Text(Close));End我们再说说这两行代码是什么意思File就是文件,Append就是添加,现在明白了吧FileAppend就是添加一个文件,文件名是什么呢?就是你后面写的a.log,这个文件的路径在哪里呢?就是c:\\a.log 里面的C盘,且在这个文件里面添加一行东西,这行东西的内容就是你后面所写的Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"当然,如果这个文件已经存在,他就不会添加文件了,仅仅在这个文件的后面添加一行上面你写的内容好了,再看看Text,Text的意思就是把那些不是字符串的东西如数字啊,等变成字符串.而Year,Month,Day就代表了正在执行你写的代码的那一根K线的年,月,日,年月日是数字,我们当然要用Text把它搞成字符串CloseK线的收盘价啊,如果代码执行到最后的那根K线我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,就OK了我们在回到K线图里面,TB把K线图叫做超级图表在K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超级图表里面仅仅显示5条K线,点确定后,你就看到在K线图里面只显示了5跟K线,当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的我们上面说了,我们这个例子仅仅是把每日的收盘价写到文件里面去啊,那么我们找一找文件在什么地方咯? FileAppend("c:\\a.log",很明显,文件是在c盘的,文件的名字是a.log好了,我们到c盘找到a.log文件,双击打开,我们就会看到下面的内容:2007年9月24日的收盘价等于672802007年9月25日的收盘价等于678002007年9月26日的收盘价等于671602007年9月27日的收盘价等于673002007年9月28日的收盘价等于68020我们现在来分析下:首先你写的代码在第一根K线上执行,先执行第一行代码:FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");这行代码就输出了第一根K线的年,月,日,就在a.log文件里输出成"2007年9月24日的收盘价等于"然后执行第二行代码:FileAppend("C:\\a.log",Text(Close));折行代码把第一根K线的收盘价输出到a.log文件里面,于是就输出了"67280"好了,代码在第一根K线上执行完毕,于是再转到第二根K线,再执行第一行代码,再执行第二行代码.........我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。
TradeBlazer公式的结构与编程目录页码一、TB的程序化交易的功能与特点 41-1、TB程序化交易的功能 4 1-2、TB公式说明 4 1-3、TB编程步骤 5 二、数据的说明与使用 62-1、Bar数据 6 2-2、计算方法 6 2-3、叠加数据 8 2-4、行情数据 9 2-5、属性数据 9 三、TB公式编程基础知识 93-1、TB的公式的结构 9 3-2、公式名称规则 11 3-3、语句写法 11 四、参数的说明与应用 214-1、参数说明 22 4-2、参数的使用与说明 22 4-3、参数的默认值 23 4-4、参数使用例子 24 4-5、变量参数 24 五、变量的类型与使用 255-1、变量参数 25 5-2、变量声明 26 5-3、变量的默认值 27 5-4、变量赋值 27 5-5、序列变量 28 5-6、变量、数据与函数的回溯 28 六、系统函数的使用 316-1、标点符号 31 6-2、控制语句 32 6-3、循环语句 37 七、用户函数的使用与说明 407-1、TB用户函数 40 7-2、序列函数 42 7-3、使用内建用户函数 42 7-4、用户函数的调用 44 7-5、用默认参数调用用户函数 44 八、技术指标编写 458-1、技术指标与应用 45 8-2、常用的技术指标应用举例 48 8-3、自编指标的输出 56 8-4、指标编写常见问题 58 九、用户函数编写 589-1、TB用户函数的编写 58 9-2、交易指令(Buy/Sell) 61 9-3、叠加多个商品合约进行交易 62 9-4、交易常用系统函数介绍 62 十、交易策略的程序实现与实例 6510-1、利用技术指标的交易策略 6510-2、止赢止损 7010-3、加仓减仓 7710-4、多品种交易 8010-5、集合竞价数据过滤 8210-6、函数下单撤单和全局变量操作 8310-7、数据库读写 83十一、其他注意事项 88 11-1、信号消失问题及解决办法 9111-2、盘中和盘后公式运行的差别 94十二、策略评估的常用指标 94正文一、TB程序化交易的功能与特点TradeBlazer公式(简称TB),新推出的V4公式,运行效率大幅提高,除支持多线程应用功能,在程序交易的主要特点如下:1-1、TB程序化交易的功能➢所使用的TBL(TradeBlazer Language)语言功能强大、语法简明易懂;➢TB的公式执行机制是在每根BAR上都会执行一遍公式,能实现公式和算法的精确控制;➢具有结构化的控制语句,支持复合语句—IF语句和FOR,WHILE语句;➢提供了丰富的系统函数,支持用户函数,便于实现程序的模块化设计;➢提供A函数、Q函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;➢支持单图表叠加多个商品的交易和测试;➢技术指标源代码公开,便于指标算法的改进;➢强大的图表化、多维度的交易模型测试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;➢支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用。
欢迎使用交易开拓者欢迎使用交易开拓者交易开拓者(TradeBlazer)是一款为中国期货市场专业投资用户开发的金融投资软件,它集中了实时行情,技术分析,快捷交易及程式化交易的功能。
通过使用交易开拓者,用户可以简单,快速的将自己的交易思想转化为计算机代码,让计算机帮助用户实现价值。
我们致力于为期货行业的投资者提供一个实现盈利的工具,但并不保证该软件能为所有的使用者带来盈利,希望使用者能够通过使用系统,建立并优化自己的交易思想,形成自己的交易策略。
感谢您选择交易开拓者,希望您能够通过使用该系统找到乐趣,并能创造更多价值。
交易开拓者快速链接▪关于交易开拓者▪快速入门▪系统基础▪行情报价▪分时图▪超级图表▪交易系统▪公式系统关于交易开拓者- 系统简介系统简介交易开拓者是一款针对中国期货行业的专业金融投资软件,它借鉴了华尔街一些著名软件的优点,吸收了国际众多的网上交易系统的精华,并拥有简单和友好的用户界面,用户可以方便快捷的开发及优化自己的技术分析和交易策略。
功能特色▪强大的公式支持系统,方便用户实现交易思想▪领先的策略交易体系,实时数据驱动和自动交易功能▪面向用户的快速下单体系▪强大的多帐户管理功能,让您使用多帐户像单帐户一样轻松▪多种方式的套利功能,直观轻松的实现套利交易▪动态帐户和风险监控机制▪完善的图表体系设计、分析工具与交易功能的动态交互▪工作区管理机制和个性化模板应用关于交易开拓者- 系统配置系统配置最低系统配置▪CPU: PIII 800以上▪硬盘: 1G及以上可用空间▪内存: 256M及以上▪显示器: 15吋彩显,分辨率800*600▪操作系统: WindowsXP及以上系统▪互联网: 56K Modem推荐系统配置▪CPU: P4 1GHZ以上▪硬盘: 10G及以上可用空间▪内存: 512M及以上▪显示器: 17吋彩显,分辨率1024*768▪操作系统: WindowsXP及以上系统▪互联网: ADSL,CableModem及其他宽带接入方式▪其他:有声卡和音箱等多媒体设备关于交易开拓者- 寻求帮助寻求帮助交易开拓者是一个专业金融投资工具,需要您多些耐心,慢慢地去和它沟通。
目录第一章 (4)概述 (4)1.1 TradeBlazer语言特点 (5)1.2功能特色 (5)1.3 安装TradeBlazer (6)1.3.1 软件下载 (6)1.3.2 软件卸载 (7)第二章 (8)TradeBlazer可视化集成开发环境 (8)2.1启动TradeBlazer (9)2.1.1 TradeBlazer系统登陆 (9)2.1.2 连接交易账户 (10)2.2TradeBlazer的用户界面 (11)2.2.1 系统菜单 (12)2.2.2 工具栏 (14)2.2.3 工作室 (15)2.2.4 工作区 (16)2.2.5 面板 (17)2.2.6 桌面 (18)2.2.7 窗口特性 (18)2.2.8 我的键盘 (19)2.2.9 跑马灯 (20)2.2.10 状态栏 (20)2.2.11 消息中心 (21)2.2.12 系统设置 (23)2.2.13 数据维护 (26)2.2.14 导入和导出 (29)2.2.15 图像存储和打印 (30)2.2.16操作小技巧 (31)第三章 (32)TradeBlazer视窗模块 (32)3.1 行情报价 (33)3.1.1 行情报价主界面 (33)3.1.2 行情报价工具栏 (34)3.1.3 行情报价右键菜单 (34)3.1.4 商品选择和字段选择 (34)3.2 分时图 (36)3.2.1 分时图主界面 (36)3.2.2 分时图分时图表 (37)3.2.3 分时图盆口明细 (37)3.2.4 分时图分笔成交 (38)3.2.5 添加“开平仓性质” (38)3.3.1超级图表主界面 (39)3.3.2 超级图表工具栏 (40)3.3.3 超级图表菜单 (41)3.3.4 页面设置 (45)3.3.5 商品设置 (48)3.3.6 技术分析设置 (50)3.3.7 交易指令设置 (51)3.3.8自动交易 (52)3.3.9 交易设置 (52)3.3.10 讯号设置 (54)3.4 TB浏览器 (55)第四章 (56)交易系统 (56)4.1 交易师 (57)4.2触发单 (59)4.3快速平仓 (60)4.4止损获利 (61)4.5批量下单 (62)4.6组合下单 (64)4.7预埋单 (65)4.8交易助手 (66)4.9帐户管理 (67)4.10帐户分析 (70)第五章 (72)TradeBlazer公式基础 (72)5.1公式简介 (73)5.2 数据 (73)5.3 命名规则 (77)5.4 语句 (77)5.5 保留字 (78)5.6 操作符 (80)5.7 表达式 (83)5.8 使用注释 (84)5.9 系统函数 (84)5.10 标点符号 (84)5.11 控制语句 (85)5.12 参数 (91)5.13 变量 (93)5.14 数据回溯 (96)第六章 (99)TradeBlazer公式应用 (99)6.1 用户函数 (100)6.2 用户字段 (104)6.4 K线型态 (108)6.5 特征走势 (109)6.6 交易指令 (111)6.7公式报警 (115)6.8公式管理器 (115)6.9新建公式 (116)6.10公式编辑器 (117)6.11公式属性 (119)6.12公式导入导出 (120)6.13交易策略 (122)附录 (127)TradeBlazer公式范例 (127)1. TradeBlazer公式的HelloWorld! (127)2.如何在交易开拓者中编写技术指标? (128)3. 一个简单顺势交易系统的例子 (132)4. 一个文华交易系统的移植例子 (134)5. 一个简单交易系统的自动交易测试 (137)第一章概述欢迎使用交易开拓者。
欢迎使用交易开拓者欢迎使用交易开拓者交易开拓者(TradeBlazer)是一款为中国期货市场专业投资用户开发的金融投资软件,它集中了实时行情,技术分析,快捷交易及程式化交易的功能。
通过使用交易开拓者,用户可以简单,快速的将自己的交易思想转化为计算机代码,让计算机帮助用户实现价值。
我们致力于为期货行业的投资者提供一个实现盈利的工具,但并不保证该软件能为所有的使用者带来盈利,希望使用者能够通过使用系统,建立并优化自己的交易思想,形成自己的交易策略。
感谢您选择交易开拓者,希望您能够通过使用该系统找到乐趣,并能创造更多价值。
交易开拓者快速链接▪关于交易开拓者▪快速入门▪系统基础▪行情报价▪分时图▪超级图表▪交易系统▪公式系统关于交易开拓者- 系统简介系统简介交易开拓者是一款针对中国期货行业的专业金融投资软件,它借鉴了华尔街一些著名软件的优点,吸收了国际众多的网上交易系统的精华,并拥有简单和友好的用户界面,用户可以方便快捷的开发及优化自己的技术分析和交易策略。
功能特色▪强大的公式支持系统,方便用户实现交易思想▪领先的策略交易体系,实时数据驱动和自动交易功能▪面向用户的快速下单体系▪强大的多帐户管理功能,让您使用多帐户像单帐户一样轻松▪多种方式的套利功能,直观轻松的实现套利交易▪动态帐户和风险监控机制▪完善的图表体系设计、分析工具与交易功能的动态交互▪工作区管理机制和个性化模板应用关于交易开拓者- 系统配置系统配置最低系统配置▪CPU: PIII 800以上▪硬盘: 1G及以上可用空间▪内存: 256M及以上▪显示器: 15吋彩显,分辨率800*600▪操作系统: WindowsXP及以上系统▪互联网: 56K Modem推荐系统配置▪CPU: P4 1GHZ以上▪硬盘: 10G及以上可用空间▪内存: 512M及以上▪显示器: 17吋彩显,分辨率1024*768▪操作系统: WindowsXP及以上系统▪互联网: ADSL,CableModem及其他宽带接入方式▪其他:有声卡和音箱等多媒体设备关于交易开拓者- 寻求帮助寻求帮助交易开拓者是一个专业金融投资工具,需要您多些耐心,慢慢地去和它沟通。
目录问题一为什么程序化交易应用到期货市场 (2)问题二什么是期货,与现货有什么区别 (2)问题三期货能做空,是不是一般的投机做空都犯了操作市场的罪 (3)问题四我想学买卖股票,不是想学期货,也不想学习量化交易 (4)问题五量化投资的层次及理论研究 (4)问题六如何快速学习交易开拓者 (5)问题七:期货交易的品种及详情 (6)问题八期货交易的“收费”问题 (8)问题九IF000的价格怎么跟标的物沪深300的价格不一致呢? (9)问题十在IF000合约上怎么不能下单呢? (10)问题十一IF000与IF888跟IF1504的区别 (11)问题十二如何判断期货品种的主力合约 (13)第一步:基于当前时间找出可供交易的合约 (13)第二步:判断可交易的合约的活跃性,即交易量 (14)问题十三下单的技巧-----填写触发 (15)问题十四主要技术指标 (17)问题十五期货市场如何交易 (17)问题十六如何开期货账户 (18)作业 (18)问题一为什么程序化交易应用到期货市场首先,股票市场是T+1交易制度,期货市场是T+0交易制度,也就是说股票是当天买,当天不能卖,期货市场是当天买,当天就能卖。
其次,期货市场的交易非常活跃,想卖“随时”能成交,股票则不然。
最后,期货特别是股指期货交易量大,参与者众多,技术分析有了用武之地。
问题二什么是期货,与现货有什么区别期货的英文名称是Futures!期货(Futures)与现货完全不同,现货是实实在在可以交易的货(商品),期货主要不是货,而是以某种大宗产品如棉花、大豆、石油等及金融资产如股票、债券等为标的标准化可交易合约。
因此,这个标的物可以是某种商品(例如黄金、原油、农产品),也可以是金融工具。
比如:2015/7/19一手铜的Cu1509的期货合约价格20万,意思是15/09到期日要以20万的价格卖或买出一手铜(10吨)期货市场的投资者分为两类人: 规避风险的套期保值者和赚取利润价差的投机者。
交易开拓者代码学习各种买卖指令及实例(TB)(转)2012年07月27日22:35原文地址:交易开拓者代码学习各种买卖指令及实例(TB)(转)作者:竹本无青各种买卖指令Buy说明产生一个多头建仓操作。
语法Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数Share 买入数量,为整型值,默认为使用系统设置参数;Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。
备注产生一个多头建仓操作,无返回值,该函数仅支持交易指令。
该函数仅用于多头建仓,其处理规则如下:如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行多头建仓。
如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数首先平掉所有空仓,达到持平的状态,然后再按照参数进行多头建仓。
如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。
示例在MarketPosition=0的情况下:Buy(50,10.2,1) 表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。
Buy(10,Close) 表示用当前Bar收盘价买入10张合约,马上发送委托。
Buy(5,0) 表示用现价买入5张合约,马上发送委托。
BuyToCover说明产生一个空头平仓操作。
语法BuyToCover(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数Share 买入数量,为整型值,默认为平掉当前所有持仓;Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。
国内流行程序化交易平台交易开拓者使用教程程序化交易平台是指利用计算机程序来实现自动交易的平台。
而国内流行的程序化交易平台交易开拓者(以下简称TB)是一款功能强大、易于使用的交易平台。
本文将为大家详细介绍TB的使用教程,包括平台的注册、登录、交易策略的编写和执行等。
希望能够帮助大家更好地使用TB进行交易。
第一部分:平台的注册和登录注册完成后,我们可以使用注册时所填写的用户名和密码进行登录。
在TB官方网站上找到登录入口,输入用户名和密码,点击登录按钮即可成功进入TB平台。
第二部分:交易策略的编写在登录成功后,点击左上角的交易策略管理按钮,进入交易策略编写界面。
首先,我们需要定义交易策略的基本信息,包括策略名称、交易品种、交易周期等。
点击基本信息选项卡,填写相关信息。
接下来,我们需要定义交易的入场条件和出场条件。
点击入场条件或出场条件选项卡,选择相应的条件,例如移动平均线交叉、指标超买超卖等,填写具体参数即可。
除了基本的入场和出场条件,我们还可以定义止损和止盈条件。
点击止损条件或止盈条件选项卡,填写相应的条件和参数。
第三部分:交易策略的执行在交易策略编写完成后,我们需要将其保存,并进行回测。
点击保存按钮,保存交易策略。
回到交易策略管理界面,我们可以看到保存的交易策略列表。
点击回测按钮,选择回测开始和结束的时间段,点击开始回测按钮即可进行回测。
回测完成后,我们可以查看回测结果并进行优化。
点击回测结果选项卡,查看交易的收益曲线、胜率等指标。
根据回测结果,我们可以对交易策略进行优化,提高交易的盈利能力。
最后,当我们对交易策略进行了充分的优化后,可以将其执行在实盘上。
点击交易按钮,选择需要执行的交易策略,点击开始交易按钮即可开始实盘交易。
总结:以上就是TB程序化交易平台的使用教程。
通过注册登录、交易策略的编写和执行等步骤,我们可以在TB上进行自动化交易,并通过回测和优化提高交易的盈利能力。
希望本教程能够帮助大家更好地使用TB进行交易,获取更好的交易体验和效果。
交易开拓者(TB)期货程序化交易编程本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。
TB里面代码执行1,代码从第一根K线开始执行,一直到最后一根K线;2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;我们就写个输出每日的收盘价的例子;打开TB,在左边的TB公式里面,点击新建技术指标,然后在出来的公式编辑器里面输入BeginEnd注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间我们再在Begin和End之间输入一些代码,完整的就是:BeginFileAppend("c:\\",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");FileAppend("C:\\",Text(Close));End我们再说说这两行代码是什么意思File就是文件,Append就是添加,现在明白了吧FileAppend就是添加一个文件,文件名是什么呢就是你后面写的,这个文件的路径在哪里呢就是c:\\里面的C盘,且在这个文件里面添加一行东西,这行东西的内容就是你后面所写的Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"当然,如果这个文件已经存在,他就不会添加文件了,仅仅在这个文件的后面添加一行上面你写的内容好了,再看看Text,Text的意思就是把那些不是字符串的东西如数字啊,等变成字符串.而Year,Month,Day就代表了正在执行你写的代码的那一根K线的年,月,日,年月日是数字,我们当然要用Text把它搞成字符串CloseK线的收盘价啊,如果代码执行到最后的那根K线我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,就OK了我们在回到K线图里面,TB把K线图叫做超级图表在K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超级图表里面仅仅显示5条K线,点确定后,你就看到在K线图里面只显示了5跟K线,当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的我们上面说了,我们这个例子仅仅是把每日的收盘价写到文件里面去啊,那么我们找一找文件在什么地方咯FileAppend("c:\\",很明显,文件是在c盘的,文件的名字是好了,我们到c盘找到文件,双击打开,我们就会看到下面的内容:2007年9月24日的收盘价等于672802007年9月25日的收盘价等于678002007年9月26日的收盘价等于671602007年9月27日的收盘价等于673002007年9月28日的收盘价等于68020我们现在来分析下:首先你写的代码在第一根K线上执行,先执行第一行代码:FileAppend("c:\\",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");这行代码就输出了第一根K线的年,月,日,就在文件里输出成"2007年9月24日的收盘价等于"然后执行第二行代码:FileAppend("C:\\",Text(Close));折行代码把第一根K线的收盘价输出到文件里面,于是就输出了"67280"好了,代码在第一根K线上执行完毕,于是再转到第二根K线,再执行第一行代码,再执行第二行代码.........我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。
这其中有三个原因:1、别人写的交易策略,你难以调整它。
据统计,90%以上的交易策略会在2年半之内由于种种原因失效或者效率降低。
通常的做法是一个季度左右,交易员就需要微调其策略,调整参数或改动某些条件。
如果策略不是自己编写的,调整起来就会有困难。
2、别人写的交易策略,你很难彻底执行它。
系统交易最重要的好处在于它的执行能力。
它可以使你的交易摆脱人性的弱点,摆脱心理因素的干扰。
然而这一切的基础,在于自信。
人只会信任自己了解的东西,这是人性。
如果一个交易策略是别人写的,无论它的测试报告是多么天花乱坠,你都不会信任它,因为你不了解它。
一旦市场出现了危机情况,你就会坐立不安,你就会总怀疑是不是策略有问题,然后就又把策略扔到一边,回到凭感觉去操作的老路上去了。
3、最重要的一点在于:编程就是理解,编写交易策略调试交易策略的过程其实就是理解市场的过程。
这是一种非常宝贵的积累。
大多数人都是通过在市场中亏钱,靠爆仓来理解市场的。
成本高昂,而且难以总结。
使用这种方法来了解市场,往往就算你亏了很多钱,交了大把学费,你仍然不知道自己到底输在哪里。
你总结不出来,你就不可能有长进,就不可能赢。
而通过写交易策略来了解市场你不需要交什么学费,从历史测试报告里很容易分析出来自己到底错在哪里,如此你就很容易改进。
把编好的交易策略与模拟帐户交易结合起来就可以为你带来足够逼真的实战经验。
编程其实是一种思想,编程的目的是把你的思想用各种图形表现出来而已我们期货编程的目的是表现我们的交易思想是为思想而编程,不是为编程而编程!现在开始写数据类型,变量和赋值.数据类型分字符串类型,数值型,还有布尔型字符串类型很简单,用分号" "括起来的东西就叫做字符串类型的数据,如"I love you",如"3345",.....数值型数据类型也同样的简单,数值大家知道吧,如1542啊,啊....这些东西就是数值型的数据类型当然,如果把一个数值型的东西用分号""括起来了那他就不再是数值型数据了,而是字符串类型的数据如1688是数值型数据,但是"1688"就是字符串类型的数据了还有就是布尔型,当然,没有接触过编程的朋友可能不明白布尔型的意思说白点,布尔型就是真假型,意思就是布尔类型的数据只能取真(True)或假(False)值.比如2>1,这个东西就是布尔类型的数据,因为2是大于1啊,所以这个表达式返回True(真)那么2<1,大家说这个表达式是不是个布尔类型的数据呢也是,因为2大于1啊,所以2<1是错误的,就返回False(假)大家明白了吧,就这三个类型,其中最只要的就是数值型数据类型用的最多的也是数值型数据类型如果明白了,那么请您就记住在TB里面数值型Numeric看下TB的帮助,数据类型里面还有个序列型,如果数值序列型,字符串序列型,布尔序列型序列这个东西看起来很难理解比如我们的K线图上有10跟K线,Close就是收盘价但是这个Close包含了第一根K线的收盘价,也包含了第二根K线的收盘价.......一直包含到第五根K线的收盘价也就是说序列型的数据在每根K线上都有一个值的说说变量变量就是一个可以改变的东西现在这个变量的值是100,但是等下我可以把它改成20, 只要您喜欢,你可以随心所欲的改变这个值能够修改他的值的东西就叫做变量了记住:在TB里面变量都是要先定义的!而且有着他独到的定义方法,而且这个定义必须放到Begin的前面如我们定义一个数值型变量a.就应该这样VarsNumeric a;Begin......End当然你也可以定义两个或者多个变量,如VarsNumeric a;Numeric b;......更多变量定义Begin......End大家也许想到了我定义这个变量a,我要让他等于2,这个东西很简单你可以在变量定义的时候就给他赋初值让他一开始被定义就等于2,也可以在Begin下面写.如VarsNumeric a(2);Numeric b;......更多变量定义Begin......End明白了么|那么变量b呢我们没有用括号()扩个东西啊,那么这个时候b这个变量等于什么呢很简单,如果你在定义变量的时候没有给他初值,那么b这个时候等于0再看在Begin里面怎么修改这个变量的值VarsNumeric a(2);Numeric b;......更多变量定义Begina = 3;b = 100;End很简单的现在大家应该知道了变量是什么东西了吧对了,忘记告诉大家了,在Begin下面给变量复制仅仅只对当前正在执行你的代码的K线有效,到下一根K线他就是初始值了啊写个例子吧VarsNumeric a(100);.......更多变量定义Begina = 3;b = 100;End现在我们说说TB中的流程控制流程控制就是控制代码执行的流程还说的明白点就是如果满足什么条件就做什么事情或者不满足什么条件的时候做什么事情简单说流程控制就是控制语句控制代码控制语句中分为逻辑控制语句(就是条件控制语句)和循环控制语句条件控制语句中大家记住If这个关键字,翻译成中文就是如果循环控制语句中大家记住For,就是开始循环了先说If.假设一个这样的条件:如果(收盘价>开盘价)则输出:今日收红阳线我们先把这个东西翻译成TB如果翻译成If收盘价和开盘价大家都知道会翻译成Close和Open输出语句就是FileAppend,则翻译成TB就是:If(Close>Open){FileAppend("c:\\","今日收红阳线");}是不是很简单呢大家记住一点,凡是if(如果)语句中的代码,都给我用{}括起来我们再把上面的条件加上一点:如果(收盘价>开盘价)则输出:今日收红阳线否则如果(收盘价==开盘价)则输出:今日收十字线我们再翻译成TB,把否则翻译成Else,如果翻译成IfIf(Close>Open){FileAppend("c:\\","今日收红阳线");}Else If(Close==Open){FileAppend("C:\\","今日收十字线");}同样的简单,我们可以再把上面的条件再加:如果(收盘价>开盘价)则输出:今日收红阳线否则如果(收盘价==开盘价)则输出:今日收十字线否则则输出:今日收绿阴线上面的否则大家知道翻译成Else吧,有两种翻译方法,因为收盘价和开盘价的比较只存在着三种情况: 收盘价大于开盘价,收盘价等于开盘价,收盘价少于开盘价,我们先这样翻译:If(Close>Open){FileAppend("c:\\","今日收红阳线");}Else If(Close==Open){FileAppend("C:\\","今日收十字线");}Else If(Close<Open){FileAppend("c:\\","今日收绿阴线");}上面的这个语句是很好理解的但是大家想到了吗开盘价和收盘价的比较,如果不满足Close>Open,也不满足Close==Open 那么肯定的一点就是:Close<Open,所以上面的语句可以写成:If(Close>Open){FileAppend("c:\\","今日收红阳线");}Else If(Close==Open){FileAppend("C:\\","今日收十字线");}Else{FileAppend("c:\\","今日收绿阴线");}再说For循环语句.先记下For语句的语法格式:For 循环变量= 初始值To 结束值{TradeBlazer公式语句;}也就是(假如变量i已经定义,且循环5次)For i = 0 To 4{TradeBlazer公式语句;}for语句的理解稍微复杂点,我们先看看For语句是如何执行的:比如上面的例子首先执行i=0,就是给变量i赋值让i等于0,然后判断i是不是少于等于4,这里i等于0,所以小于4,于是执行{}里面的TradeBlazer公式语句;执行{}里面的TradeBlazer公式语句后,TB系统会自动给变量i加1,这个时候i就等于1了(上面刚刚开始的时候i 等于0,加了1就是等于1了)再判断i是不是少于等于To后面的4,1当然少于4,于是再执行{}里面的TradeBlazer公式语句;执行完{}里面的TradeBlazer公式语句后,Tb系统又自动给变量i加1,上面i已经等于1了,加1,于是这个时候i等于2了,于是再判断变量i的值2是不是少于To后面的4,当然少于拉,于是再执行{}里面的TradeBlazer公式语句;....以此执行,当i等于5的时候,再与To后面的4进行比较,当然5>4了,所以不满足条件了,于是不再执行{}里面的TradeBlazer公式语句;而开始执行{}下面的语句拉大家再研究下下面的HHV的写法,就会很明白了的:比如一个这样的函数请注意,这仅仅是个假想的函数,仅为了帮助理解函数是什么:GetCloseFromTrader我们就很明白,这个函数就是帮助我们到交易所跑一趟,然后把收盘价返回给我们;有点明白了吧,但是仔细一想,这个东西似乎有点问题,比如返回收盘价,交易所那么多的品种,且每个品种都有那么多的月份,他到底返回的是什么东西的收盘价啊那么我们这样写:GetCloseFromTrader(Cu0801)现在应该完全明白了,这个函数就是从交易所返回某个品种的收盘价,到底是什么品种什么月份的收盘价呢Cu0801就是拉.其实,这里面的Cu0801就是这个函数所需要的参数!我们于是就可以这样理解:函数是帮助用户完成某一件事情且返回用户所需要的数据的方法;那么参数呢参数就是参到函数里面去的数,也就是说必须要传递给函数的数;我们现在不要求一定能够自己写函数,但是必须要懂得的是要看懂这个函数是做什么用的,且知道如何去调用这个函数!我们先看看下面的这个函数,这个函数的名字叫:HHV,是根据轮回老大的建议改写的,我们必须要读懂这个函数,且知道怎么样去CODE:....第N天同样如此了;这个时候我们就应该想到,如果当前K线的索引小于你需要的周期数的时候就取当前K线的前面几个周期的最高值于是代码开始写:minDay = Min(CurrentBar,Length-1);这个大家都很明白吧,如果当前K线索引假设是3,而你要得到的是5个周期的最高值,因为暂时还没有5个周期,我们我们就取这3个周期来获得这三个周期的最高值为什么要-1呢因为K线的索引是从0开始计算的,那么前面的minDay呢就是个变量,我们用这个变量来代表周期,于是我们再到定义变量的地方去定义这个变量:Numeric minDay;再看代码:CODE:for i=0 to minDay{highestValue=Max(highestValue,Price[i]);}很明显,这是一个前面我们所说的For循环,在For循环里面我们必须要先定义一个变量i(可以是其他名字),代表从什么基数开始循环;于是再到定义变量的地方去定义这个i变量:VarsNumeric highestValue(0);Numeric minDay;Numeric i;再看这个For循环,当i是0的时候,看这个时候0是不是小于等于最小周期minDay,如果条件成立,就执行:CODE:highestValue=Max(highestValue,Price[i]);Price[0]代表今天的价格,先比较今天的价格和最高值,取最大的那个保存;再把i+1于是这个时候i为1了,再比较是不是小于等于最小周期minDay,如果条件成立,再执行:CODE:highestValue=Max(highestValue,Price[i]);这个时候Price[1]就代表了昨天的价格,把昨天的价格和保存的最高值比较,取他们的最高的那个再次保存;依次循环,我们是不是就得到了某个周期某个价格的最高值了呢最后面,我们用代码:Return highestValue;把这个得到的最高值返回给用户,Return就是返回调用这个函数的时候就更简单了,比如求10个周期的收盘价的最高值:HHV(Close,10);求20个周期的最高价的最高值:HHV(High,20);大家在看看和分析这个文章里面的函数就会完全明白了的我们现在来写一个飞狐的DMA函数原文出自这里:QUOTE:请编飞狐DMA函数.函数:DMA(X,N)别名:动态移动平均参数:X为数组,N为计算周期返回:返回数组说明:求X的动态移动平均。