当前位置:文档之家› 从一无所知开始学习交易开拓者(TB)期货程序化交易编程

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

从一无所知开始学习交易开拓者(TB)期货程序化交易编程
从一无所知开始学习交易开拓者(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));

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日的收盘价等于

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

好了,现在代码在第二根,第三根,第四根K线上执行完毕,于是转到第五根也就是最后一根K线上执行第一行代码再执行第二行代码

到此为止,所有的代码在所有的K线上执行完毕了,圆满的完成了党和祖国赋予他的神圣使命,于是也就有了我们上面所看到的结果:

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

67280

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

67800

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

67160

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

67300

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

68020

OK,下回继续

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

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.就应该这样

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);

Numeric b;

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

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

如b = 9;

就是把9赋给变量b

我们在日常中一直把=当成等于,千万急着在TB里面=就是赋值!!!

真正的等于的符号是==

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

{

//做某件事情

}

好了

快11点了

睡觉了

下次见

看了,学了,收获不少,不断消化ING。。。

谢谢斑竹!

但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了

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

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

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

想个办法来理解他吧

比如我们的K线图上有10跟K线,Close大家知道吧,就是收盘价

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

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

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

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

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

好了

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

Vars

Numeric a(2);

Numeric b;

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

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

如b = 9;

就是把9赋给变量b

我们在日常中一直把=当成等于,千万急着在TB里面=就是赋值!!!真正的等于的符号是==

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

{

//做某件事情

}

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

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

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

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

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

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

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

先说If.

假设一个这样的条件:

如果(收盘价>开盘价)

则输出:今日收红阳线

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

如果翻译成If

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

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

If(Close>Open)

{

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

}

是不是很简单呢?

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

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

如果(收盘价>开盘价)

则输出:今日收红阳线

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

则输出:今日收十字线

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

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==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语句的语法格式:

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的写法,就会很明白了的:

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

// 简称: 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);

}

Return highestValue;

End

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

// 编译版本GS2004.06.12

// 用户版本2007/09/24 08:29

// 版权所有pwqzc

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TrabeBlazer公式修改和重写的权利

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

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

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

看起来似乎有点深奥和晦涩,那么我们先来明白函数是什么就很容易明了

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

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

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

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

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

呵呵,那么我们这样写:

GetCloseFromTrader(Cu0801)

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

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

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

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

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

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

调用这个函数,如果真懂了,这课就圆满的完成了!

[Copy to clipboard][ - ] 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

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

// 编译版本 GS2004.06.12

// 用户版本 2007/09/24 08:29

// 版权所有 pwqzc

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TrabeBlazer公式修改和重写的权利

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

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

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

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

这个函数的名字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;

再看代码:

[Copy to clipboard][ - ] 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,如果条件成立,就执行:

[Copy to clipboard][ - ] CODE:

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

Price[0]代表今天的价格,先比较今天的价格和最高值,取最大的那个保存;再把i+1

于是这个时候i为1了,再比较是不是小于等于最小周期minDay,如果条件成立,再执行:

[Copy to clipboard][ - ] CODE:

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

这个时候Price[1]就代表了昨天的价格,把昨天的价格和保存的最高值比较,取他们的最高的那个再次保存;

依次循环,我们是不是就得到了某个周期某个价格的最高值了呢?

呵呵

最后面,我们用代码:

Return highestValue;

把这个得到的最高值返回给用户,Return就是返回拉.

明白了吗?

调用这个函数的时候就更简单了,比如求10个周期的收盘价的最高值:

HHV(Close,10);

求20个周期的最高价的最高值:

HHV(High,20);

呵呵

大家在看看和分析这个文章里面的函数就会完全明白了的

https://www.doczj.com/doc/567309072.html,/forum/thread-520-1-1.html

我们现在来写一个飞狐的DMA函数

原文出自这里:

QUOTE:

请编飞狐DMA函数.

函数:DMA(X,N)

别名:动态移动平均

参数:X为数组,N为计算周期

返回:返回数组

说明:求X的动态移动平均。

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

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

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

他上面的描述有点错误,应该是N必须小于1;

且N不是计算周期,我们还是看看文华的关于DMA的描述吧,这样清楚点:

[attach]396[/attach]

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

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

当然,您可以用任意你喜欢的名字来表示;

好的,开始吧!

我们先新建一个用户函数,简称写DMA,名称写:求动态移动平均,分类选用户函数,模板任意(我选bool),然后确定; 出来如下东西:

Params

Numeric Num(10);

Vars

Bool Con1;

Begin

Con1 = Close > Num;

Return Con1;

End

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

Params

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

好了,这个函数就写好了啊,是不是very very 简单啊?

呵呵

但是细心的朋友可能会发现,这个函数还有点小问题,就是如果是第一根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

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

// 编译版本GS2004.06.12

// 用户版本2007/11/03 11:57

// 版权所有pwqzc

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TrabeBlazer公式修改和重写的权利

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

在编译这个用户函数的时候我碰到了一个小麻烦,大家都知道,我在上面新建这个函数的时候模板选择的是布尔型

所以我编译的时候老是提示:

C0122 Return语句的返回值类型与公式定义的返回值类型不符

非常郁闷,后面我在公式编辑器里面的文件----属性设置-----返回类型里面改成数值型确定后,再编译通过,

不知道这是不是TB的一个小Bug,难道模板决定一切?这是个很郁闷的问题啊

写这么久了,下次我们就整一个交易模型出来啊

这段时间,寒舍装修了一下,还有这段时间朋友的电脑出问题特别多,加之其他一些莫名其妙的问题,

让本文更新的速度极慢,连自己都感觉到很过意不去了,让我严肃的对大家说一声,用洋玩意儿来说一声:Sorry

这篇文章我将写一个简单的交易模型,说起交易模型,大家都会想到在K线上的那些信号箭头,但是对于TB,我似乎不喜欢这样做.

基于以下两点:

一是如果把K线比喻成多姿多彩的美女,那么这个信号箭头应该是这个美女头上的一朵花,但是TB的那些箭头我怎么看都不舒服,就好比妓女的叫床:哦啊快点,啊哦快点,让人兴奋但又无可奈何,恶心极了;

