从一无所知开始学习交易开拓者(TB)期货程序化交易编程

合集下载

TB公式编程官方基础教程

TB公式编程官方基础教程

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软件使用说明暨程序化交易风险揭示说明书

交易开拓者TB软件使用说明暨程序化交易风险揭示说明书

交易开拓者(TB)软件使用说明暨程序化交易风险揭示说明书尊敬的客户:您好!感谢您使用交易开拓者(TB)软件(以下简称“该软件”)。

在使用之前,请务必仔细阅读和理解《交易开拓者(TB)软件使用说明暨程序化交易风险揭示说明书》(以下简称《风险揭示说明书》)。

除非您接受并认可本《风险揭示说明书》,否则您不能使用我在我公司使用该软件进行程序化交易。

您一旦在我公司申请开通交易功能,即表示您同意并认可本《风险揭示说明书》及该软件随附的计算机软件和相关文档印刷材料。

一、该软件的功能该软件包含基础行情、分析和交易下单功能;基于本软件的程序化交易系统或策略的编写、测试和自动下单功能;内嵌于软件的、由第三方提供的,客户可根据自身需要选择使用的多种程序化交易系统及策略;基于客户自行提供的交易理念及交易策略进行定制,由公司或公司委托的第三方负责编写和实现的程序化交易系统、策略及方案;为客户提供程序化交易平台,供客户根据自己的交易理念和交易策略自行进行交易程序的编写及运行。

二、该软件的使用1、您需要使用该软件在我公司进行交易,首先需要自行向深圳开拓者科技有限公司申请软件账号,并在我公司开立期货账户,向公司提出申请开通本该软件交易功能,并签署《风险揭示说明书》。

2、我公司在接到您的使用申请和签署的《风险揭示说明书》后,将联系深圳开拓者科技有限公司为您开通交易功能。

3、一个期货账户仅能为一个软件账号开通交易功能,即您仅能在一台计算机终端上安装、使用、显示、运行本软件的一份副本。

4、本软件自客户签署《风险揭示说明书》之日起一年内有效。

一年有效期过后,由客户选择是否继续使用本软件。

5、如客户在使用本软件的过程中,对本软件提出疑议,则视同客户自动放弃本软件的使用。

公司有权自动终止客户对本软件的使用权限,客户应自行销毁本软件的所有复制品,或归还给公司。

三、支持服务1、公司为您提供与本软件有关的支持服务,包括培训、软件安装与设置。

2、支持服务的使用受用户手册或其它公司提供的材料中所述的各项政策和计划的制约。

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例(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公式高级应用

KCS版本1(2)

If(MarketPosition!=1 && High >= UpperBand) { MyPrice = UpperBand; If(Open > MyPrice) MyPrice = Open; Buy(1,MyPrice); Return; } If(MarketPosition!=-1 && Low <= LowerBand) { MyPrice = LowerBand; If(Open < MyPrice) MyPrice = Open; SellShort(1,MyPrice); Return; } End
易系统。 由价格均线和ATR形成通道,当价格突破 通道产生入场讯号。
Keltner Channelቤተ መጻሕፍቲ ባይዱ理
肯特纳通道(KC)是一个移动平均通道,
由三条线组合而成(上轨、中线及下轨),若 价格突破边界,即表示出现开仓机会。 肯特纳通道是基于平均真实波幅原理而形 成的指标,对价格波动反应灵敏,基于KC 的系统可以实时开仓,不需要等待下一个 Bar。
以橡胶测试结果为例,从报表中我们看到,
最大回撤发生的日期是2006/7/18,我们仔 细查看交易记录和讯号,可以看到最大的 资金回撤是由于一次盈利平仓过慢,以及 两次假突破导致。 因此我们有必要增加一个跟踪止损的设置。 我们选择固定点数跟踪止损(吊灯止损)。
KCS_V3(2)
KCS_V3(3)

KCS_V3(4)



If(BarsSinceEntry == 1) { HigherAfterEntry = AvgEntryPrice; LowerAfterEntry = HigherAfterEntry; }Else If(BarsSinceEntry > 1) { HigherAfterEntry = Max(HigherAfterEntry[1],High[1]); LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]); } Commentary("HigherAfterEntry="+Text(HigherAfterEntry)); Commentary("LowerAfterEntry="+Text(LowerAfterEntry));

