设为首页收藏本站

 找回密码
 注册
查看: 13211|回复: 16
打印 上一主题 下一主题

A_SendOrder的用法? [复制链接]

Rank: 7Rank: 7Rank: 7

精华
0
UID
938
积分
3765
帖子
295
主题
42
阅读权限
80
注册时间
2007-12-18
最后登录
2017-9-3
跳转到指定楼层
1#
发表于 2008-2-26 11:29:13 |只看该作者 |倒序浏览
A_SendOrder 和 Buy 、SellShort 的比较
1、他们有何异同,适用的场合分别是什么?
2、在同样适用的场合,他们的优缺点分别是什么?
3、A_SendOrder的运行机制是什么?
谢谢

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25132
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
2#
发表于 2008-2-26 12:00:31 |只看该作者
直接用来发单,调用一次就会发一次单。
不是用来进行测试的,并且不会再图上有任何显示,需要自己来控制重复发单。
Buy,SellShort用来测试并自动交易。
A_SendOrder只是用来交易,完成最后的发送动作。
交易开拓者 - 期货程序化与量化系统自动交易领航者

网站已支持在线开通模拟账户功能

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
938
积分
3765
帖子
295
主题
42
阅读权限
80
注册时间
2007-12-18
最后登录
2017-9-3
3#
发表于 2008-2-26 13:48:05 |只看该作者
1、也就是用A_SendOrder来交易可以不用考虑帐号不同步的问题?
2、如果只用A_xxxx函数来构建交易系统,不测试,性能如何?A_xxxx中那些函数查询较快,那些较慢,在查询频率上,有什么建议?
谢谢

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2008-2-26 14:21:00 |只看该作者
1、用A_SendOrder就是建立在理论基础上已经成立的情况下,直接进行交易。这个时候已经不存在模拟测试的帐户了,自然没有同步的问题。
2、性能当然会更好,但是取持仓数量,查询持仓状态等函数都有一个返回时间的问题,建议两次交易的间隔时间至少大于3秒。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
938
积分
3765
帖子
295
主题
42
阅读权限
80
注册时间
2007-12-18
最后登录
2017-9-3
5#
发表于 2008-2-26 15:40:48 |只看该作者
原帖由 nopain 于 2008-2-26 14:21 发表
建议两次交易的间隔时间至少大于3秒


1、两次交易的间隔是指两个函数执行的间隔,还是因tick触发而代码执行的间隔?在一段代码内会多次用到A函数的。
2、如果间隔时间换成Tick次数,代码段(一次交易基本包含的头寸、资金判断函数)执行的间隔是多少?
3、因函数执行返回延时,而新的Tick又到来,这时如何处理?是等待函数返回再处理新的Tick?还是中断先前的处理,直接处理新的Tick?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
6#
发表于 2008-2-26 16:45:51 |只看该作者
1、公式的执行由Tick触发,来一个Tick就会执行一次代码,执行一次代码就可能会调用一次A_SendOrder,所以,必须用全局变量来控制开仓数量,否则会出现重复发送委托。
2、一般来说,行情更新时公式的执行大概耗时10-20ms,Tick的产生频率>200ms。所以一般不会出现堵塞的情况,假设出现了,会等上一次执行完成后再执行新的Tick。
3、上面说的3秒钟的间隔,主要原因是,发送一笔委托到柜台,然后柜台返回状态到客户端,公式能够正确取到该状态,这个时间大概在1,2秒。所以3秒钟的间隔基本上可以保证状态更新。
如果小于3秒钟,就可能出现以下问题:
    1。开仓后,3秒内平仓。此时,找不到可平的持仓。
    2。想要撤单,但委托状态还没有收到,不能马上撤单。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
938
积分
3765
帖子
295
主题
42
阅读权限
80
注册时间
2007-12-18
最后登录
2017-9-3
7#
发表于 2008-2-27 10:13:02 |只看该作者
一般来说,使用A_SendOrder之前,会有交易信号,接着判断头寸和资金。这个应该和使用buy一样的。可能区别在于,当barstatus=2时,信号反复出现和消失,Buy只会下一个单,而A_SendOrder会不停地下单,这也许就是你们说的“谨慎使用”的原因吧。

我就是担心反复查询头寸和资金,造成堵塞,所以想人为地控制查询的频率。使用CurrentTime或Tick计数来控制查询间隔,如何?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
8#
发表于 2008-2-27 10:39:21 |只看该作者
1、是的,您的理解是正确的。
2、用CurrentTime不是一个好方法。可以用Tick计数的方法,我们现在也就是这么用的。

做一个Counter,用了A_SendOrder发送后。把Counter=0;然后来一个Tick,Counter=Counter+1;
当Counter>=5才可以进行查询或交易。
Counter要用序列变量或全局变量来实现。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
938
积分
3765
帖子
295
主题
42
阅读权限
80
注册时间
2007-12-18
最后登录
2017-9-3
9#
发表于 2008-2-27 14:38:54 |只看该作者
我越来越倾向于编写单独用于交易的代码,与测试的代码分开。
在日内高频交易中,保持帐户头寸一致,太麻烦了。
只是,在测试中不能完全反映实战交易的真实价位情况,在日内中,结果差别很大。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
10#
发表于 2008-2-27 14:41:44 |只看该作者
您可以先测试好一个交易系统,如果证明是可行的,然后再将代码转换为直接执行的。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-19 03:30

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部