二是TB支持全自动下单,我对TB的这个方面还没有任何研究,且暂时现在也没有进行全自动交易的打算,没有调查就没有发言权啊,呵呵

俺不是学文学的,俺现在能够找到的唯一能够证明俺有那么一把刷子的东西就仅存一个初中毕业证了,不好,俺要回家看看才好,不会被俺小崽拿去折四角板玩吧?如果真是那样,我可要狠狠的批评且严肃的警告他:现在你把老子的毕业证折四角板玩,等你小学毕业了,老子要把你的毕业证拿来卷烟抽!

言归正题,我比较喜欢而且非常喜欢把交易模型做成变色的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("Low",Low);

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

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

终于看到有朋友UP了,是多么的感动啊!

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

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

明白了吧

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

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

[Copy to clipboard][ - ] 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

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

// 编译版本GS2004.06.12

// 用户版本2007/11/14 13:51

// 版权所有pwqzc

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TrabeBlazer公式修改和重写的权利

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

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

这个技术指标,

娃哈哈,效果出来了咯!!

很爽对不?呵呵,但是如果你是个完美主义者,肯定你会发觉这中间稍有缺陷?在哪里?就是当K线是十字星的时候K线会是白色的拉.

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

有两种方法:第一种是强烈要求TB修改系统的底层去实现,怕怕.

还有就是自己向办法实现,nopain老大提供了个思路,very very good!真的是长江后浪推前浪,前浪死在沙滩上啊,俺们老了,还是nopain这样的年轻人脑子反应快咯~~~

下面是按照nopain老大的思路实现的代码:

[Copy to clipboard][ - ] CODE:

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

// 简称: MyKLine

// 名称: 哈哈

// 类别: 技术指标

// 类型: 其它类

// 输出:

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

Vars

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

Begin

if(CurrentBar>150)

{

2018年《黄金市场基础知识与交易实务》考前练习题(十)

2018年《黄金市场基础知识与交易实务》考前练习题(十) 单选题-1/知识点:章节测试 ( )是全球最早、最成功的黄金期货交易所。 A.上海期货交易所 B.东京商品交易所 C.纽约商品交易所 D.香港期货交易所 单选题-2/知识点:章节测试 《关于促进黄金市场发展的若干意见中》提出,扩大有进出口黄金资格的(?)数量。 A.商业银行 B.上海黄金交易所 C.上海期货交易所 D.天津贵金属交易所 单选题-3/知识点:章节测试 出入库费由( )代收代付。 A.上海黄金交易所 B.指定仓库 C.会员单位 D.银行

单选题-4/知识点:章节测试 当出现某延期交收合约的持仓量水平超过交易所公布的合约持仓量风险水平,或出现市场过热状况时,交易所可以对连续持有时间超过交易所规定期限的部分或全部持仓加收()。 A.超期费 B.延期补偿费 C.手续费 D.认证费 单选题-5/知识点:章节测试 具备黄金或白银相关生产经营资格的会员或客户,可申请套期保值( )。 A.最大持仓 B.最小持仓 C.限仓额度 D.可用额度 单选题-6/知识点:章节测试 目前上海黄金交易所黄金延期和白银延期的保证金分别是( ) A.8% 10% B.12% 15% C.6%7% D.15%15%

单选题-7/知识点:章节测试 在Au99.99品种的竞价撮合过程中,如果最高的买入价241.4/克,最低的卖出价为241.32元/克,前一日为241.32元/克,则这笔报单能成交吗,如果能成交,成交价是(?)。 A.无法成交 B.能成交,241.32元/克 C.能成交,241.30元/克 D.能成交,241.40元/克 单选题-8/知识点:章节测试 铂锭实行“定库存货、定库取货”原则,存取地区为( )。 A.北京、上海和深圳 B.北京和广州 C.深圳和北京 D.深圳和厦门 单选题-9/知识点:章节测试 ( )自古以来就有“金属之王”的称号。 A.黄金 B.白银 C.铂 D.铁

周伟谈程序化交易秘诀

周伟谈程序化交易秘诀:纪律是我的赚钱法宝Post By:2010-12-7 16:45:00 操盘风格:程序化交易;稳定盈利 事迹简介: 浙江平湖人,现居上海,近不惑之年,1993年进入中国股票市场,1998年开始从事个人期货交易,几经起伏,也曾爆过仓,目前以程序化交易为主。2008年9月1日至2009年8月31日,在中国金融投资“潜龙出渊”期货实盘大赛中,用严格的程序化交易实现623.86%的收益,以稳定的资金增长,可控的资金回撤摘得”潜龙出渊”年度综合总冠军和A组累计收益率冠军。在第2届蓝海密剑大赛中,周伟收益率为119%,赢利金额为2902944.98元,位列全部选手盈利额第二。市场是系统交易者的朋友,盘整或者无趋势时候患难与共,而当行情灿烂时刻,资金的增长是市场给予的丰厚回报。 经典摘录: 一套完整成功的程序化交易系统应该包括进出的时机、风险控制和资金管理 我的交易系统与海龟交易法则有较大类似,比如价格突破 系统化交易会失去暴利的机会,每年50%-100%的收益 一般来说收益跟风险还是成正比的。比赛帐户基本上单笔风险控制在2.5%左右 想要在期货上赚钱,必须遵守纪律,其次坚决止损,再次多学习 按照系统来做,可以克服恐惧和贪婪 程序化交易成功的秘诀应该将实战和理论结合起来,再加上学习国外新方法 性格偏内向、静心之人适合做程序化交易 访谈实录: 和讯网:各位网友大家好,欢迎收看和讯访谈。蓝海密剑2009—2010实盘精英晋级赛在9月顺利闭幕,这中间涌现出了很多风格各异的期货高手,他们拼杀在无形的期货战场上,练就了一身的硬功。今天我们就请到了一位期货实盘精英周伟先生,周先生您好! 周伟:你好,大家好! 和讯网:我们知道周先生1998年就开始从事期货交易,盈利依靠自动化交易系统,不考虑基本面,而是根据系统的提示进行交易。在这次大赛中,您用了11个月的时间,把240万的资金做到了460万,请问您对这样的成绩满意吗? 周伟:应该差不多,不算特别满意,因为比赛中有好多选手收益率都比较惊人,我这个应该说勉强及格吧。

炒黄金期货如何入门

炒黄金期货如何入门?相信黄金期货交易怎么入门是每个新手都会遇到的问题,黄金期货交易入门应该从黄金期货模拟交易开始,由浅入深,循序渐进地了解黄金期货的基础知识、分析方法、交易策略以及风险管理,黄金期货模拟交易是新手入门黄金期货的主要途径。 了解黄金期货的相关专业知识 黄金期货作为期货的一种投资方式,区分为国际黄金期货和国内黄金期货。不过大部分的投资者更加偏爱国际黄金期货,因为它更加稳定。其次期货交易是针对现货推出的一种期货合约,合约有一定的标准。期货的特征之一是投资者为能最终购买一定数量的黄金而先存入期货经纪机构一笔保证金。这笔保证金不需要巨额数目,少量资金便可以推动大额交易,因此也被称为“保证金交易”,深得投资者喜欢。 黄金期货是做什么的 主要是指以国际黄金市场未来某时点的黄金价格为交易标准的期货合约,投资人买卖黄金期货的盈亏,是由进场到出场两个时间的金价价差来衡量,契约到期后则是实物交割,期货交易的全过程可以概括为开仓、持仓、平仓或实物交割。 黄金期货入门第一点:从模拟交易开始 期货交易与股票交易不同,由于它利用保证金杠杆交易,风险性远远大于一般投资品种。同时,黄金期货交易需要一定的专业知识,这些条件都要求投资者加强前期知识贮备。现在许多交易公司都设有网上模拟交易。通过模拟交易,投资者可以查阅资料,一边学一边交易,这样的做法将使投资者获益匪浅。 黄金期货入门第二点:选择合法的交易平台 首先它必须是合法的。如果投资者没有选择合法的交易平台,无论交易怎么成功,都是竹篮打水一场空。投资者选择期货经纪公司还要看它的硬件和软件设施。 黄金期货入门第三点:开户交易流程

下面以香港金银业贸易场行员“金荣中国”为例,详细介绍黄金期货交易开户流程 1、打开会员中心(https://www.doczj.com/doc/567309072.html,/?340)注册页面。选择开户地区,填写手机号码,设置安全码,(安全码仅用于登录金荣中国会员中心)勾选我已阅读并同意《金荣中国用户使用协议》,点击提交。 2、弹出拖动验证码,鼠标按住拖动滑块,正确完成拼图,通过验证,后台发送短信验证码到您的手机上。 3、填写收到的短信验证码,点击完成开户。 4、开户完成,默认赠送20万美元模拟账号。请登录会员中心完善认证资料升级为真实账户。

《期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单) 》

《期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单) 》中国最著名博客女王干群精美作品编号2016061601 中国最著名博客女王干群精美作品编号2016061601 《期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单) 》 期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单) 一、如何下单 方法:点击“买卖”按钮可以下单。 二、如何指定价格下单 方法:在价格输入框输入价格,下单按钮会自动显示您输入的价格,然后点击“买入”或者“卖出”即可。 三、如何撤单 方法:如需撤掉挂单,只要双击挂单列表中的挂单即可。也可选择挂单合约后点击撤单按钮实现撤单 四、如何平仓 方法一:鼠标点击持仓,光标焦点会根据持仓方向落在“买