TB公式编程官方基础教程1

TB公式编程官方基础教程1

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函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;➢支持单图表叠加多个商品的交易和测试;➢技术指标源代码公开,便于指标算法的改进;➢强大的图表化、多维度的交易模型测试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;➢支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用。

交易开拓者(TB)使用说明

交易开拓者(TB)使用说明

欢迎使用交易开拓者欢迎使用交易开拓者交易开拓者(TradeBlazer)是一款为中国期货市场专业投资用户开发的金融投资软件,它集中了实时行情,技术分析,快捷交易及程式化交易的功能。

通过使用交易开拓者,用户可以简单,快速的将自己的交易思想转化为计算机代码,让计算机帮助用户实现价值。

我们致力于为期货行业的投资者提供一个实现盈利的工具,但并不保证该软件能为所有的使用者带来盈利,希望使用者能够通过使用系统,建立并优化自己的交易思想,形成自己的交易策略。

感谢您选择交易开拓者,希望您能够通过使用该系统找到乐趣,并能创造更多价值。

交易开拓者快速链接▪关于交易开拓者▪快速入门▪系统基础▪行情报价▪分时图▪超级图表▪交易系统▪公式系统关于交易开拓者- 系统简介系统简介交易开拓者是一款针对中国期货行业的专业金融投资软件,它借鉴了华尔街一些著名软件的优点,吸收了国际众多的网上交易系统的精华,并拥有简单和友好的用户界面,用户可以方便快捷的开发及优化自己的技术分析和交易策略。

功能特色▪强大的公式支持系统,方便用户实现交易思想▪领先的策略交易体系,实时数据驱动和自动交易功能▪面向用户的快速下单体系▪强大的多帐户管理功能,让您使用多帐户像单帐户一样轻松▪多种方式的套利功能,直观轻松的实现套利交易▪动态帐户和风险监控机制▪完善的图表体系设计、分析工具与交易功能的动态交互▪工作区管理机制和个性化模板应用关于交易开拓者- 系统配置系统配置最低系统配置▪CPU: PIII 800以上▪硬盘: 1G及以上可用空间▪内存: 256M及以上▪显示器: 15吋彩显,分辨率800*600▪操作系统: WindowsXP及以上系统▪互联网: 56K Modem推荐系统配置▪CPU: P4 1GHZ以上▪硬盘: 10G及以上可用空间▪内存: 512M及以上▪显示器: 17吋彩显,分辨率1024*768▪操作系统: WindowsXP及以上系统▪互联网: ADSL,CableModem及其他宽带接入方式▪其他:有声卡和音箱等多媒体设备关于交易开拓者- 寻求帮助寻求帮助交易开拓者是一个专业金融投资工具,需要您多些耐心,慢慢地去和它沟通。

交易开拓者TB公式高级应用_2

交易开拓者TB公式高级应用_2

交易开拓者TB公式高级应用_2交易开拓者TB公式高级应用_21.TB公式的构成2.上下轨线的计算上轨线的计算方式是:中轨线+2*标准差下轨线的计算方式是:中轨线-2*标准差中轨线通常是价格的20日简单移动平均线,标准差则表示价格波动的程度。

3.高级应用1:判断价格波动的大小交易开拓者TB公式可以帮助交易者判断价格波动的大小。

当价格突破上轨线时,意味着市场上涨的力量很强,价格波动较大;而当价格跌破下轨线时,则意味着市场下跌的力量很强,价格波动也较大。

交易者可以利用这一信息来调整交易策略,选择更适合当前市场的交易方式。

4.高级应用2:判断价格趋势的变化交易开拓者TB公式还可以帮助交易者判断价格趋势的变化。

当价格突破上轨线并形成上升趋势时,可以视为市场处于上升阶段,交易者可以考虑逢低买入;而当价格跌破下轨线并形成下降趋势时,则可以视为市场处于下降阶段,交易者可以考虑逢高卖出。

