交易开拓者(TB)编程初级篇
TB公式编程官方基础教程
TradeBlazer公式的结构与编程
目录
页码一、TB的程序化交易的功能与特点 4
1-1、TB程序化交易的功能 4 1-2、TB公式说明 4 1-3、TB编程步骤 5 二、数据的说明与使用 6
2-1、Bar数据 6 2-2、计算方法6 2-3、叠加数据8 2-4、行情数据9 2-5、属性数据9 三、TB公式编程基础知识9
3-1、TB的公式的结构9 3-2、公式名称规则11 3-3、语句写法11 四、参数的说明与应用21
4-1、参数说明22 4-2、参数的使用与说明22 4-3、参数的默认值23 4-4、参数使用例子24 4-5、变量参数24
五、变量的类型与使用25
5-1、变量参数25 5-2、变量声明26 5-3、变量的默认值27 5-4、变量赋值27 5-5、序列变量28 5-6、变量、数据与函数的回溯28 六、系统函数的使用31
6-1、标点符号31 6-2、控制语句32 6-3、循环语句37 七、用户函数的使用与说明40
7-1、TB用户函数40 7-2、序列函数42 7-3、使用内建用户函数42 7-4、用户函数的调用44 7-5、用默认参数调用用户函数44 八、技术指标编写45
8-1、技术指标与应用45 8-2、常用的技术指标应用举例48 8-3、自编指标的输出56 8-4、指标编写常见问题58 九、用户函数编写58
9-1、TB用户函数的编写58 9-2、交易指令(Buy/Sell)61 9-3、叠加多个商品合约进行交易62
9-4、交易常用系统函数介绍62 十、交易策略的程序实现与实例65
TB使用说明书及程序开发、交易策略
Alert("Indicator exiting oversold zone"); } If(CrossUnder(RSIValue, OverBought)) {
Alert("Indicator exiting overbought zone"); } End
3. 按照用户函数的实现机制不同,用户函数可分为普通函数和序列函数。普通函数和其他语言的函数类似,输入参数,执行一段程序代码,返回需要的值。 序列函数是输入参数或变量中有序列数据类型的用户函数。
序列函数
序列函数是一种特殊的用户函数,当它的参数或变量中使用了序列数据,我们就称之为序列函数,序列数据作为普通计算机语言和TB语言的重要区别,是进 行金融序列数据计算的核心。为了保证序列数据的正确计算,序列函数需要每个Bar都被调用,如果有些Bar没有调用序列函数,序列函数中的序列数据则是上一个 Bar的值。除非是您的算法需要,否则建议不要在条件语句,条件语句的判断表达式,循环语句中使用序列函数。
用户函数的参数
大部分用户函数都需要接受输入的信息进行计算,这些输入的信息,我们称之为参数。关于用户函数参数的使用详细说明参见参数。
如何编写用户函数
一个用户函数由三部分组成,参数定义,变量定义,脚本正文。 语法如下:
TB公式入门
TB公式入门
交易开拓者公式基础
Bar数据:公式在进行计算时,都是建立在基本数据源(Bar数据)之上,我们这里所谓的Bar 数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间。期货等品种还有持仓量等数据。所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar 数据。
公式如何执行:TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。公式执行从上至下,Bar从左到右执行。
公式执行顺序
公式执行顺序
TradeBlazer公式的HelloWorld!
/forum/thread-63-1-1.html
Begin
FileAppend("c:\\Formula.log","hello world");
End
公式的种类
指标
K线形态
特征走势
交易指令
函数
公式环境的组织层次(1)
公式环境的组织层次(2)
建立一个最简单的指标:画零线
Begin
PlotNumeric(“Line1”,0);
End
Begin和End宣告公式正文的开始和结束,公式语句应该放到Begin和End之间。 PlotNumeric表示输出一个数值型组成的数组。
技术指标属性的设置
再画一条线…
Begin
PlotNumeric(“Line1”,5);
End
参数
一根线
Params
Numeric Length(0);
Begin
TB编程基础
7、关于负数的表达
TB中表达注意事项: //-100在TB中只能写成-100,如果写成-(100)会提示错误!!! 我们用TB软件写一个指标具体示例一下
8、关于序列与非序列
序列变量和非序列变量的不同在于: 非序列变量在条件满足时,显示的结果是满足条件时的值,在不满足条 件时,显示的结果为初始值; 序列变量在条件满足时,显示的结果为满足条件的值,在不满足条件时 显示的结果为上一根K时的值,就是说,序列变量的值具有传导效应;
指标属性设置
左边设置框中, “线列表”下 栏有4个选项, 每个选项对应 的都是在指标 公式中函数 Plotnumeric对 应的输出项。 每个输出项都 可以单独定义 输出的线型和 风格等。
TB常见问题归纳(有待继续增加。。。)
1、关于加密
无源方式加密,用户可以放心代码不会被破解的。 对使用的账户限制,和公式的使用截止日期,可以在公式中 使用A_AccountID、CurrentTime等来判断使用的客户号和使 用时间。 如:在BEGIN循环中,If (Date>=20140925) return;
3
序列与非序列数据对比分析
Vars Numeric m(0); NumericSeries n(0);
Begin If(c>o) m=1; If(c>o) n=1; Commentary("m="+text(m)); Commentary("n="+text(n)); End
TB编程整理
TB编程整理
索引:
1) 图表的第一根k线,或者是新的一天
2) 求当天第一根Bar到现在的BAR数
3) TB的时间表示
4) 收盘平仓的例子
5) 限制连续建仓
6) 主动的加仓示例
7) CurrentContracts函数获得当前持仓的持仓合约数。
8) 止损止盈的编写
9) buy,sell函数注意事项
内容:
1) 图表的第一根k线,或者是新的一天
If(CurrentBar == 0 || Date != Date[1])
2) 求当天第一根Bar到现在的BAR数
// 使用普通变量
Vars
Numeric TodayBars;
Begin
TodayBars = 0;
While ( CurrentBar > TodayBars and
date[TodayBars] == date[TodayBars+1] )
{
TodayBars = T odayBars + 1;
}
Commentary("T odayBars = " + text(T odayBars)); End
// 使用序列变量
Vars
NumericSeries ReBars;
Begin
If(CurrentBar == 0 || Date != Date[1])
{
ReBars = 0;
}Else
{
ReBars = ReBars + 1;
}
Return ReBars;
End
3) TB的时间表示
Time()函数表示当前公式应用商品在当前Bar的时间, 如果当前时间为11:34:21.356,Time返回值为0.113421356
函数中传递时间的时候可以传个整形,然后乘以一个小数, 如:
交易开拓者代码学习各种买卖指令及实例
交易开拓者代码学习各种买卖指令及实例(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张合约,马上发送委托。
交易开拓者(TB)编程初级篇
交易开拓者(TB)期货程序化交易编程
本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。
TB里面代码执行
1,代码从第一根K线开始执行,一直到最后一根K线;
2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;
我们就写个输出每日的收盘价的例子;
打开TB,在左边的TB公式里面,点击新建技术指标,
然后在出来的公式编辑器里面输入
Begin
End
注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间
我们再在Begin和End之间输入一些代码,完整的就是:
Begin
FileAppend("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就代表了
TB编程基础知识
<>
不等于
算术运算符
操作符 + 说明 加 减 乘 除 求模 括号
If(10%5==0) 我是语句1; If(21%5==1) 我是语句2;
* / % ()
关于条件表达式
• 逻辑操作符 :AND(&&),OR(||),NOT(!)
1. 表达式1 AND 表达式2 (表达式1 && 表达式2 ) 2. 表达式1 OR 表达式2 (表达式1 || 表达式2 ) 3. NOT表达式1 (! 表达式1 )
信号消失
• 基于前面的描述,如果用Close变化的数据来 计算开平仓条件,就可能出现信号消失。 • 为了解决信号消失,可以使用前面所讲的 Delay,或者使用另外一种方式,特别是我们 经常用的突破系统。
• 使用High,Low,Open这样能够保持住的价格 来进行条件判断。是价格往上的突破形成 的交易操作用High来判断。是价格下上的 突破形成的交易操作用Low来判断。其他不 确定方向的情况最好用Open来判断。
tb技术指标技术指标图表模块中输出为线条柱状图点等表现形式plotnumericplotboolplotstringkk线形态线形态主要着重于反映一段k线的特定型态并通过不同的技术指标的方式输出到图表plotbar特征走势特征走势主要着重于反映整个价格曲线的趋势变化特征并通过特定的表达方式输出到图表通过plotbar返回数据交易指令交易指令交易指令是包含买卖平仓头寸仓位控制的并执行交易指令的一类公式buysellsellshortbuytocoverasendorder公式环境的组织层次1bar数据指标k线形态特征走势交易指令公式环境的组织层次2bar数据指标k线形态特征走势交易指令用户函数尝试
TB基础及演示
张德华
2012年1月
交易开拓者软件简介
• 国内三大程序化交易平台之一,贴近交易,国内专业程序 化投资者首选。
• 集中了实时行情,高级编程,快捷交易,套利,多账户管 理及程序自动化交易等功能。
基本运用 (演示)
•wenku.baidu.com学好一个软件的基础使用,不会超过半小时。
• 获取个人帐号,登陆软件。 • 行情区、策略区、交易区 • 外部策略加载、信号查看与执行、个人工作区保存
组合投资系统运行效果图
•
TB编程从入门到进阶
❖ 根据布尔型值返回转字符型或数值型: Numeric IIF(Bool Conditon,Numeric TrueValue,Numeric FalseValue)
例如:IIF(Close>Open,Close,Open);
String IIFString(Bool Conditon,String TrueValue,String falseValue)
❖ 将字符串转化为日期:Integer StringToDate(String str) ❖ 将字符串转化为时间: Integer StringToTime(String str)
例3:使用参数和变量
Sample3:
Params String Filename("c:\\tb\\sample3.txt");
V4:每次公式运行时,除了第一根BAR会被赋默认 值,其他BAR会自动传递上一根BAR的值,公式运 行完后仍然存在,但下次如果还是同一根BAR运行 公式的话,变量值又会传递上一根BAR的 值;
只有一根BAR的最后一个Tick公式运行完后,序列变
量的值才能保留下来。
24
例4:变量的存续周期差别
Sample4: Vars
Begin FileAppend("c:\\tb\\sample1.txt","Hello World!");
交易开拓者代码学习各种买卖指令及实例
SetExitOnClose该平仓函数用来在当日收盘后产生一个平仓动作,将当前所有的持仓按当日收盘价全部平掉。
SetBreakEven该平仓函数在获利条件满足的情况下启动,当盈利回落达到保本时产生平仓动作,平掉指定的仓位。
SetStopLoss该平仓函数在亏损达到设定条件时产生平仓动作,平掉指定的仓位。
备注产生一个空头平仓操作,无返回值,该函数仅支持交易指令。
该函数仅用于空头平仓,其处理规则如下:
如果当前持仓状态为持平,即MarketPosition = 0时,该函数不执行任何操作。
如果当前持仓状态为多仓,即MarketPosition = 1时,该函数不执行任何操作。
如果当前持仓状态为空仓,即MarketPosition = -1时,如果此时Share使用默认值,该函数将平掉所有空仓,达到持平的状态,否则只平掉参数Share的空仓。
SellShort(10,Close)表示用当前Bar收盘价空头卖出10张合约,马上发送委托。
SellShort(5,0)表示用现价空头卖出5张合约,马上发送委托。
对应的BPK,SPK,你清楚了吗
函数名描述
Buy平掉所有空头持仓,开多头仓位。(*BPK*)
Sell平掉指定的多头持仓。
SellShort平掉所有多头持仓,开空头仓位。(*SPK*)
SetPercentTrailing(1000,0.1,False);当前持仓的某一个建仓位置的盈利大于1000之后回落,当回落百分比达到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张合约,马上发送委托。
tb编程基础详解1
和周期长度一致的String型序列值。
•
数值型的表达式可以是一个数字,当然,他们也可以是一个数值型的保留字 ,例如:保留字"Close"。或者是通过运算符号组合的一个计算表达式,该表 达式的结果是数值型。下文中的例子都是数值型的表达式。 154; Vol; (High+Low)/2; • 布尔型的表达式能够返回一个值True/False,或者说它可以对表达式的值进 行评估,然后返回其值,要么为True,要么为False。逻辑表达式永远要涉及 到比较运算,下面我们有一些逻辑表达式,它也就是对一个表达式的值是 True还是False进行判断。 Close > Open; 5 < 2; • 字符串的表达式可以是单个字符串,也可以字符串的组合,或者返回值为字 符串的系统函数,如下,就是一个字符串的表达式: "This is a test string expression" ; "Hello"+"World" ;
www.htgwf.com
叠加数据
• • 交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有 需要使用叠加的商品对应的基础数据 假定,我们新建一个超级图表模块,其主数据对应的商品为:cu1107,在此基础上, 我们叠加了cu1108和cu1109。此时,根据叠加操作的先后顺序,cu1107为Data0, cu1108为Data1,cu1109为Data2,在TradeBlazer公式中,我们可以通过 Data1.Close(),Data2.Vol()类似方法调用叠加Bar数据,叠加Bar数据的函数和Bar数据 一样,只是需要在调用的时候加上数据源。 我们也可以使用Data0.Open()来调用Bar数据,默认情况下,可以省略对主数据源的指 定,为了方便,一般直接使用Open()来代替Data0.Open()。
交易开拓者(TB)使用说明
欢迎使用交易开拓者
欢迎使用交易开拓者
交易开拓者(TradeBlazer)是一款为中国期货市场专业投资用户开发的金融投资软件,它集中了实时行情,技术分析,快捷交易及程式化交易的功能。通过使用交易开拓者,用户可以简单,快速的将自己的交易思想转化为计算机代码,让计算机帮助用户实现价值。
我们致力于为期货行业的投资者提供一个实现盈利的工具,但并不保证该软件能为所有的使用者带来盈利,希望使用者能够通过使用系统,建立并优化自己的交易思想,形成自己的交易策略。
感谢您选择交易开拓者,希望您能够通过使用该系统找到乐趣,并能创造更多价值。
交易开拓者快速链接
▪关于交易开拓者
▪快速入门
▪系统基础
▪行情报价
▪分时图
▪超级图表
▪交易系统
▪公式系统
关于交易开拓者- 系统简介
系统简介
交易开拓者是一款针对中国期货行业的专业金融投资软件,它借鉴了华尔街一些著名软件的优点,吸收了国际众多的网上交易系统的精华,并拥有简单和友好的用户界面,用户可以方便快捷的开发及优化自己的技术分析和交易策略。
功能特色
▪强大的公式支持系统,方便用户实现交易思想
▪领先的策略交易体系,实时数据驱动和自动交易功能
▪面向用户的快速下单体系
▪强大的多帐户管理功能,让您使用多帐户像单帐户一样轻松
▪多种方式的套利功能,直观轻松的实现套利交易
▪动态帐户和风险监控机制
▪完善的图表体系设计、分析工具与交易功能的动态交互
▪工作区管理机制和个性化模板应用
关于交易开拓者- 系统配置
系统配置
最低系统配置
▪CPU: PIII 800以上
▪硬盘: 1G及以上可用空间
▪内存: 256M及以上
交易开拓者TB软件使用说明暨程序化交易风险揭示说明书
交易开拓者(TB)软件使用说明暨
程序化交易风险揭示说明书
尊敬的客户:
您好!
感谢您使用交易开拓者(TB)软件(以下简称“该软件”)。在使用之前,请务必仔细阅读和理解《交易开拓者(TB)软件使用说明暨程序化交易风险揭示说明书》(以下简称《风险揭示说明书》)。除非您接受并认可本《风险揭示说明书》,否则您不能使用我在我公司使用该软件进行程序化交易。
您一旦在我公司申请开通交易功能,即表示您同意并认可本《风险揭示说明书》及该软件随附的计算机软件和相关文档印刷材料。
一、该软件的功能
该软件包含基础行情、分析和交易下单功能;基于本软件的程序化交易系统或策略的编写、测试和自动下单功能;内嵌于软件的、由第三方提供的,客户可根据自身需要选择使用的多种程序化交易系统及策略;基于客户自行提供的交易理念及交易策略进行定制,由公司或公司委托的第三方负责编写和实现的程序化交易系统、策略及方案;为客户提供程序化交易平台,供客户根据自己的交易理念和交易策略自行进行交易程序的编写及运行。
二、该软件的使用
1、您需要使用该软件在我公司进行交易,首先需要自行向深圳开拓者科技有限公司申请软件账号,并在我公司开立期货账户,向公司提出申请开通本该软件交易功能,并签署《风险揭示说明书》。
2、我公司在接到您的使用申请和签署的《风险揭示说明书》后,将联系深圳开拓者科技有限公司为您开通交易功能。
3、一个期货账户仅能为一个软件账号开通交易功能,即您仅能在一台计算机终端上安装、使用、显示、运行本软件的一份副本。
4、本软件自客户签署《风险揭示说明书》之日起一年内有效。一年有效期
TB入门问题学习(一)
目录
问题一为什么程序化交易应用到期货市场 (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吨)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交易开拓者(TB)期货程序化交易编程
本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。
TB里面代码执行
1,代码从第一根K线开始执行,一直到最后一根K线;
2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;
我们就写个输出每日的收盘价的例子;
打开TB,在左边的TB公式里面,点击新建技术指标,
然后在出来的公式编辑器里面输入
Begin
End
注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间
我们再在Begin和End之间输入一些代码,完整的就是:
Begin
FileAppend("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日的收盘价等于
67280
2007年9月25日的收盘价等于
67800
2007年9月26日的收盘价等于
67160
2007年9月27日的收盘价等于
67300
2007年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(假)
大家明白了吧,就这三个类型,其中最只要的就是数值型数据类型