卖”按钮上,点击“买卖”按钮即可平仓。同时可以调节数量和价格微调按钮,对平仓手数和平仓价格进行设置 方法二:鼠标点击持仓,点击“平仓”按钮进行平仓。 方法三:双击持仓,实现快速平仓。 五、如何设置默认下单手数 方法:点击一键通交易软件中“数量”后面的“…”即可针对合约设置默认的下单手数 六、如何使用追价下单? 追价下单启动后,系统会自动撤单然后自动按照最新报价重新发出委托,直到完全成交。 方法:将一键通交易界面右上角的“追价下单”勾选即可。可以点击“追价下单” 后面的“…设置触发条件、追价范围和追价机制。 追价触发条件:以时间为条件,即下单后N秒钟没有成交就触发追价下单。 手动开仓、平仓追价范围:系统可以对手动下单设置追价范围,如果价格变化超过设置的追价范围,就停止追价。 追价机制:即对追价触发自动发出委托的委托价格进行设置。

黄金期货交易流程

黄金期货交易流程 黄金期货交易从开户到结算交割,是一个完整的过程。黄金期货和其他品种的期货一样,都得按照上海期货交易所规定的期货交易方式完成。投资者要想在期货市场投资成功,首先得进入这个市场,为自己寻找一家合适的期货经纪公司。因为期货经纪公司是客户和交易所之间的纽带,除了交易所的自营会员外,所有投资者要从事期货交易都必须通过期货公司进行。 合法的期货经纪公司应该在交易现场挂出中国证监会颁发的《期货经纪业务许可证》和国家工商总局颁发的营业执照。并且,期货经纪公司在异地开设的合法的营业部也应该挂出上述证件。如在满足了合法性之外,期货经纪公司的商业信誉如何、能否确保客户的资金安全是重要的条件。一般来说,运作规范、严格遵守不自营规定的期货经纪公司的可靠程度比较高。 除了以上种种,投资者选择期货经纪公司还要看它的硬件和软件设施。比如,期货公司有哪些信息系统、是否开通网上交易、交易速度怎么样、是否有专设的研究咨询部门、手续费的收取标准是否合理等等。 同时,期货交易与股票交易不同,由于它利用保证金“杠杆”交易,风险性远远大于一般投资品种。同时,期货交易需要一定的专业知识,这些条件都要求投资者加强前期知识贮备。 专家建议,初次涉及期货交易的投资者不妨从模拟交易开始。现在,许多期货公司都设有网上模拟交易。通过模拟交易,投资者可以查阅资料,一边学一边交易,这样的做法将使投资者获益匪浅。更多投资交易知识,关注领峰官网:https://www.doczj.com/doc/567309072.html, 以黄金期货投资为例,投资者需要了解黄金的供需情况如何,一些预期的分歧点在哪里,历史上黄金出现过什么情况,各种技术指标有什么确切含义,按这些指标是做空还是多,出现特殊情况该如何处理等等方面。 模拟交易可以帮助投资者尽快熟悉市场,熟悉黄金品种的特性、熟悉相关的交易规则和交易方式。所以,这也是许多初级投资者目前比较接收的一种入门指南。 选定了合适的期货经纪公司,接下来就要办理开户手续了。所谓开户,是指在期货经纪公司开立专门用于期货交易的交易账户,投资者必须以真实身份办理开户手续。 从开户到正式交易,投资者必须配合期货经纪公司完成五个步骤。 第一步,投资者应该详细阅读期货交易风险说明书; 第二步,选择期货交易方式; 第三步,签署期货经纪合同书; 第四步,申请交易编码及确认资金账号;