5.高级应用3:寻找买入和卖出信号交易开拓者TB公式可以用来寻找买入和卖出的信号。

当价格从下轨线上方回升并突破中轨线时,可以视为买入信号;而当价格从上轨线下方回落并跌破中轨线时,则可以视为卖出信号。

交易者可以结合其他技术指标和交易策略来确认买入和卖出的时机。

6.高级应用4:与其他指标的结合应用交易开拓者TB公式可以与其他技术指标结合应用,以进一步提高分析和交易的准确性。

例如,可以结合移动平均线、相对强弱指数(RSI)等指标来确认买入和卖出的时机。

通过综合分析不同的指标,交易者可以更好地理解市场的变化和趋势,从而做出更明智的交易决策。

总之,交易开拓者TB公式是一种有用的技术指标,可以帮助交易者分析市场的变化和趋势,并找到合适的买入和卖出时机。

通过深入理解和应用这一指标的高级技巧,交易者可以提高交易的准确性和盈利能力。

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例
SetStopLoss(1,50, False);当前持仓的某一个建仓位置每张合约的亏损达到50之后,执行该持仓位置的止损平仓。(此时只计算该持仓位置的每张合约亏损)
SetBreakEven(0,2000,True);当前所有持仓的盈利达到2000之后,启动所有持仓位置的保本平仓。(此时是计算所有持仓的盈利数)
触发价格:触发单设定的条件价格,通过比较现价和触发价格确定是否下单。下单之后,该触发单会从交易服务器中删除;
执行价格:条件满足之后,发送委托的价格,设定为0可自动获取当时的叫买/卖价;
过期时间:设定触发单的过期时间,到这个时间还没有触发的订单会被设为过期,不再进行监控。
吊买
吊买是指当现价向下跌破触:吊卖
备注产生一个空头建仓操作,无返回值,该函数仅支持交易指令。
该函数仅用于空头建仓,其处理规则如下:
如果当前持仓状态为持平,即MarketPosition = 0时,该函数按照参数进行空头建仓。
如果当前持仓状态为多仓,即MarketPosition = 1时,该函数首先平掉所有多仓,达到持平的状态,然后再按照参数进行空头建仓。
注意:触发单在发送之后将会生效,该委托单在服务器上运行,此时您关闭程序或电脑不会影响触发单的执行。
SetPercentTrailing(2000,0.2,True);又是一个宝
SetPercentTrailing(2000,0.2,True);当前所有持仓盈利在大于2000之后回落,当回落百分比达到20%之后,执行所有持仓位置的百分比回落平仓。(此时是计算所有持仓的盈利数)
参数Share买入数量,为整型值,默认为使用系统设置参数;
Price买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

