文档视界 最新最全的文档下载
当前位置:文档视界 › 交易开拓者(TB)编程初级篇

交易开拓者(TB)编程初级篇

交易开拓者(TB)编程初级篇
交易开拓者(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就代表了

正在执行你写的代码的那一根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日的收盘价等于

67280

2007年9月25日的收盘价等于

67800

2007年9月26日的收盘价等于

67160

2007年9月27日的收盘价等于

67300

2007年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线,再执行第一行代码,再执行第二行代码.........

我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。这其中有三个原因:

1、别人写的交易策略,你难以调整它。

据统计,90%以上的交易策略会在2年半之内由于种种原因失效或者效率降低。通常的做法是一个季度左右,交易员就需要微调其策略,调整参数或改动某些条件。如果策略不是自己编写的,调整起来就会有困难。

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

系统交易最重要的好处在于它的执行能力。它可以使你的交易摆脱人性的弱点,摆脱心理因素的干扰。然而这一切的基础,在于自信。人只会信任自己了解的东西,这是人性。如果一个交易策略是别人写的,无论它的测试报告是多么天花乱坠,你都不会信任它,因为你不了解它。一旦市场出现了危机情况,你就会坐立不安,你就会总怀疑是不是策略有问题,然后就又把策略扔到一边,回到凭感觉去操作的老路上去了。

3、最重要的一点在于:编程就是理解,编写交易策略调试交易策略的过程其实就是理解市场的过程。这是一种非常宝贵的积累。大多数人都是通过在市场中亏钱,靠爆仓来理解市场的。成本高昂,而且难以总结。使用这种方法来了解市场,往往就算你亏了很多钱,交了大把学费,你仍然不知道自己到底输在哪里。你总结不出来,你就不可能有长进,就不可能赢。而通过写交易策略来了解市场你不需要交什么学费,从历史测试报告里很容易分析出来自己到底错在哪里,如此你就很容易改进。把编好的交易策略与模拟帐户交易结合起来就可以为你带来足够逼真的实战经验。

编程其实是一种思想,编程的目的是把你的思想用各种图形表现出来而已

我们期货编程的目的是表现我们的交易思想

是为思想而编程,不是为编程而编程!

现在开始写数据类型,变量和赋值.

数据类型

分字符串类型,数值型,还有布尔型

字符串类型很简单,用分号" "括起来的东西就叫做字符串类型的数据,如"I love you",如"3345",.....

数值型数据类型也同样的简单,数值大家知道吧,如1542啊,1.021啊....这些东西就是数值型的数据类型

当然,如果把一个数值型的东西用分号""括起来了那他就不再是数值型数据了,而是字符串类型的数据

如1688是数值型数据,但是"1688"就是字符串类型的数据了

还有就是布尔型,当然,没有接触过编程的朋友可能不明白布尔型的意思

说白点,布尔型就是真假型,意思就是布尔类型的数据只能取真(True)或假(False)值.

比如2>1,这个东西就是布尔类型的数据,因为2是大于1啊,所以这个表达式返回True(真)

也是,因为2大于1啊,所以2<1是错误的,就返回False(假)

大家明白了吧,就这三个类型,其中最只要的就是数值型数据类型

用的最多的也是数值型数据类型

如果明白了,那么请您就记住在TB里面数值型Numeric

看下TB的帮助,数据类型里面还有个序列型,如果数值序列型,字符串序列型,布尔序列型

序列这个东西看起来很难理解

比如我们的K线图上有10跟K线,Close就是收盘价

但是这个Close包含了第一根K线的收盘价,也包含了第二根K线的收盘价.......一直包含到第五根K线的收盘价

也就是说序列型的数据在每根K线上都有一个值的

说说变量

变量就是一个可以改变的东西

现在这个变量的值是100,但是等下我可以把它改成20, 只要您喜欢,你可以随心所欲的改变这个值

能够修改他的值的东西就叫做变量了

记住:

在TB里面变量都是要先定义的!而且有着他独到的定义方法,而且这个定义必须放到Begin的前面

如我们定义一个数值型变量a.就应该这样

Vars

Numeric a;

Begin

......

End

当然你也可以定义两个或者多个变量,如

Vars

Numeric a;

Numeric b;

//.........更多变量定义

Begin

......

End

大家也许想到了

我定义这个变量a,我要让他等于2,这个东西很简单

你可以在变量定义的时候就给他赋初值让他一开始被定义就等于2,也可以在Begin下面写.如

Vars

Numeric a(2);

Numeric b;

//.........更多变量定义

Begin

......

End

明白了么|?那么变量b呢?我们没有用括号()扩个东西啊,那么这个时候b这个变量等于什么呢?

很简单,如果你在定义变量的时候没有给他初值,那么b这个时候等于0

再看在Begin里面怎么修改这个变量的值

Vars

Numeric a(2);

//.........更多变量定义

Begin

a = 3;

b = 100;

End

很简单的

现在大家应该知道了变量是什么东西了吧

对了,忘记告诉大家了,在Begin下面给变量复制仅仅只对当前正在执行你的代码的K线有效,到下一根K线他就是初始值了啊

写个例子吧

Vars

Numeric a(100);//定义一个变量,类型是数值类型,变量名字是a,变量的初始值是100

Begin

if(CurrentBar == 0)//如果是第一根K线,就把变量a的值变为1

{

a = 1;

}

FileAppend("C:\\a.Log",Text(a));

End

我们再来看看输出结果:

1

100

100

100

100

我们再来理解下这个结果(当然这个时候我们的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

就是把9赋给变量b

等于的符号是==

if(a==b)//就是如果a等于b

{

//做某件事情

}

再看在Begin里面怎么修改这个变量的值

Vars

Numeric a(2);

Numeric b;

//.........更多变量定义

Begin

a = 3;

b = 100;

End

现在我们说说TB中的流程控制

流程控制就是控制代码执行的流程

还说的明白点就是如果满足什么条件就做什么事情

或者不满足什么条件的时候做什么事情

简单说流程控制就是控制语句控制代码

控制语句中分为逻辑控制语句(就是条件控制语句)和循环控制语句条件控制语句中大家记住If这个关键字,翻译成中文就是如果

循环控制语句中大家记住For,就是开始循环了

先说If.

假设一个这样的条件:

如果(收盘价>开盘价)

则输出:今日收红阳线

我们先把这个东西翻译成TB

如果翻译成If

收盘价和开盘价大家都知道会翻译成Close和Open

输出语句就是FileAppend,则翻译成TB就是:

If(Close>Open)

{

FileAppend("c:\\a.log","今日收红阳线");

}

是不是很简单呢?

大家记住一点,凡是if(如果)语句中的代码,都给我用{}括起来

我们再把上面的条件加上一点:

如果(收盘价>开盘价)

则输出:今日收红阳线

否则如果(收盘价==开盘价)

则输出:今日收十字线

我们再翻译成TB,把否则翻译成Else,如果翻译成If

{

FileAppend("c:\\a.log","今日收红阳线");

}

Else If(Close==Open)

{

FileAppend("C:\\a.log","今日收十字线");

}

同样的简单,我们可以再把上面的条件再加:

如果(收盘价>开盘价)

则输出:今日收红阳线

否则如果(收盘价==开盘价)

则输出:今日收十字线

否则

则输出:今日收绿阴线

上面的否则大家知道翻译成Else吧,有两种翻译方法,因为收盘价和开盘价的比较只存在着三种情况: 收盘价大于开盘价,收盘价等于开盘价,收盘价少于开盘价,我们先这样翻译:

If(Close>Open)

{

FileAppend("c:\\a.log","今日收红阳线");

}

Else If(Close==Open)

{

FileAppend("C:\\a.log","今日收十字线");

}

Else If(Close

{

FileAppend("c:\\a.log","今日收绿阴线");

}

上面的这个语句是很好理解的

但是大家想到了吗?开盘价和收盘价的比较,如果不满足Close>Open,也不满足Close==Open

那么肯定的一点就是:Close

If(Close>Open)

{

FileAppend("c:\\a.log","今日收红阳线");

}

Else If(Close==Open)

{

FileAppend("C:\\a.log","今日收十字线");

}

Else

{

FileAppend("c:\\a.log","今日收绿阴线");

}

再说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是不是少于T o后面的4,当然少于拉,于是再执行{}里面的TradeBlazer公式语句; ....

以此执行,当i等于5的时候,再与To后面的4进行比较,当然5>4了,所以不满足条件了,于是不再执行{}里面的TradeBlazer公式语句;

而开始执行{}下面的语句拉

大家再研究下下面的HHV的写法,就会很明白了的:

//------------------------------------------------------------------------

// 简称: HHV

// 名称: 求N周期的最高值

// 类别: 用户函数

// 类型: 用户函数

// 输出: 数值型

//------------------------------------------------------------------------

Params

Numeric Length(5);

Vars

Numeric highestValue(0);

Numeric minDay;

Numeric i;

Begin

minDay = Min(CurrentBar,Length-1);

for i=0 to minDay

{ highestValue=Max(highestValue,c[i]);

}

Commentary("最高价"+text(highestValue));

End

现在说说参数与函数,说完了这个东西,就要进入实践阶段了,就要准备开始实打实的独立编写指标了

首先我们必须明白,参数仅仅存在于函数里面,如果函数里面存在着参数,那么当你调用这个函数的时候必须要先传递参数给这个函数

函数就是帮助我们完成某一件事情,并且完成这件事情以后会返回个东西给我们的一个方法.

比如一个这样的函数请注意,这仅仅是个假想的函数,仅为了帮助理解函数是什么: GetCloseFromTrader

我们就很明白,这个函数就是帮助我们到交易所跑一趟,然后把收盘价返回给我们;

有点明白了吧,但是仔细一想,这个东西似乎有点问题,比如返回收盘价,交易所

那么多的品种,且每个品种都有那么多的月份,他到底返回的是什么东西的收盘价啊?

那么我们这样写:

GetCloseFromTrader(Cu0801)

现在应该完全明白了,这个函数就是从交易所返回某个品种的收盘价,到底是什么品种什么月份的收盘价呢? Cu0801就是拉.

其实,这里面的Cu0801就是这个函数所需要的参数!

我们于是就可以这样理解:函数是帮助用户完成某一件事情且返回用户所需要的数据的方法;

那么参数呢?参数就是参到函数里面去的数,也就是说必须要传递给函数的数;

我们现在不要求一定能够自己写函数,但是必须要懂得的是要看懂这个函数是做什么用的,且知道如何去调用这个函数!

我们先看看下面的这个函数,这个函数的名字叫:HHV,是根据轮回老大的建议改写的,我们必须要读懂这个函数,且知道怎么样去

CODE:

//------------------------------------------------------------------------

// 简称: HHV

// 名称: 求N周期的最高值

// 类别: 用户函数

// 类型: 用户函数

// 输出: 数值型

//------------------------------------------------------------------------

Params

NumericSeries Price(0);

Numeric Length(5);

Vars

Numeric highestValue(0);

Numeric minDay;

Numeric i;

Begin

minDay = Min(CurrentBar,Length-1);

for i=0 to minDay

{

highestValue=Max(highestValue,Price[i]);

}

Return highestValue;

End

我们一行一行的读,一行一行的理解;

首先我们都知道,//后面的代表是注释,什么是注释

通过注释我们可以粗略的明白这个函数是干什么的?代表了什么意思:

这个函数的名字HHV,他的作用是求N周期的最高值,并且会把这个最高值返回给调用这个函数的用户

通过此,我们就能够想到,这个N是个参数,比如5个周期或者10个周期或者其他周期的最高值,

再仔细一想,是什么价格的最高值啊?是收盘价的最高值还是开盘价的最高值?或者是最高价的最高值呢?

于是我们也就想到了这个函数的另外个参数:价格,比如5个周期的收盘价的最高值,或者10个周期的最高价的最高值

紧接着,这个函数开始定义参数了,

Params后面定义的就是参数,一个代表要得到什么价格的最高值,一个代表要得到什么周期的最高值;

参数定义完了,这个函数就开始定义变量,对于函数,我们首先定义一个变量highestValue,我们这个函数必须要把这个变量返回给用户的

这个变量highestValue就代表了你想得到的最高值!其他的两个变量我们先不要理睬,紧接着就是Begin了,前面我们说过,Begin后面,我们的代码就要开始工作

我们先想一想,假设我们求5天的收盘价的最高值,在第一根K线上,我们希望得到的收盘价的最高值就是这天的收盘价;

到第二根K线的时候我们希望得到的收盘价的最高值是这两天的收盘价中价格最高的那个,第三根就是得到这三根K线里面收盘价最大的那个收盘价,

第四天同样如此,第五天同样如此,第六天开始就取前面5天的收盘价的最高价,第七天......第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变量:

Vars

Numeric highestValue(0);

Numeric minDay;

Numeric i;

再看这个For循环,

当i是0的时候,看这个时候0是不是小于等于最小周期minDay,如果条件成立,就执行:

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的动态移动平均。

算法: 若Y=DMA(X,N) 则Y=N*X+(1-N)*Y',其中Y'表示上一周期Y值,n必须小于1。

示例:DMA(CLOSE,(HIGH-LOW)/CLOSE)

表示求以该周期震幅为平滑因子的平均价

很简单,我们可以看出,如果要写这个用户函数,则我们必须要先定义两个参数,

一个是上面的X,代表价格,我们用Price来表示,一个是N,代表动态因子,我们用Length来表示

好的,开始吧!

我们先新建一个用户函数,简称写DMA,名称写:求动态移动平均,分类选用户函数,然后确定;

出来如下东西:

Params

Numeric Num(10);

Vars

Bool Con1;

Begin

Con1 = Close > Num;

Return Con1;

End

我们把那些没用的东西删除,仅留下下面的内容

Vars

Begin

End

在定义参数的时候我们首先考虑下参数的数据类型

我们先看价格参数,很明显我们应该把它定义为数值序列型,因为Close,Open...啊,都是数值序列型的

对于动态因子,同样简单,应该是数值型,于是,我们在Params关键字后面写定义参数的代码,如下:

Params

NumericSeries Price(100);

Numeric Length(0.5);

Vars

Begin

End

我们首先应该明白,我们写函数的目的是要他帮我们做点事情并且返回个什么东西给我们,所以我们

再定义一个变量ReturnValue,代表这个函数要返回的数据,到时候当这个函数执行完的时候我们就把这个东西返回给调用者

于是我们再在Vars后面定义一个变量ReturnVlaue,数据类型是数值序列型,因为每根K线上都有的,所以定义成序列型,代码如下:

Params

NumericSeries Price(100);

Numeric Length(0.5);

Vars

NumericSeries ReturnValue(0);

Begin

End

现在我们开始写这个函数的工作代码

看看这个函数的意思,今日的动态移动平均=昨日的动态移动平均*(1-动态因子)+今日的价格*动态因子;然后再把这个值Return返回就Ok了;

于是我们在Begin后面写代码:

Params

NumericSeries Price(100);

Numeric Length(0.5);

Vars

NumericSeries ReturnValue(0);

Begin

ReturnValue = ReturnValue[1]*(1-Length)+Price*Length;

Return ReturnValue;

End

好了,这个函数就写好了

但是细心的朋友可能会发现,这个函数还有点小问题,就是如果是第一根K线,那么这根K线的昨日的动态移动平均没有啊?

对,非常对,会出错的啊,所以我们要先判断一下这根K线是不是第一根K线,用什么来判断是不是第一根K线呢?请看这个函数:

Integer BarStatus()

当前公式应用商品当前Bar的状态值,返回值0表示为第一个Bar,返回值为1表示为中间的普通Bar,返回值为2表示最后一个Bar。

呵呵,就用BarStatus这个函数,如果他返回0,就代表第一根K线啊

于是我们再改写完善上面的代码为:

//------------------------------------------------------------------------

// 简称: DMA

// 名称: 求动态移动平均

// 类别: 用户函数

// 类型: 用户函数

// 输出: 数值型

//------------------------------------------------------------------------

Params

NumericSeries Price(100);

Numeric Length(0.5);

Vars

NumericSeries ReturnValue(0);

Begin

If(BarStatus==0)

{

ReturnValue = Price;//如果是第一根K线就直接把Price赋值

}

Else

{

ReturnValue = ReturnValue[1]*(1-Length)+Price*Length;

}

Return ReturnValue;

End

我比较喜欢而且非常喜欢把交易模型做成变色的K线,红色代表买,绿色代表卖,非常的简单明了,但是一看就又很能明白是什么意思,K线本来就是一位大大的美女,如果把红色的K线练成一块,把绿色的K线练成一块,那是多少爽的一件事情啊!!!

于是我们就要先学会画K线,在文华中画K线是STICKLINE,在TB中很简单,就用PlotNumeric吧.

如果你要画红色K线,那么就先输出High,Low,Close,Open,很好理解吧,大家都知道阳线从上到下是最高,收盘,开盘,最低,我们这个也一样,只是先输出最高最低,再输出收盘开盘;如果是要画绿色K线,那么就按照以下顺序输出那四个价格:最高,最低,开盘,收盘,呵呵

下面是画红色K线的代码:

PlotNumeric("High",High);

PlotNumeric("Low",Low);

PlotNumeric("Close",Max(Close,Open));

PlotNumeric("Open",Min(Close,Open));

大家看到了上面有个Max和Min函数,大家可以想一想为什么咯,

下面是画绿色K线的代码:

PlotNumeric("High",High);

PlotNumeric("Open",Max(Close,Open));

PlotNumeric("Close",Min(Close,Open));

那么就让我先来解释下上面的为什么要用Max和Min函数吧,还是说明白一点好.

如果我们要把所有K线画成红色K线,那么是要先输出High,和Low,再输出收盘价和开盘价.但是如果当天Close

明白了吧

那么我们先来把前面的150根K线全部画成红色,后面的150根K线全部画成绿色(呵呵,我是假设超级图表中存在300根K线啊)

在右边的TB公式里面新建个技术指标,名称为MyKLine,简称随意,类型随意选,模板空,确定,写下如下代码: CODE:

//------------------------------------------------------------------------

// 简称: MyKLine

Begin

if(CurrentBar>150)

{

//如果是第151根K线画绿色

PlotNumeric("High",High);

PlotNumeric("Low",Low);

PlotNumeric("Open",Max(Close,Open));

PlotNumeric("Close",Min(Close,Open));

}

Else

{

//如果是151根K线以前的Kurtosis线画红色

PlotNumeric("High",High);

PlotNumeric("Low",Low);

PlotNumeric("Close",Max(Close,Open));

PlotNumeric("Open",Min(Close,Open));

}

End

然后在文件---属性设置----默认-----默认显示改成主图显示,点编译按钮完成编译,然后再在超级图表里面调用这个技术指标,

当K线是十字星的时候K线会是白色的拉.

怎么办?我们首先要明白为什么会出现这样的现象的原因是收盘价=开盘价的时候会出现这样的问题.那么如何去解决这个问题呢?

下面实现的代码:

CODE:

//------------------------------------------------------------------------

// 简称: MyKLine

// 类别: 技术指标

// 类型: 其它类

// 输出:

//------------------------------------------------------------------------

Vars

Numeric OpenIsClose;//当开盘等于收盘价的时候

Begin

if(CurrentBar>150)

{

//如果是第151根K线画绿色

PlotNumeric("High",High);

PlotNumeric("Low",Low);

if(Open==Close)

{

//如果收盘价等于开盘价

OpenIsClose = Close-PriceScale*MinMove;

PlotNumeric("Open",Open);

PlotNumeric("Close",OpenIsClose);

}

Else

{

PlotNumeric("Open",Max(Close,Open));

PlotNumeric("Close",Min(Close,Open));

}

}

Else

{

//如果是151根K线以前的Kurtosis线画红色

PlotNumeric("High",High);

PlotNumeric("Low",Low);

if(Open==Close)

{

OpenIsClose = Close+PriceScale*MinMove;

PlotNumeric("Close",OpenIsClose);

PlotNumeric("Open",Open);

}

Else

{

PlotNumeric("Close",Max(Close,Open));

PlotNumeric("Open",Min(Close,Open));

}

}

End

上面有两个函数PriceScale和MinMove,他们相乘的结果得到当前品种的最小变动价位,比如铜是10,胶是5......(这两个函数的具体意义以及他们的乘积为什么会得到这个结果请看TB的函数帮助)

也就是说当开盘==收盘的时候在收盘价的基础上上下浮动一个变动价位来画K线,大家看下效果,是不是很完美的解决了这个问题呢?

有了上面的画变色K线的基础,现在来做个简单的变色K线系统吧,是非常简单的;

假设两条均线是5日均线和10日均线,于是就有两个变量,MaFive和MaTen,5日上穿10日买,5日下穿10日卖; 写成代码如下:

[Copy to clipboard][ - ] CODE:

//------------------------------------------------------------------------

// 简称: MyKLine

// 名称: 哈哈

// 类别: 技术指标

// 类型: 其它类

// 输出:

//------------------------------------------------------------------------

Vars

Numeric OpenIsClose;//当开盘等于收盘价的时候

NumericSeries MaFive;//5日均线

NumericSeries MaTen;//10日均线

Begin

MaFive = SAverage(Close,5);//5天移动平均

MaTen = SAverage(Close,10);//10天移动平均

if(MaFive

{

PlotNumeric("High",High);

PlotNumeric("Low",Low);

if(Open==Close)

{

//如果收盘价等于开盘价

OpenIsC lose = Close-PriceScale*MinMove;

PlotNumeric("Open",Open);

PlotNumeric("Close",OpenIsClose);

}

Else

{

PlotNumeric("Open",Max(Close,Open));

PlotNumeric("Close",Min(Close,Open));

}

}

Else If(MaFive>MaTen)

{

PlotNumeric("High",High);

PlotNumeric("Low",Low);

if(Open==Close)

{

OpenIsClose = Close+PriceScale*MinMove;

PlotNumeric("Close",OpenIsClose);

PlotNumeric("Open",Open);

}

Else

{

PlotNumeric("Open",Min(Close,Open));

}

}

End

编译,然后插入这个技术指标,看看效果,

交易开拓者函数一览表文华对照)

交易开拓者函数一览表(文华对照) 交易开拓者文华 数学函数 绝对值Abs ABS(X)反余弦值Acos ACOS(X)反双曲余弦值Acosh 反正弦值Asin ASIN(X)反双曲正弦值Asinh 反正切值Atan ATAN(X)给定的X及Y坐标值的反正切值Atan2 反双曲正切值Atanh 沿绝对值增大方向按基数舍入Ceiling

从给定数目的对象集合中提取若干对 Combin 象的组合数 余弦值Cos COS(X)双曲余弦值Cosh 余切值Ctan 沿绝对值增大方向取整后最接近的偶 Even 数 e的N次幂Exp EXP(X)数的阶乘Fact 沿绝对值减少的方向去尾舍入Floor 实数舍入后的小数值FracPart 实数舍入后的整数值IntPart 自然对数Ln LN(X)

对数Log LOG(X) 余数Mod MOD(A,B)负绝对值Neq 指定数值舍入后的奇数Odd 返回PI Pi 给定数字的乘幂Power POW(A,B) 随机数Rand 按指定位数舍入Round 靠近零值,舍入数字RoundDown 远离零值,舍入数字RoundUp 数字的符号Sign SGN(X) 正弦值Sin

双曲正弦值Sinh SIN(X) 平方Sqr SQUARE(X)正平方根Sqrt SQRT(X) 正切值Tan TAN(X) 双曲正切值Tanh 取整Trunc INTPART(X)字符串函数 测试是否相同Exact 返回字符串中的字符数Len 大写转小写Lower 数字转化为字符串Text 取出文本两边的空格Trim

小写转大写Upper 文字转化为数字Value 颜色函数 黑色Black COLORBLACK 蓝色Blue COLORBLUE 青色Cyan COLORCYAN 茶色DarkBrown 深青色DarkCyan 深灰色DarkGray 深绿色DarkGreen 深褐色DarkMagenta 深红色DarkRed

网上期货交易操作手册

网上期货交易操作手册 一、软件下载操作指南 1.入公司网站主业,点击“行情(含交易)程序下载”(图一)。 图一 2. 下载并保存文件。 3. 安装文件 说明:a.下载富远分析系统完全客户端(富远的行情配套两个交易端:富远和恒生) b. 下载富远网上交易(只提供富远交易系统,不配套行情) c. 下载恒生网上交易(只提供恒生交易系统,不配套行情) d. 下载文华分析系统富远交易客户端(提供文华的行情,富远的交易系统) e. 下载文华分析系统恒生交易客户端(提供文华的行情,恒生的交易系统) 4.网上交易 为保证交易畅通,通过电信上网的客户需登录公司的电信站点,通过网通登录的客户需登录我们的网通站点。如何判断自己是电信上网还是网通上网,可通过查询 二、交易系统操作手册 一.用户登陆 双击的图标,运行程序,出现下面登录界面。 在客户号栏右面输入客户号,如果选择了“记住”选项后,则在下次选项后,则在下次登陆时不用再输入用户名。在密码处可以敲键盘输入也可以通过密码键盘输入(密码键盘是新加的功能,防止被木马程序盗用密码)如上图所示: 二.下单 登录后,进入交易界面(见下图)。在下单页面中,直接点击行情中的您想选择品种的“买、卖量”,就可以在委托栏中看到信息进行操作。也可以选择预埋委托,即立刻发出委托单,而是将委托单放到预埋单列表中,在需要时选择单个或全部发出预埋委托。买卖的快捷键为:1为买,2为卖;买卖输完后敲回车跳到开平栏。开平仓的选择,1为开仓,2为平今仓,3为平仓。在数量栏输入开平数量后点发出委托,指令进入交易所。

注意:由于远程通讯会花费一些时间,所以响应可能会有一些延迟(1-3秒是正常的),在下单没有得到委托成功的提示前,或在委托界面中查询不到刚才发出的委托单时,注意不要重复下单。如果上图中左下角方框中显示通讯断开,请您检查您的网络。如果想立刻下单也可以拨打报单电话。 1、委托 客户可以看到当日已发出的委托单的情况及持仓情况。 (1)委托 在该栏里您可以看见委托单的情况,点击右键您可以选择撤单改价,撤单,全部撤单。 (2)持仓 在该栏里您可以查询持仓单的情况。 2、查委托 客户可以通过输入合约品种和历史来进行查询委托单的情况。委托单量大的客户可以通过点击左下角“隐藏撤消”,“隐藏已成”进行筛选。客户可以点击委托单号可以得到更详细的交易资料。 3、查成交 客户可以通过输入合约品种和历史来进行查询成交单的情况。同时还可以点击分笔成交明细、按委托汇总、按成交价位汇总进行不同状态的。 4、资金/持仓 (1)可以查询客户实时的资金情况。其中,可用资金为客户未被占用的保证金。持仓保证金为客户以被占用的保证金,包括持仓保证金和已报入未成交指令所冻结的保证金。有些定义不全。 (2)同时查询资金和持仓情况。 可以根据某一笔持仓执行平仓指令。(可点击:今开可用,历史开可用,总可用执行)5、查流水 客户可以通过选择起始日,终止日的时间进行帐单查询。 6、预埋单 查询所有的预埋单,可选择委托单笔发送、全部发送、单笔作废、全部作废。若由于交

交易开拓者止损止盈

TB源码: Params Numeric Length1(10); // 短均线周期 Numeric Length2(20); // 长均线周期 Numeric InitialStop(20); // 初始止损比例*1000 Numeric BreakEvenStop(30); // 保本止损比例*1000 Numeric TrailingStop(50); // 追踪止损比例*1000 Numeric Lots(1); // 头寸大小 Vars NumericSeries MA1; NumericSeries MA2; BoolSeries condBuy(false); // 做多条件 BoolSeries condSell(false); // 做空条件 Numeric MinPoint; Numeric MyPrice; NumericSeries LowerAfterEntry; // 空头盈利峰值价 BoolSeries bShortStoped(false); // 当前均线空头趋势下是否有过一次进场Numeric StopLine(0); Begin // 把上一根bar的出场状况传递过来 if (BarStatus > 0) { bShortStoped = bShortStoped[1]; } Commentary("bShortStoped="+IIFString(bShortStoped,"true","false")); // 传递或比较盈利峰值价 If(BarsSinceEntry >= 1) { LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]); } Else { LowerAfterEntry = LowerAfterEntry[1]; } Commentary("LowerAfterEntry="+Text(LowerAfterEntry)); // 过滤集合竞价 If((BarType==1 or BarType==2) && date!=date[1] && high==low) return; If(BarType==0 && CurrentTime<=0.09 && high==low) return; MinPoint = MinMove * PriceScale; MA1 = AverageFC(Close,Length1); MA2 = AverageFC(Close,Length2); PlotNumeric("MA1",MA1); PlotNumeric("MA2",MA2);

简体文华财经交易软件使用说明书

文华财经交易软件使用说明书 文华财经的交易软件不同于目前市场上其它的交易软件,该软件是与行情软件捆绑到一起的,这样可以为客户提供更方便、更快捷的交易功能。 文华财经的交易软件主要包括以下几部分: ●普通的交易功能,该功能和目前市场上大部分的交易软件的功能是相同的,同时因 为和行情软件捆绑在一起,所以有价格联动功能,如果选中买/卖价格联动,则下单时的买/卖价,会随着当前品种的当前行情而变化。 ●郑州期货交易所的交易功能,郑州期货交易所目前可以支持市价委托功能及跨期套 利功能,但是目前市场上大部分交易软件还不能支持这两种新的委托功能,而文华交易软件则可以完全支持该交易所的这些新功能。 ●一键下单功能。该功能是为“炒单手”提供的方便快捷的交易功能。用户可以用最少 时间,以最快捷的操作方式进行交易操作。 ●查询功能。可以为用户提供基本得查询功能。 ●其它功能。可以让用户进行其它得操作,比如修改密码,查询历史账单等等。 下面具体说明以下该软件的使用方法: 在安装完文华财经的软件之后,双击桌面的快捷方式,启动该软件,此时需要使用您的行情账号登录行情服务器,在成功登录行情服务器之后,界面如下:

的“trade”来登录交易软件:

此时弹出交易软件的登录窗口: 在正确的输入了账号及密码之后,点击登录按钮,如果成功登录了交易服务器,会出现如下

窗口: 点击确定按钮,此时就可以正常进行交易。 要进行某个和约的交易,只要在报价窗口该和约的买价/买量,卖价/卖量区域双击鼠标右键键,系统就会为您自动填充好委托信息。 下面分别详细介绍一下各个交易界面。 ●普通交易界面: 普通交易界面如下:

交易开拓者(TB)编程初级篇

交易开拓者(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

关于交易软件安装版客户端的使用说明

关于交易软件安装版客户端的使用说明 欢迎您使用金银岛仓单交易中心提供的交易软件安装版客户端,为了方便您的使用,现讲明如下: 一、登录 1、点击桌面交易安装版客户端快捷图标,会弹出窗口 2、点击“同意”按钮,方可显现用户登录窗口,输入交易代码和交易密码,如果是首次登录请先点击“注册”按钮,会弹出“恭喜您注册成功!”的提示,接着点击“登录”按钮即可进入主界面;下次登录直截了当点击“登录”按钮即可。更换机器需要向仓单中心办理有关手续,并重新注册! 二、差不多介绍 界面 主界面由上往下依次分为菜单区、行情区、下单区、信息区和快捷按钮区。 (1)菜单区 下拉菜单分门别类的包括所有功能。 (2)行情区 那个地点分类显示所有交易品种的实时行情,注意到行业分类里分为化工、塑料、液化气三大类,点击将会显示相应行业的交易品种行情。价格使用红涨绿跌的区分模式,并能够自行定制显示的交易品种,稍后有具体的定制步骤讲明。 (3)下单区 交易商在此进行所有下单操作。

请注意其中的托付指令和与预备指令。 托付指令即为赶忙提交 预备指令: (4)信息区 那个地点将公布所有您的操作信息及本交易中心向您公布的广播信息。 (5)快捷按钮区 有了快捷按钮,您能够方便快捷地进行有关操作。 三、下单 1、直截了当下单 具体包括输入信息包括摊位代码、交易品种、买卖方向、价格、数量(批)、订立依旧转让、托付指令依旧预备指令。 摊位代码输入正确 选择交易品种 通过下拉式菜单选择或点击相应品种,图略。 买卖方向确认 也能够使用数字键代替,1为买,2为卖。 确认价格和数量 注意:请勿将价格和数量看错。 确定选择的是托付指令

2019年MT4交易软件操作手册

前言: 开设模拟账户 首次启动MT4,软件假定你将注册模拟账户。为了确定和MT4的交易账户,你需要启用该软件。一旦拥有了模拟账户,你随时就可以转入到“实战”版本。 为了在开始时不造成货币风险,请点击本线进入模拟账户操作说明。 MT4强力推荐:所有用户,不管是否是有经验的交易者还是刚刚入门的新手,在开设“实战”账户之前均需利用模拟账户进行交易练习。这可能说明在杠杆基础上。一些风险与货币交易有关。模拟账户实际上与“实战”账户一样。它允许交易者利用软件进行演练,而不蒙受任何金融风险。 介绍 MT4允许用户利用实时技术分析进行外汇市场交易。该软件通过多特征的综合功能包,包括几个主要的组成部分: 灵活的实时技术分析和图表 实时双层面外汇报价 实时新闻反馈 易于使用的交易终端 完整的内置网络浏览器 MT4,集技术分析、新闻、易于使用的交易终端于一身,是一个理想的平台,通过给用户全功能外汇在线交易所需的所有的工具。 概览 下面是MT4软件第一次启动时出现的项目窗口。

窗口为默认的抛锚式相互连接,但可以进行多种操作。多数窗口容易在屏幕上的任何位置进行定位,简直是无与伦比的灵活方便。 报价窗口 "Market Watch"(报价窗口)同"Navigator"(导航器)窗口,及"Terminal"(终端)窗口都可以自由拖拽,放到软件的任何一侧都可以。并可通过工具条或菜单栏中的按钮选择显示或是不显示。 这些列出的指令是在" Market Watch"窗口。起先这些列表会是空白的。 当按鼠标右键菜单会出现你可以选择的" Show All Symbols"(显示所有的符号)一览。价格在这些指令下,将形成" bid;ask;high;low;time"(买;卖;高价;低价;时间)的形式。为了降低交通拥挤,你可以排除一些指令从你的"MarketWatch"选择"Hide Symbol"(隐藏符号)或按"Del"(取消)按钮。在这种情况下,价格将只为选择的指令服务。打开你需要的图表窗口("Chart Window"),从连接的菜单中。当选择"New Order"(新指令)命令,或者按"F9"或双击选择的指令,指令的形式将会给出。

开拓者函数集

数学函数 Abs: 返回参数的绝对值。 Acos: 返回参数的反余弦值。 Acosh: 返回参数的反双曲余弦值。 Asin: 返回参数的反正弦值。 Asinh: 返回参数的反双曲正弦值。 Atan: 返回参数的反正切值。 Atan2: 返回给定的X及Y坐标值的反正切值。 Atanh: 返回参数的反双曲正切值。 Ceiling: 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数Significance的最小倍数。 Combin: 计算从给定数目的对象集合中提取若干对象的组合数。 Cos: 返回给定角度的余弦值。 Cosh: 返回参数的双曲余弦值。 Ctan: 返回给定角度的余切值。 Even: 返回沿绝对值增大方向取整后最接近的偶数。 Exp: 返回e的Number次幂。 Fact: 返回数的阶乘。 Floor: 将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 Significance 的倍数。 FracPart: 返回实数舍入后的小数值。 IntPart: 返回实数舍入后的整数值。 Ln: 返回一个数的自然对数。 Log: 按所指定的底数,返回一个数的对数。

Mod: 返回两数相除的余数。 Neg: 返回参数的负绝对值。 Odd: 返回对指定数值进行舍入后的奇数。 Pi: 返回数字3.1415926535898。 Power: 返回给定数字的乘幂。 Rand: 返回位于两个指定数之间的一个随机数。 Round: 返回某个数字按指定位数舍入后的数字。RoundDown: 靠近零值,向下(绝对值减小的方向)舍入数字。RoundUp: 远离零值,向上(绝对值增大的方向)舍入数字。Sign: 返回数字的符号。 Sin: 返回给定角度的正弦值。 Sinh: 返回某一数字的双曲正弦值。 Sqr: 返回参数的平方。 Sqrt: 返回参数的正平方根。 Tan: 返回给定角度的正切值。 Tanh: 返回某一数字的双曲正切值。 字符串函数 Exact: 该函数测试两个字符串是否完全相同。 Left: 返回文本串的前lCount位。 Len: 返回文本串中的字符数。 Lower: 将一个文字串中的所有大写字母转换为小写字母。Mid: 返回文本串的后lCount位。

文华交易软件说明书

文华交易软件说明书 一、交易的登录和退出 1、交易的登录:登录文华行情后按F12或点击右下角的”trade”,在弹出的登录界面上填入资金账号和密码(建议使用软键盘输入密码,防止木马程序,保护账号安全),并选择相应站点登录,电信上网选择电信站点,网通上网选择网通站点,公司总部场内客户也可以选择内网站点。

注:交易软件打开后显示在屏幕的左下方,这样不影响对图表主图窗口的分析。 2、交易的退出:先将交易窗口关闭,然后在文华行情界面上点击程序化交

易\断开交易服务器。 二、普通下单 1、合约代码输入后,图表窗口自动切换显示该合约

2、两步实现下单。 第一步:屏幕抓价(自动输入交易代码和委托价格与手数) 双击买/卖/最新价可以自动在交易软件里填入委托信息和买/卖/最新价。双击买/卖量可以自动在交易软件里填入委托信息(不同品种合约下单手数可以在“帮助与设置”中分别设置)。也可以通过点交易窗口的买卖价显示框来抓价。 第二步:选择买开、平多单、卖开、平空单按钮确认下单。 3、价格联动功能 将“买价联动”、“卖价联动”或“最新价联动”的勾选上后。通过屏幕抓价后,交易软件中填入的价格会自动跟实时行情保持联动。系统默认是选上该项的。如果您想手动输入价格,可以先将该选项的勾去掉,再在报价栏中填入价格即可。

还可以直接点击涨/跌停价格进行委托。 4、双击持仓可以自动弹出平仓界面,并可反手开仓。平仓时仍可选择价格联动;可以选择追价平仓。 注:上海品种如果是今天开的仓会自动对应平今指令,老仓自动对应平仓指令。 4、界面介绍 ●合约名称下显示最多可开仓手数,最新权益,可用资金。支持当前权益和可用资金动态刷新,支持当前合约的涨跌停价格显示;。 ●持仓列表:即时显示持仓信息、可用数量、浮动盈亏等;

最新交易客户端使用手册0920

交易客户端使用手册 20120920

交易客户端使用手册 2012年9月5日 江苏大圆银泰贵金属现货电子交易市场

目录 1 引言 (4) 2 基本概念与计算公式 (5) 2.1 基本概念 (5) 2.2 计算公式 (6) 3 安装登录 (7) 3.1 安装步骤 (7) 3.2 登录系统 (9) 4 主要功能及快捷键 (11) 4.1 基本功能 (11) 4.2 本系统主要功能键 (12) 5 交易界面介绍 (17) 5.1 菜单栏 (17) 5.2 行情面板区域 (17) 5.3 交易控制面板 (18) 5.3.1 概况F2 (18) 5.3.2 委托查询F3 (20) 5.3.3 成交查询F4 (21) 5.3.4 持仓明细F5 (22) 5.3.5 持仓汇总F6 (22) 5.3.6 账户信息F7 (23) 5.3.7 商品信息F8 (23) 5.3.8 预警信息F9 (24) 5.4 信息栏 (24) 5.5 建仓、平仓与撤单 (25) 5.5.1 市价建仓 (25) 5.4.2 市价平仓 (27) 5.4.3 指价建仓 (29) 5.4.4 指价平仓 (31)

5.4.5 撤委托单 (32) 6 报表系统 (34) 7 公告系统 (36) 7.1 有效公告 (36) 7.2 失效公告 (36) 8 注销 (37) 9 密码修改 (38)

1 引言 本手册是交易系统的交易商界面使用手册。本手册的目的是要清楚的讲解交易商界面的使用方法及有关概念。 系统运行于Windows 98以上版本,全中文界面,多窗口显示,采用面板按钮将各种交易活动(下单、撤单)及查询功能完整地组织在一起。本系统只是一个界面系统,所有的内部处理(包括委托指令买卖对盘)和交易结果及行情数值均在主机服务器中,而本系统只提供访问服务器的手段。

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

从一无所知开始学习交易开拓者(TB)期货程序化交易编程 经常会看到很多朋友问:帮我写个公式怎么样啊?帮我把某个公式改成TB的怎么样啊? 我想出现这种情况的原因有两种: 一是真的不会,毕竟做期货的会编程的不多; 二是自己如果多花点时间的话是弄的出来,但是有点懒; 我想无论是哪种原因,都应该好好的学习下TB,因为真正的你的交易思路只有你自己才清楚 而且也只有你自己去把你的交易思路用TB表现出来你才能更清楚的知道你的交易思维中有何缺点 但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了 所以本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料,如果您是高手,请忽略此文,以免耽误您的时间. 我先不说那些专业术语,什么变量,函数和语法的,我们先不管他,以免看的头晕. 我想先说说在TB中代码的执行顺序,也就是说在TB的K线图(TB把K线叫做Bar)里面你写的公式或者指标是如何得到执行的; 我想这个东西是最重要而且也是最好理解的. 在其他的期货软件比如文华飞狐一类,我们是无法知道你写的公式是如何执行的,甚至我们不知道我们写出来的公式是不是真的 就体现出了我们的思想,因为你写的公式或者指标是被这些软件在幕后进行处理的,是黑箱操作! 而TB不同,我们能够清楚的看到你写的代码在任意一根K线上是如何得到执行的!!!! 好了,先说说在TB里面代码是如何得到执行的. 1,代码从第一根K线开始执行,一直到最后一根K线; 2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行; 明白了吧,是不是很简单,我们先看一个小例子,如果您还不明白,那只能说我完全没有任何能力写这文章,您就板砖吧 我们就写个输出每日的收盘价的例子; 打开TB,在左边的TB公式里面,点击新建技术指标,新建其他的也没有关系,然后在出来的对话框的简称里面填入名字,记住,这个名字只能是E文哦 在名字里面填入你喜欢的名字,点确定就OK了啊 然后在出来的公式编辑器里面输入 Begin End 注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间 意思很简单 就是Begin后,你的代码就开始执行了,End了,你的代码就执行完毕拉 呵呵 我们再在Begin和End之间输入一些代码,完整的就是: Begin FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"); FileAppend("C:\\a.log",Text(Close));

商品交易所交易客户端使用手册培训资料

南宁大宗商品交易所交易客户端使用手册 南宁大宗商品交易所有限公司 年月日

目录 引言 本手册是交易系统的交易界面使用手册。本手册的目的是要清楚的讲解交易界面的使用方法及有关概念。 系统运行于以上版本,全中文界面,多窗口显示,采用面板按钮将各种交易活动(下单、撤单)及查询功能完整地组织在一起。本系统只是一个界面系统,所有的内部处理(包括委托指令买卖对盘)和交易结果及行情数值均在主机服务器中,而本系统只提供访问服务器的手段。

基本概念与计算公式 基本概念 下面一些术语在以后会经常出现,其解释如下: 市价建仓:以当时市价建立交易单。 市价平仓:以当时市价对已有持仓单进行平仓。 指价建仓:客户按自己意愿设定非市价价格,当行情达到此价格或穿越此价格时以设定价格成交。 止盈平仓:按照客户设置的止盈价格平仓。 止损平仓:按照客户设置的止损价格平仓。 反手建仓:客户在进行平仓时,同时进行反方向建仓操作。 平仓单:对已有的持仓单进行平仓的指令。 指价单:设定了指定价格执行的交易单。 开盘价:交易系统开盘时行情的第一口有效报价。 收市价收盘价:交易系统行情的最后一口有效报价。 最高价:一个交易日内的最高市场价格。 最低价:一个交易日内的最低市场价格。 建仓价:执行建仓操作时的成交价格。 平仓价:执行平仓操作时的成交价格。 结算价:指交易日收市前分钟的有效报价的算术平均值,并以此作为计算当日盈亏以及下一交易日商品的持仓价的依据。 持仓价:指持有的交易仓单的价格,持仓价当日以建仓价为准,隔夜持仓则以上一交易日结算价为准。 错价交易:由于行情错价导致的交易 实盘:正式进行投资行为操作的交易平台。 模拟交易:在实盘交易前,为了让投资者更好的了解业务规则,熟悉交易系统的操作,交易所提供模拟交易系统供投资者进行非正式的交易。 强行平仓:对达到最大风控限制的交易进行强行平仓的操作,当投资者存在违规超仓、未按照规定及时追加保证金等违约行为或者因交易规则临时变化时,交易所有权对相关会员或者投资者采取强制性的平仓操作。 ()冻结:由会员单位对客户账户的使用采取限制其使用的操作。 ()隔夜持仓:客户根据行情变化及交易的需要,对当日持有的仓单不作平仓处理,持有到第二个交易日以后。 ()持仓限额;上限:持仓数量或比例的最大上限限制

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

交易开拓者代码学习各种买卖指令及实例(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);

实习生笔试题2_金融工程和量化交易岗v7

鋆石 敦敏资产管理有限公司-上海量化对冲基金团队 实习生笔试题 金融工程和量化交易岗 【工作内容提示】您将加入一个华尔街海归团队,从事高频量化和程序化交易方面的工作,您将从事量化投资、高频交易、海量数据发掘等全世界最激动人心的前沿技术工作!如果您工作业绩出众,将往投资岗位培养。我们的宗旨是:技术为先,数据为王! 【提示】请注意尽量回答每道题。要求有深度、有干货、全面、细致、逻辑正确、语句通顺、表达清晰、格式美观。这既是对现有能力和经验的测试,更是对学习能力、网络搜索能力和鉴别能力的测试。如果您暂时不具备这方面的能力和经验,也不要紧,您可以通过搜索和快速学习网络上的干货来弥补。可以摘抄网络及其他方的资料。但要注明哪些是您的现有能力和经验(即原创性内容),哪些是摘抄,并一定要详细注明出处供查核(不注明可供查验的出处,将被扣分)。在进行网络搜索的时候,请尽量先使用谷歌,然后是百度。请注意搜索能力也是一种智力。回答越有深度越有广度得分越高、并兼顾其他要求。提交答案的时候,可以将辅助和参考文档(比如各种参考书籍、文献、网页、源程序等)的源文件做成PDF(要求是PDF格式,请把其他如caj等格式转化为PDF格式),打包上传。 请注意因为量化岗应聘人数非常多,竞争非常激烈。您的答题的深度、广度和细致程度将决定您的排名。工作态度和实力同样重要!我们原则上不招收本科生。不过,可以对特别优秀满足以下条件的本科生破格录取:奥赛奖牌得主,有相关工作经验的,在量化方面有突出成绩的,有实盘经验的,有数理统计方面有突出成绩的,在计算机编程开发方面有突出成绩,研究能力等同博士研究生级别的等等。如果您是本科生,请您在答题的时候更加勤勉,并从深度、广度和快速学习能力等方面展现自己的亮点。也可在简历上加注自己的亮点。 【最终提交内容– 全部打包上传。不全的将无法进入下一轮】 1.简历 2.笔试答案(PPT或者WORD。请注意,答题的时候,先复述一下您所回答的题目,以 便阅卷) 3.辅助和参考文档要求是干货,不能是简单的网页新闻。注意不要忘了!一定要上传各种 参考书籍、文献和网页!要求是PDF格式,请把其他如caj等格式转化为PDF格式。 4.各项展示自己智力和能力的证明(可选):比如本科成绩单,展示自己达到博士研究水 平,金融工程和量化交易方面的项目等。要求是常用的文件格式,便于打开(请把其他

通达信股票行情交易软件操作手册

目录 通达信大趋势版用户操作手册 (3) 一、常用界面说明 (3) 1、行情报价界面 (3) 1.1、界面说明 (3) 1.2、功能操作说明 (4) 1.3、局部菜单(按~键弹出局部菜单) (5) 2、即时分析界面 (5) 2.1、界面说明 (6) 2.2、操作说明 (6) 3、K线分析界面 (7) 3.1、画面说明 (7) 3.2、操作说明 (7) 4、委托查询界面 (9) 4.1、操作说明 (9) 4.2、功能分述 (10) 5、系统工具 (16) 5.1、设定自选股 (16) 5.2、设定自定义板块 (16) 5.3、设定行情参数 (17) 5.4、设定交易参数 (17) 5.5、设定系统颜色 (18) 5.6、设定技术分析参数 (18) 5.7、设定专家系统参数 (18) 5.8、设定特别板块 (18) 5.9、设定行情栏目顺序 (19) 5.10、设定开机技术指标 (19) 5.11、设定开机画面 (19) 5.12、设定电视墙播放 (19) 5.13、代码对照表 (19) 5.14、设定市场雷达参数(系统在满足条件实时在屏幕最下方提示) (19) 5.15、设置动态预警 (20) 5.16、修改用户密码 (21) 5.17、系统维护功能 (21) 5.18、系统操作说明 (21) 5.19、新增功能介绍 (21) 5.20、系统状态信息 (21) 5.21、网络状态监控 (21) 二、特色功能 (23) 6.1、个股静态分析 (23) 6.2、更多叠加线:Ctrl+J (23) 6.3、叠加移动筹码:Ctrl+U (23)

6.4、闪电买入卖出 (24) 6.5、叠加股票K线:Ctrl+O (25) 6.6、专家指示:Ctrl+E (25) 6.7、K线指示:Ctrl+K (26) 6.8、股本变迁指示:Ctrl+W (26) 6.8、区间统计 (27) 6.9、个股权息资料:Ctrl+F10 (28) 6.10、公式管理器: (28) 6.11、公式编辑器: (29) 6.12、收益测试: (30) 6.13、测试参数: (30) 6.14、测试指标: (31) 6.15、增加(Insert)、删除(Del)、修改(F11)模拟数据: (31) 6.16、多窗口分析 (31) 6.17、选股分析 (32) 6.18、板块分析 (34) 6.19、主力大单 (35) 三、附录 (36) 7.1、特色功能键 (36) 7.2、数字组合键 (36) 7.3、点序列键 (37) 7.4、深圳和上海的指数代码表 (40)

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

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

开拓者变量

公式系统 - TradeBlazer公式基础 - 变量 变量 变量是一个存储值的地址,当变量被声明之后,就可以在脚本中使用变量,可以对其赋值,也可以在其他地方引用变量的值进行计算,要对变量进行操作,直接使用变量名称即可。 变量的主要用处在于它可以存放计算或比较的结果,以方便在之后的脚本中直接引用运算的值,而无需重现计算过程。 例如,我们定义一个变量Y,我们把一个收盘价(Close)乘上8%的所得的值存储在Y中,即Y = Close *8%。那么一旦计算出Close * 8%的值,便赋给变量Y。而无需在公式中输入计算过程,只需调用变量名称即可引用变量的值。 变量有助于程序的优化,这是TradeBlazer公式必须重复调用一些数据,这些数据可能是某些函数(如:Bar数据),或通过表达式执行计算和比较的值。因此,在表达式频繁使用的地方使用变量可提高程序的运行速度和节约内存空间。 使用变量也可以避免输入错误,使程序的可读性提高,示例如下: If(Close > High[1] + Average(Close,10)*0.5) { Buy(100, High[1] + Average(Close,10)*0.5); } 如果使用变量,则整个代码变得简洁: Value1 = High[1] + Average(Close,10)*0.5; If (Close > Value1) { Buy(100,Value1); } 如果一些表达式的组合经常在不同的公式中被调用,这个时候变量就不能实现功能,变量只能在单个公式的内部使用,这个时候我们需要建立用户函数来完成这些功能,详细说明参见用户函数。 变量类型

期货程序化交易——交易开拓者(TradeBlazer)公式详细介

交易开拓者(TradeBlazer)公式详细介绍 概述 本章节内容是TradeBlazer公式的全面参考手册,详细介绍了TradeBlazer公式的结构、语法、特点、使用方法及功能等。 通过阅读该参考手册,您能够了解TradeBlazer公式的基本语法、操作符、表达式及控制语句等,通过手册提供的各种示例程序,掌握各种TradeBlazer公式的编写要领,最终达到能够熟练将自己的思想转化为TradeBlazer公式,并在交易开拓者中应用。 什么是TradeBlazer公式? TradeBlazer公式是一种专为分析金融数据-时间序列而设计的高级语言,它提供直接、强大的框架将交易思想转化为用户函数、用户字段、技术分析,交易指令等计算机能够识别的代码。 TradeBlazer公式是一门语法简单但是功能强大的语言,它能帮助您创建自己的交易和技术分析工具。通过组合普通的交易指令和简单的语句,TradeBlazer公式使您能够很容易并且直接的用简单语句表达自己的交易规则和行为。 交易开拓者能够读取您开发的TradeBlazer公式,在历史价格数据基础上进行评估,并能自动执行特定的交易动作,将您的交易思想转化为实际的交易操作。 TradeBlazer公式能做什么? 通过TradeBlazer公式,您能够创建自己的交易指令、技术指标、K线型态、特征走势、用户函数以及用户字段。您也可以拷贝,修改并使用系统内置几百个函数、字段、技术分析和交易指令。 TradeBlazer公式包含的公式类型如下: ?用户函数:用户函数是能够通过函数名称进行引用的指令集,它执行一系列操作并返回一个值。 您可以在其他任何公式中使用用户函数进行计算; ?用户字段:用户字段是TradeBlazer公式为交易开拓者报价类窗体提供的一项数据输出公式,通过用户字段执行一系列语言指令,给报价窗体返回一个特定的显示值; ?技术指标:技术指标是基于基础数据,通过一系列的数学运算,在每个Bar返回相应的结果值 的一类公式,这些值在图表模块中输出为线条、柱状图、点等表现形式; ?K线型态:K线型态是类似于技术指标的一类公式,它主要着重于反映一段K线的特定型态,并 通过不同的技术指标的方式输出到图表; ?特征走势:特征走势是类似于技术指标的一类公式,它主要着重于反映整个价格曲线的趋势、变化特征,并通过特定的表达方式输出到图表; ?交易指令:交易指令是包含买、卖、平仓,头寸,仓位控制的并执行交易指令的一类公式,它 主要帮助您将您的交易思想转化为计算机的操作。 通过调用TradeBlazer公式,您可以在交易开拓者中进行技术分析、交易策略优化测试、公式报警、自动交易等操作。 各类数据

新版交易软件使用手册.

新版系统交易软件使用手册 一、登入 双击山东标金客户端图标 双击图标运行山东标金交易客户端后,程序启动后会弹出连接站点窗口 (也称为登录窗口),如下图: 注:如果您的网络是联通的,请选择山东标金联通和山东标金联通2登入站点,如果您的网络是电信的,请选择山东标金电信登入站点,这样可以保证您的行情浏览和交易成交速度达到最大值。 点击“交易” 出现登入窗口(再次点击“交易”按钮则可隐藏交易端。通过点击“交易”按钮,可实现交易端的激活与隐藏。)

在登入窗口中选择您要登入的站点: (1)如果您要登入模拟交易,请选择:山东标金模拟 (2)如果您要登入实盘交易,请选择:山东标金实盘 输入您的交易账号和交易密码,进入标金贵金属交易系统。 注:首次登陆新交易端,系统会提示修改密码,请修改密码后重新登陆,否则不能正常交易。 二、交易系统使用说明 (一)交易部分:

交易代码:为您在标金交易系统中的交易账号 商品代码:为各个交易品种代码 前六个品种为订金交易品种,分别为:黄金10克订金(AU10D),黄金100克订金(AU),铂金10克订金(Pt10D),铂金100克订金(Pt100D),白银1千克 订金(Ag),铜100千克订金(Cu100D) 后六个品种为全款交易品种,分别为:黄金1克全款(Au1),黄金10克全款(Au10),铂金1克全款(Pt1),铂金10克全款(Pt10),白银1千克全款(Ag1),铜100千克全款(Cu100) 注:如果您对这些买卖符号不是很了解,您可以选择在商品代码中选择好您要交易的品种后,在右侧行情显示中会出现提示。比如我选择Au,在右侧出现“金100g 订”字样 买入,卖出项:如果您是买入,请选择买入;如果您是卖出请选择卖出 开单,平单项:如果您是开单,请选择开单;如果您是平单请选择平单 委托类型:分为市价单和限价单 委托价格:在做限价单限价成交时填写 委托数量:交易时的手数 (1)开单:

TB课堂 基于指数移动平均线组进行判断 策略公式

TB课堂基于指数移动平均线组进行判断策略公式 只做专业交易软件 | 交易开拓者旗舰版| TB-Plus | TB-Smart | 基于指数移动平均线组进行判断(多) //------------------------------------------------------------------------// 简称: CL_Three_EMA_Crossover_System_L// 名称: 基于 指数移动平均线组进行判断多// 类别: 公式应用// 类型: 内建应用// 输 出://------------------------------------------------------------------------//------------------------------------------------------------------------// 策略说明://1.计算三条指数移动平均线(Avg1, Avg2 , Avg3);//2.通过指数移动平均线的组合来判断趋势// // 入场条件://1.当Avg1向上穿过Avg2并且Avg2大于Avg3时,在下一根k线开盘处买入//2.当Avg1向下穿过Avg2并且Avg2小于Avg3时,在下一根k线开盘处卖出// 出场条件: //1.Avg1下穿Avg2多头出场//2.跟踪止损//// 注: 当前策略仅为做多系统, 如需做空, 请参见 CL_Three_EMA_Crossover_System_S//------------------------ ----------------------------------------------// ParamsNumeric AvgLen1(6);Numeric AvgLen2(12);Numeric AvgLen3(28);Numeric

相关文档
相关文档 最新文档