股指期货基础知识介绍

股指期货基础知识介绍:五类要点需牢记 2010年02月22日06:46上海证券报我要评论(1) 字号:T|T 前言 积极稳妥地发展股指期货等金融期货市场,既是资本市场进一步深入发展的客观需要,也是市场各类投资者进行风险管理的迫切要求。从全球经验来看,股指期货为市场提供了保值避险的工具,增加了做空交易机制,有利于促进股票市场实现健康、持续、稳定发展。构建健康稳定的金融期货市场,离不开成熟理性的市场投资者。为了帮助广大投资者掌握股指期货基础知识与交易规则,了解产品功能及市场特点,中国金融期货交易所推出本期股指期货基础知识专版,供投资者学习参考。有足够知识准备的投资者,才是真正受保护的投资者!希望投资者认真做好知识准备,强化风险防范意识,建立“买者自负”的意识,做一名“知风险、懂规则”的理性投资者。 一、股指期货基础 1、什么是股指期货 期货合约是由期货交易所统一制定的、规定在将来某一特定的时间和地点交割一定数量标的物的标准化合约。这个标的物,又叫基础资产或者标的资产,可以是某种商品,如铜或原油,也可以是某种金融资产,如外汇、债券,还可以是某个金融指标,如三个月同业拆借利率或指数等。如果这个标的物是某个股票价格指数,则该期货就是股票价格指数期货,简称股指期货。 2、股指期货的产生与发展过程 股指期货最早出现于美国市场。20世纪70年代,西方各国出现了经济滞胀,经济增长缓慢,物价飞涨,政治局势动荡,当时股票市场经历了二战后最严重的一次危机,在1973-1974年的股市下跌中道琼斯指数跌幅达到了45%,投资者意识到在股市下跌中没有适当的管理金融风险的手段,开始研究用于规避股票市场系统性风险的工具。1982年2月,美国商品期货交易委员会(CFTC)批准推出股指期货。同年2月24日,美国堪萨斯期货交易所(KCBT)推出了全球第一只股指期货合约——价值线综合指数期货合约;4月21日,芝加哥商业交易所(CME)推出了S&P 500指数期货合约。股指期货一经诞生就受到了市场的广泛关注,价值线指数期货推出的当年就成交了35万张,S&P 500指数期货的成交量更达到了150万张。股指期货的成功,不仅扩大了美国期货市场的规模,也引发了世界性的股指期货交易热潮。成熟市场及新兴市场纷纷推出股指期货交易。目前,全部成熟市场以及绝大多数的新兴市场都有股指期货交易,股指期货成为股票市场最为常见、应用最为广泛的风险管理工具。按照世界交易所联合会的统计,2009

商品期货交易策略的数学模型.

商品期货交易策略的数学模型 摘要 商品期货交易在当前中国的经济体系中占据着很重要的作用,投资者都希望从大量的期货交易中获取一定的利润,但是期货交易作为一种投机行为,交易者置身其中往往要承担很大的风险,本文研究了商品期货交易中的一些问题,给出了获取较大收益的交易方式。 问题一:我们首先利用SPSS中的模型预测方法给出了橡胶期货交易各项指标在9月3号这天随时间推移的波动图,又给出了利用Matlab软件作出的成交价与各个指标的相关性图表。分析所作的图得出的结论是商品期货的成交价与B1价、S1价具有显著相关性,与成交量、持仓增减、B1量、S1量也具有相关性而与总量不具有相关性。最后利用SPSS软件双变量相关分析进一步确认其相关性指标。为了对橡胶期货价格的这些变化特征进行分类,我们作出了成交价19天的波动图,并以持仓量为例分析其他指标的变化特征,将七项指标分成了上涨和周期波动两类。 问题二:本文采用了回归分析的方法建立价格波动预测模型。首先介绍回归分析的基本原理与内容,叙述了回归分析中用到的最小二乘法,之后在第一问的基础上建立回归分析的数学模型,得出函数关系,算得价格的波动趋势并与实际数据对比,再分析模型中的残差数据,验证所建立的回归模型合理性。 问题三:为建立收益最大化的交易模型,本题我们分析价格的波动数据后,借助移动平均线的理论方法,再分析价格的“高位”与“低位”,得出买点卖点。建立交易模型后,利用MATLAB 软件分析出合适的交易时机,并画出图形,利用所给数据根据建立的模型计算收益。 关键词:期货交易波动 SPSS软件回归分析