从一无所知开始学习交易开拓者(TB)期货程序化交易编程经常会看到很多朋友问:帮我写个公式怎么样啊?帮我把某个公式改成TB的怎么样啊?我想出现这种情况的原因有两种:一是真的不会,毕竟做期货的会编程的不多;二是自己如果多花点时间的话是弄的出来,但是有点懒;我想无论是哪种原因,都应该好好的学习下TB,因为真正的你的交易思路只有你自己才清楚而且也只有你自己去把你的交易思路用TB表现出来你才能更清楚的知道你的交易思维中有何缺点但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了所以本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料,如果您是高手,请忽略此文,以免耽误您的时间.我先不说那些专业术语,什么变量,函数和语法的,我们先不管他,以免看的头晕.我想先说说在TB中代码的执行顺序,也就是说在TB的K线图(TB把K线叫做Bar)里面你写的公式或者指标是如何得到执行的;我想这个东西是最重要而且也是最好理解的.在其他的期货软件比如文华飞狐一类,我们是无法知道你写的公式是如何执行的,甚至我们不知道我们写出来的公式是不是真的就体现出了我们的思想,因为你写的公式或者指标是被这些软件在幕后进行处理的,是黑箱操作!而TB不同,我们能够清楚的看到你写的代码在任意一根K线上是如何得到执行的好了,先说说在TB里面代码是如何得到执行的.1,代码从第一根K线开始执行,一直到最后一根K线;2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;明白了吧,是不是很简单,我们先看一个小例子,如果您还不明白,那只能说我完全没有任何能力写这文章,您就板砖吧我们就写个输出每日的收盘价的例子;打开TB,在左边的TB公式里面,点击新建技术指标,新建其他的也没有关系,然后在出来的对话框的简称里面填入名字,记住,这个名字只能是E文哦在名字里面填入你喜欢的名字,点确定就OK了啊然后在出来的公式编辑器里面输入BeginEnd注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间意思很简单就是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把它搞成字符串,不然Windows 会告诉你你犯了错误的Close的意思我不说大家也明白了吧,就是代表了当前正在执行你的代码的那根K线的收盘价啊,呵呵,如果代码执行到最后的那根K线且行情正在走动的时候Close代表的就是现在的最新价了咯.好了我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,就OK了我们在回到K线图里面,TB把K线图叫做超级图表,呵呵,有点不习惯在K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超级图表里面仅仅显示5条K线,当然,你可以搞成任意你喜欢的数字你甚至可以从任意一个你喜欢的时间开始显示K线,我们选择5跟K线仅仅是为了测试的方便点确定后,你就看到在K线图里面只显示了5跟K线,所以我们的代码也仅仅只在这5跟K线上执行了当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的我们再在超级图表里面右键,选择插入技术分析,在出来的列表里面选择我们刚刚所写的技术指标,然后确定就OKl饿晕死,现在怎么在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线,再执行第一行代码,再执行第二行代码.........好了,现在代码在第二根,第三根,第四根K线上执行完毕,于是转到第五根也就是最后一根K线上执行第一行代码再执行第二行代码到此为止,所有的代码在所有的K线上执行完毕了,圆满的完成了党和祖国赋予他的神圣使命,于是也就有了我们上面所看到的结果:2007年9月24日的收盘价等于672802007年9月25日的收盘价等于678002007年9月26日的收盘价等于671602007年9月27日的收盘价等于673002007年9月28日的收盘价等于68020OK,下回继续我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。

这其中有三个原因:1、别人写的交易策略,你难以调整它。

据统计,90%以上的交易策略会在2年半之内由于种种原因失效或者效率降低。

通常的做法是一个季度左右,交易员就需要微调其策略,调整参数或改动某些条件。

如果策略不是自己编写的,调整起来就会有困难。

2、别人写的交易策略,你很难彻底执行它。

系统交易最重要的好处在于它的执行能力。

它可以使你的交易摆脱人性的弱点,摆脱心理因素的干扰。

然而这一切的基础,在于自信。

人只会信任自己了解的东西,这是人性。

如果一个交易策略是别人写的,无论它的测试报告是多么天花乱坠,你都不会信任它,因为你不了解它。

一旦市场出现了危机情况,你就会坐立不安,你就会总怀疑是不是策略有问题,然后就又把策略扔到一边,回到凭感觉去操作的老路上去了。

3、最重要的一点在于:编程就是理解,编写交易策略调试交易策略的过程其实就是理解市场的过程。

这是一种非常宝贵的积累。

大多数人都是通过在市场中亏钱,靠爆仓来理解市场的。

成本高昂,而且难以总结。

使用这种方法来了解市场,往往就算你亏了很多钱,交了大把学费,你仍然不知道自己到底输在哪里。

你总结不出来,你就不可能有长进,就不可能赢。

而通过写交易策略来了解市场你不需要交什么学费,从历史测试报告里很容易分析出来自己到底错在哪里,如此你就很容易改进。

把编好的交易策略与模拟帐户交易结合起来就可以为你带来足够逼真的实战经验。