我国商品期货交易的品种迅速增加,吸引了大量交易者的参与,如何从商品期货的交易中获取相对稳定的收益成为交易者非常关注的问题。商品期货交易实行T+0的交易规则,所开的“多单或空单”可以马上平仓,从而完成一次交易,这样就吸引了大量的投机资金进行商品期货的日内高频交易。某种商品价格在低位时开“多单”,当价格高于开“多单”的价格时平仓,或者,价格在高位时开“空单”,当价格低于开“空单”的价格时平仓,差价部分扣除手续费后就是交易者的盈利;反之则是亏损。 现在题中给出了2012年9月相关商品期货交易的成交数据,让你以所给数据为基础,建立数学模型解决下面的问题: 1、通过数据分析,寻找价格的波动和哪些指标(仅限于表中列出的数据,如持仓量、成交 量等指标)有关,并对橡胶期货价格的波动方式进行简单的分类。(提示:这里的波动方式是指在某一时间段内(简称周期)价格的涨跌、持仓量的增减、成交量的增减等指标的变化特征。周期的选取可以短到几秒钟,长到几十分钟甚至是以天为单位,具体时长通过数据分析确定,较优的周期应该是有利于交易者获取最大的盈利)。 2、在实时交易时,交易者往往是根据交易所提供的实时数据,对价格的后期走势做出预测 来决定是开“多单”还是开“空单”。请在第1问的基础上建立合理的橡胶价格波动预测模型; 3、橡胶期货交易的手续费是20元/手,保证金为交易额的10%,设初始资金为100万。请 利用前面已经得到的相关结果,建立交易模型,使交易者的收益最大; 4、试分析确定合理的评价指标体系,用以评价你的交易模型的优劣。(这一问为选做) 2.模型假设与符号说明 2.1模型的假设 1.由于题中所给指标外的其他因素对期货价格波动影响较小,可以忽略,认为价格的波动只受所给指标影响。 2.假设所给的19天的数据能准确反映期货交易中出现的各种变化特征情况。 3.假设不考虑交易模型中交易者的主观因素。 2.2符号说明 B1价指的是买1价、B1量是指买1量、S1价指卖1价、S1量指卖1量。在问题二的回归分析中,x1指成交量,x2指总量,x3指属性,x4指b1价,x5指s1价,x6指b1量,x7指s1量。

黄金、外汇、期货交易基础知识

黄金、外汇、期货交易基础知识手册 第一伦敦现货黄金篇: 一、黄金交易基本知识 伦敦金的交易额以100盎司为单位,交易以100盎司或其倍数为交易单位,最少交易量为100盎司(一合约单位),1盎司=31.1035克。 黄金最小变动单位:0.1美元/盎司 每日结算:结算时间为每日凌晨03:00 (美国冬令时间为04:00),结算期间电子交易平台会暂停交易三十分钟。 利息计算:所有持仓在每日结算时计算利息,如卖出3手现货黄金对美元合约,于持仓一个月(30天)才平仓,则利息计算过程如下: 收市结算价:$1100/盎司 利率: 4.0%年利率 合约单位: 100盎司 利息收入: ($1100 * 100) * 4.0% / 360 * 30 * 3 =$1099.99(此为利息收入,因为卖出1个合约伦敦金,相当于贷出1个合约伦敦金的数额,那么每日贷出资金有利息收入;如果是买入黄金,相当于借入资金,那么每日需要支付利息) 二、伦敦金盈亏计算 (卖出价–买入价)* 合约单位* 合约数量+/- 利息–手续费= 盈亏 交易:某客户在$1180.10价格上卖出3手黄金,二日后以$1150.10平仓。 盈亏计算:$(1180.10 – 1150.10) * 100 * 3 = $9,000 (不计利息和手续费)三、伦敦金交易时间 以下为北京时间,伦敦纽约市场冬令时后延一小时: 悉尼07:00-14:00 东京08:00-14:00 香港09:00-16:00 新加坡09:00-16:00 伦敦15:30-23:30 苏黎世15:00-23:00 纽约20:20-03:00 伦敦黄金市场定盘 上午定盘17:30(夏令) 18:30(冬令) 下午定盘22:00(夏令) 23:30(冬令) (每年10月的最后一个星期日凌晨2时起实施冬令时间;4月的第一个星期日凌晨2时起,恢复夏令时间) 第二外汇交易篇 一、交易报价

期货程序化交易

1.什么是程序化交易? 程序化交易是交易员根据自己的交易思想,借助市场技术指标,将进场条件和离场条件定量化,形成交易模型。再将交易模型编写成计算机程序,当价格的变化满足预设条件时,由计算机自动激发买入或卖出信号。 2.程序化交易相对于一般交易有哪些特点,其主要解决哪些问题? 凡是交易决策和交易执行过程中的一切环节是程序化的,机械的就是程序化交易。一般来说,程序化交易是指利用计算机语言将人的交易策略和思想编辑成交易模型,当交易模型中设定的买卖条件被满足后,由计算机程序自动发送下单指令完成交易。 程序化交易并不是和计算机必然联系的,它指的是一种交易的决策和执行方式,与它相对应的是主观交易。即使交易决策是基本面分析,交易执行是人工手动下单,但整个流程都是程序化的,那么也属于程序化交易或系统化交易。具体的程序化交易如何进行,取决于投资者自身交易策略的需要。 程序化交易的特点和优势:首先是“死的”不是“活的”。这种客观的,机械的交易决策和执行方式排除了人在交易中的非理性的感情因素,解决了交易中的纪律性问题。这也是程序化交易取得成功的关键。其次是可以做到“心中有底”,而不是交易中人们时常感觉的“没底”。程序化交易的策略具有可验证性,由于交易策略是定量的,因此每一种策略在使用前都可以运用科学方法对其进行历史或实盘的效果测试,做到在正式投入使用前定量地掌握该交易策略的收益、风险对应的概率。不理想的话就重新设计直到认同。

每一个市场参与者都有自己的交易策略,和自己的交易纪律性。让交易策略或计划更科学,更符合客观实际;让充分准备的计划被严格的执行,就是程序化交易主要解决的问题。 3.假设一种程序化交易方式被众多投资者竞相使用,会不会带来程序失效?作为程序化交易的设计者,应如何避免这一类问题? 这要看具体的交易策略。按交易策略可以分为高频交易,趋势性交易,统计套利交易等若干种,他们都采用的是程序化交易的方式。其中一些持仓时间周期短的策略如短期套利交易会出现用的人越多越不利的问题。而人多对趋势交易则没有影响。 如果是短周期交易者的话不能避免这一类问题,只能力争在竞争中取胜。这就需要提高自己交易模型的科学性和自己的交易科技,也就是计算机技术支撑。 4.华西期货从什么时候开始尝试程序化交易,资金量有多大?是不是国内所有的商品期货品种都可以利用程序化交易?在哪种市场环境下,程序化交易的作用可以发挥到最大? 华西期货从2008年8月开始引入程序化交易。现在,程序化交易客户的交易量占华西期货总交易量的60%。 所有期货品种以及股票都可以进行程序化交易,它是一种交易方式。至于有些品种是否适合某些交易策略则要具体分析。

期货入门基础知识视频

期货入门基础知识视频 1、只用你赔得起的钱: 如果以家计中的资金来从事期货商品投资,那注定要失败的,因为如此,你将不能从容运用 心智上的自由作出稳健的买卖决定。期货商品买卖的成功要素之一,就是心态独立;也就是说:“买卖的决定,必须不受赔掉家用钱的恐惧感所左右。” 2、认识自己: 你必须具有冷静客观的气质,控制情绪的能力,并且在持有一笔买卖合约时不会失眠。虽然这种功夫能够训练出来,但成功商品买卖者似乎向来就能在交易进行当中处之泰然。“在期货商品市场中,每天都有许多令人激奋的事情发生,所以你必须要有决断的心态,有能力应付市场短期的状况,不然你会在短短几分钟之内,数度改变你的心意和合约方向。” 3、资金不要投入超过1/3: 最好的方法,就是你的交易资金常保持三倍于持有合约所需的保证金。为了遵循这个规则,必要时减少合约口数也无妨。这个规则可帮助你避免用所有的交易资金来决定买卖,有时会被迫提早平仓,但你会因而避免大赔。 4、交易判断不要建立在希望上: 不要太过希望立刻有所进展,否则你会根据希望进行买卖。成功者能够在买卖中不受情绪影响。“虽然在生活的其它领域中希望是一种美德,但在期货商品买卖中,它却会成为真正的障碍。”一个新手盼望市场会转变成对他有利时,往往会违反基本的买卖规则。 5、要有适当的休息:

每天买卖会使判断力钝化。休息一下,你会对市场有一个较为超然的看法;它还会帮你以另一个心境来看自己以及下一个目标,使你有一个更好的视野来观察市场诸多因素。 6、赚钱合约不轻易平仓,要让利润持续: 将赚钱的合约卖出,可能是导致商品投资失败的原因之一。“只要有钱赚,就不会破产”的口号将不适用于商品投资。其理由为:假如你不能让利润继续滋长,则你的损失将会超过利润把你压垮。成功的交易者说,不可只为了有利润而平仓;要结掉一个赚钱的合约,你必须有个理由。 7、学着喜爱损失: “学着喜爱损失,因为那是商业的一部份。如果你能心平气和地接受损失,而且不伤及你的元气,那你就是走在通往商品投资的成功路上。”在你成为一位买卖好手之前,务须去除你对损失的恐惧感。 8、避免以市价进出: 成功的交易者认为,依市价买卖是缺乏自律功夫表现,除非是要平仓才用市价买卖,否则“你应朝着尽量不用市价单的目标走。

程序化初级交易模型总结