skywalker 说的非常棒!编程其实是一种思想,编程的目的是把你的思想用各种图形表现出来而已我们期货编程的目的是表现我们的交易思想是为思想而编程,不是为编程而编程!说起这点我想起了TB的伟大!不管你用文华还是飞狐,当你把指标公式写完后可能你自己的不是很清楚你的代码所表现出来的东西到底是不是就是你的交易思想呢?因为他们的代码是工作在后台的我们在前面无法得知这些代码如何工作而TB完全不同你可以在任意时候知道你的代码在做什么!所以你也就非常的清楚你的代码是不是真的表现了你的意思!好了现在开始写数据类型,变量和赋值.这是些非常基本的概念,相信您一下就懂的线说数据类型吧数据类型和人的类型差不多人不是分黄种人,白种人,黑种人么?TB里面的数据也一样分字符串类型,数值型,还有布尔型字符串类型很简单,用分号""括起来的东西就叫做字符串类型的数据,如"I love you",如"3345",.....数值型数据类型也同样的简单,数值大家知道吧,如1542啊,1.021啊....这些东西就是数值型的数据类型当然,如果把一个数值型的东西用分号""括起来了那他就不再是数值型数据了,而是字符串类型的数据如1688是数值型数据,但是"1688"就是字符串类型的数据了啊还有就是布尔型,当然,没有接触过编程的朋友可能不明白布尔型的意思说白点,布尔型就是真假型,意思就是布尔类型的数据只能取真(True)或假(False)值.比如2>1,这个东西就是布尔类型的数据,因为2是大于1啊,所以这个表达式返回True(真)那么2<1,大家说这个表达式是不是个布尔类型的数据呢?呵呵,也是的,因为2大于1啊,所以2<1是错误的,就返回False(假)咯大家明白了吧,就这三个类型,其中最只要的就是数值型数据类型哦用的最多的也是数值型数据类型如果明白了,那么请您就记住在TB里面数值型的E文是Numeric吧晕死,看下TB的帮助,数据类型里面还有个序列型,如果数值序列型,字符串序列型,布尔序列型序列这个东西看起来很难理解想个办法来理解他吧比如我们的K线图上有10跟K线,Close大家知道吧,就是收盘价但是这个Close包含了第一根K线的收盘价,也包含了第二根K线的收盘价.......一直包含到第五根K线的收盘价也就是说序列型的数据在没根K线上都有一个值的OK了吧?如果不OK也没有关系,慢慢的就懂了再说说变量顾名思义,变量就是一个可以改变的东西现在这个变量的值是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);//定义一个变量,类型是数值类型,变量名字是a,变量的初始值是100Beginif(CurrentBar == 0)//如果是第一根K线,就把变量a的值变为1{a = 1;}FileAppend("C:\\a.Log",Text(a));End我们再来看看输出结果:1100100100100我们再来理解下这个结果(当然这个时候我们的K线图上面只有5跟K线啊,其实随便多少跟K线都一样)首先代码在第一根K线上面执行,先执行if(CurrentBar == 0)这个东西,CurrentBar代表正在被执行的K线的索引因为代码现在在第一根K线上执行,所以索引就是0拉,于是这个表达式就成立了啊,既然if(CurrentBar == 0)这个表达式成立,那么他就会执行{}里面的东西a = 1;把1赋给变量a,也就是说吧变量a的内容改成1,然后执行FileAppend("C:\\a.Log",Text(a));这个时候变量a的值是1,所以当然输出1了啊代码执行完毕然后转到第二根K线,既然是第二根K线,那么这根K线的索引就是1了啊,1肯定不等于0啊那么表达式if(CurrentBar == 0)就不成立了啊,既然不成立那么他也就不会执行{}里面的东西a = 1;于是就直接执行FileAppend("C:\\a.Log",Text(a));那么这个时候a的值是多少呢?很明显是100,就是他的初始值,而不是上一根K线执行代码的时候改变了的a的值!这点千万注意啊我相信好多朋友会在这里犯下错误的咯再说给变量赋值其实我们上面已经说了,记住=和==的区别吧=就是把=右边的东西赋给=左边的东西如a = 100;就是把=右边的100赋给左边的变量a如b = 9;就是把9赋给变量b我们在日常中一直把=当成等于,千万急着在TB里面=就是赋值真正的等于的符号是==if(a==b)//就是如果a等于b{//做某件事情}好了快11点了睡觉了下次见看了,学了,收获不少,不断消化ING。

相关文档
最新文档