阶段涨幅:(CLOSE-REF(CLOSE,N)/REF(CLOSE,N); 再创新高:HIGH=HHV(HIGH,N); 放量上攻:CLOSE/REF(CLOSE,5)> &&VOL>MA(VOL,5)*3; 窄幅整理:(HHV(CLOSE,20)-LLV(CLOSE,20))/CLOSE,; 均线多头排列:MA(CLOSE,5)>MA(CLOSE,10) && MA(CLOSE,10)>MA(CLOSE,20);前期高点及其位置:HHV(HIGH,20) HHVBARS(HIGH,20); 60天前到40天前的最高价格: REF(HHV(HIGH,20),40) 动态平均EMA(X,N) SMA(X,N,M) SMA(CLOSE,VOL) 点到面转化 COUNT SUM HHV LLV 面到点转化 CROSS 线性回归 SLOPE(CLOSE,10)/REF(CLOSE,10)>; 之字转向 PEAK TROUGH PEAKBARS TROUGHBARS 大阳线 LOW=OPEN &&CLOSE=HIGH&&CLOSE/OPEN>; 穿头破脚 C/O> &&OPENREF(OPEN,1); 吊颈 O=H && (OPEN-CLOSE)/(HIGH-LOW)<1/3 && (HIGH-LOW)/HIGH>; 低开大阳线 OPEN ; 跳空缺口 LOW>REF(HIGH,1) && LOW/REF(HIGH,1)>;

MA普通金叉 CROSS(MA(CLOSE,5),MA(CLOSE,10)) && MA(CLOSE,5)>MA(CLOSE,10) && MA(CLOSE,10)>MA(CLOSE,20) 3条均线多头排列持续3天CC:= MA(CLOSE,5)>MA(CLOSE,30) && MA(CLOSE,10)>MA(CLOSE,30); EVERY(CC,3)=1 ; 均线死叉 CROSS(MA(CLOSE,10),(CLOSE,5)); 当日成交量放大2倍的金叉 CROSS(MA(CLOSE,5),MA(CLOSE,10)) && VOL/REV(VOL,1)>2 KDJ指标RSV:=(CLOSE-LLV(LOW,N1))/(HHV(HIGH,N1)-LLV(LOW,N1))*100; K:=SMA(RSV,N2,1); D:=SMA(K,N3,1); 综合判断条件 CROSS(K,D)&&D ; RSI指标N1[ N2[ := REF(CLOSE,1); RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100; RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100; WR指标N[ 综合判断条件 CROSS(WR,80) CROSS(WR,20) MACD指标L1[ L2[ L3[ DEA:EMA(DIFF,L1); MACD:2*(DIFF-DEA),COLORSTICK;

期货新手入门手册

期货新手入门手册 (一)期货专有名词释义 熊市:处于价格下跌期间的市场。 牛市:处于价格上涨期间的市场。 套利:一种交易技术,即在某市场买进现货或期货商品,同时在另一个市场卖出相同或类似的商品,并借两个交易产生的价差而获利,叫做跨市套利。此外,还有跨期套利、期现套利等。 投机:为获取大量利润进行风险性买卖,不是为了避险或投资。 期货合约:由交易所统一制定的、规定在将来某一特定的时间和地点交割一定数量标的物的标准化合约。 保证金:期货交易者按照规定标准交纳的资金,用于结算和保证履约,一般为合约价值的10%—15%。交易所和期货公司有权调整保证金的收取比例。 开盘价:某一期货合约开市前五分钟内经集合竞价产生的成交价格。集合竞价未产生成交价格的,以集合竞价后第一笔成交价为开盘价。 开盘集合竞价:在某品种某月份合约每一交易日开市前5分钟内进行,其中前4分钟为期货合约买、卖指令申报时间,后1分钟为集合竞价撮合时间,开市时产生开盘价。 收盘价:某一期货合约当日交易的最后一笔成交价格。 结算价:某一期货合约当日成交价格按照成交量的加权平均价。当日无成交的,以上一交易日的结算价作为当日结算价。

最小变动价位:某一合约的单位价格涨跌变动的最小值。 持仓量:期货交易者所持有的未平仓合约的双边数量。 开仓:交易者新买入或新卖出一定数量的期货合约,也称为“建仓”。与股票市场不同,期货实行双向交易,既可以先买入也可以先卖出。买入期货合约后持有的头寸成为多头头寸,简称“多头”。卖出期货合约后持有的头寸成为空头头寸,简称“空头”。 平仓:投资者建仓后,可选择在合约到期日前通过一笔数量及交割月份相同、方向相反的同品种期货合约来冲销原有的期货合约,以此完成期货交易的行为。期货是T+0交易方式,日内随时可以平仓。 强行平仓:当投资者违反《期货经纪合同》和交易所相关业务规定时,交易所及会员对其违规持有的相关合约持仓予以平仓的强制措施。 限仓:交易所规定会员或投资者可以持有的,按单边计算的某一合约投机头寸的最大数额。套期保值头寸实行审批制,不受限仓数量限制。

期货程序化交易策略研发

.. .. .. 期货程序化交易策略研发 .专业资料.

.. .. .. .专业资料. 摘要 期货程序化交易起源于欧美国家,随着计算机技术的发展,程序化交易得到了快速的发展。程序化交易主要通过阿拉法模型、交易成本模型和风险控制模型三个模型构成,通过对历史数据的分析寻找阿拉法策略,通过多策略组合实现能够收益稳定回撤可控的程序化策略组。本文主要是通过对程序化交易各个环节的特点进行剖析,实现通过数量模型就能稳定盈利的方法。 关键词:阿拉法模型,交易成本模型,风险控制模型,数据,多策略组合

.. .. .. .专业资料. Abstract Futures program trading originated in Europe and the United States, with the development of computer technology, program trading has been rapid development. Program trading is mainly constituted by alpha model, transaction cost model and risk control model of three model, by finding the Alpha strategy for the analysis of historical data, the combination of strategies can yield stable retracement controllable program strategy group. This paper is mainly through the analysis of characteristics of every part of the transaction on the program, through the method of quantitative model can stable profit. Key Words:Alpha model, Transaction cost model, Risk control model, Data, Multiple strategies

文华程序化交易说明文档

国海良时期货 文华财经 程序化交易系统 使用说明书

程序化交易是一种在计算机和网络技术的支持下,瞬间完成你预先设置好的组合交易指令的一种交易手段。您可以将您的交易思路,通过文华提供的函数、语法及编辑平台,编写成交易模型,实现自动开仓、自动止损、自动止赢。程序化交易在投资实战中不仅可以提高下单速度,而且可以帮助投资者在交易过程中避免受到情绪波动的影响,实现理性投资。 Mytrader2009的程序化交易功能在Webstock2008的基础上增加了追踪止损功能、在全自动状态下系统默认按照最后的信号方向执行,解决了交易指令消失不做任何处理的问题、使用算法交易确保下单成交、并且升级了效果测试和参数优化的功能,使程序化交易又前进了一步,让投资更加的轻松和快乐。 启动程序化交易进行自动交易 打开交易软件,输入账号和密码 启动自动交易模型,选择模型后点击加载或新建模型。

使用算法交易 可以选择是否启用“追价下单”“分批下单”“超价下单” 追价下单: 如果下单没有成交,可以设置追价下单,单子在几秒钟之内没有成交,系统会自动撤单并按市场最新价追价下单,直至预设手数全部成交(也可设置追价范围,防范风险)。(模型触发、价格价格条件单、画线条件单都可以支持追价下单)

分批下单: 如果下单手数过大,启动分批下单,系统会根据默认的分批下单手数,将总手数分批下单超价下单:在市价基础上调整[ ]最小变动价位,以提高成交几率。 算法交易参数的设置 点击图中程序化交易窗口的红色方框可以对算法交易功能进行设置 在下图中对算法交易参数进行设置

“程序化交易自动下单”的其他设置说明: “按市价下单,下单手数” :模型每次下单的数量 “只进行多头交易”:选择此项设置后,模型自动过滤掉卖开和买平的交易指令,只进行多头交易。 “只进行空头交易”:选择此项设置后,模型自动过滤掉买开和卖平的交易指令,只进行空头交易。 “双向交易”:选择此项设置后,模型可以发出买开、卖平、卖开和买平指令,进行双向交易。 “下单方式”:可以选择全自动(不需要确认)、半自动(需要确认)或者只显示信号。 “信号确认”:可以设置信号出现后几秒钟发出委托。 在全自动状态下,系统默认使用“程序化交易按最后信号方向执行”来解决指令反复的问题,设置如下图:

期货交易基础

期货交易基础 什么是期货: 期货与现货相对。期货是现在进行买卖,但是在将来进行交收或交割的标的物,这个标的物可以是某种商品例如黄金、原油、农产品,也可以是金融工具,还可以是金融指标。交收期货的日子可以是一星期之后,一个月之后,三个月之后,甚至一年之后。买卖期货的合同或者协议叫做期货合约。买卖期货的场所叫做期货市场。期货(Futures)与现货相对。 期货是现在进行买卖,但是在将来进行交收或交割的标的物,这个标的物可以是某种商品例如黄金、原油、农产品,也可以是金融工具,还可以是金融指标。交收期货的日子可以是一星期之后,一个月之后,三个月之后,甚至一年之后。 买卖期货的合同或者协议叫做期货合约。买卖期货的场所叫做期货市场。投资者可以对期货进行投资或投机。对期货的不恰当投机行为,例如无货沽空,可以导致金融市场的动荡。 期货交易分类:商品期货、金融期货 商品期货又分工业品(可细分为金属商品(贵金属与非贵金属商品)、能源商品)、农产品、其他商品等。 金融期货主要是传统的金融商品(工具)如股指、利率、汇率等,各类期货交易包括期权交易等。 商品期货 农产品期货:如棉花、大豆、小麦、玉米、白糖、咖啡、猪腩、菜籽油、棕榈油。 金属期货:如铜、铝、锡、铅、锌、镍、黄金、白银。 能源期货:如原油、汽油、燃料油。新兴品种包括气温、二氧化碳排放配额、天然橡胶。 金融期货

股指期货:如英国FTSE指数、德国DAX指数、东京日经平均指数、香港恒生指数、沪深300指数 利率期货: 所谓利率期货是指以债券类证券为标的物的期货合约, 它可以回避银行利率波动所引起的证券价格变动的风险。利率期货的种类繁多,分类方法也有多种。通常,按照合约标的的期限, 利率期货可分为短期利率期货和长期利率期货两大类类 外汇期货: 外汇期货,又称为货币期货,是一种在最终交易日按照当时的汇率将一种货币兑换成另外一种货币的期货合约。一般来说,两种货币中的一种货币为美元,这种情况下,期货价格将以“x美元每另一货币”的形式表现。一些货币的期货价格的表示形式可能与对应的外汇现货汇率的表示形式不同。 期货交易八大制度 ● 1.保证金制度 在期货交易中,任何交易者必须按照其所买卖期货合约价值的一定比例(通常为5-10%)缴纳资金,作为其履行期货合约的财力担保,然后才能参与期货合约的买卖,并视价格变动情况确定是否追加资金。这种制度就是保证金制度,所交的资金就是保证金。保证金制度既体现了期货交易特有的“杠杆效应”,同时也成为交易所控制期货交易风险的一种重要手段。 ● 2.每日结算制度 期货交易的结算是由交易所统一组织进行的。期货交易所实行每日无负债结算制度,又称“逐日盯市”,是指每日交易结束后,交易所按当日结算价结算所有合约的盈亏、交易保证

期货程序化自动交易教程

期货程序化自动交易教程 自动化交易教程 历经16年金融风雨,经历了全球市场所有商品的真实磨练 准确、迅速、无所不能是投资家的目标 自动化交易教 程 ..................................................................... ............ 错误~未定义书签。 1. 把交易思路告诉计算机 --- 交易公式的创造 ......................... 错误~未定义书签。 2. 让公式跑起来 --- 组装交易策略........................................... 错误~未定义书签。 3. 多种入仓方式 --- 灵活使用先进的武器 ................................ 错误~未定义书签。 入仓...................................................................... ............... 错误~未定义书签。 出仓...................................................................... ............... 错误~未定义书签。 4. 各取所需 --- 价位驱动和时间驱 动 ....................................... 错误~未定义书签。 5. 不可或 缺的所见所得的创作手段 --- 仿真测试...................... 错误~未定义书签。 6. 图形化交易 --- 手工和自动的完美结合,让机器完成团队的工作错误~ 未定义书签。

期货交易模型编写经典教程

一、程序化交易的编写 ㈠、交易模型编写规范和一般原则 1、编辑平台支持的操作符 操作符意义例 CLOSE+OPEN 表示求收盘价及开盘价的+加法 和。 CLOSE-OPEN 表示求收盘价及开盘价的-减法 差。 CLOSE*OPEN 表示求收盘价及开盘价的* 乘法 积。 CLOSE/OPEN 表示求收盘价及开盘价的/ 除法 商。 AND 与(并且),也可简写为&& OR 或(或者), 也可简写为|| CLOSE>OPEN 表示判断当前周期是否收> 大于 阳。 CLOSE=OPEN 表示判断当前周期是否平< 小于 盘。 >= 大于等于 <= 小于等于 <> 不等于 = 等于

:= 只定义一个局部变量 (这个变量在画图时是不画的) TMP1:=(OPEN+CLOSE)/2; :MA(TMP1,10); 上面的公式的第一个语句定义了一个局部变量TMP1,在下面一行中引用了这个局部变量,但是要注意的是这个公式在画图的时候只画了第二条语句MA10所求出的结果。相反下面这个公式则需要画出两条线,第一条是自己定义的均价线,同时显示了均价的名称为A VP,第二条线是均价的简单移动平均线。 A VP:(OPEN+CLOSE)/2; MA(A VP,10); :声明了一个变量, 在画图时画出它并且按这个名字显 示。 2、编辑平台支持的函数 ⑴引用数据 A VPRICE 引用均价(在盘后对于国内三个期货交易 所指结算价) SETTLE 引用结算价(只有在日线周期盘后才能引 用当日的结算价) CLOSE 引用收盘价(在盘中指最新价),也可简写 为 C HIGH 引用最高价,也可简写为H 。 LOW 引用最低价,也可简写为L 。 OPEN 引用开盘价,也可简写为O 。 OPI 引用持仓量 REF(X,N) 引用X在N个周期前的值 例:REF(CLOSE,5);表示引用当前周期前 第5个周期的收盘价 REFX(X,N) 引用N个周期后的数据。(N为大于等于 1的整数)『未来函数』 例:REFX(CLOSE,5);表示引用自当前周 期后第5个周期的收盘价

从一无所知开始学习交易开拓者(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));

相关主题
文本预览
相关文档 最新文档