设为首页收藏本站

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

关于平仓后立刻开多仓的执行速度 [复制链接]

Rank: 3Rank: 3

精华
0
UID
1563
积分
167
帖子
36
主题
14
阅读权限
40
注册时间
2008-4-30
最后登录
2008-6-3
跳转到指定楼层
1#
发表于 2008-5-30 20:07:39 |只看该作者 |倒序浏览
我需要让程序判断条件成立,平掉所持有空仓并马上开多仓,运行在tick周期上,请问下面三种方式那种速度最快,并保证正确
执行。
1。
  1.                                 If(....)
  2.                 {       
  3.                 .....
  4.                 Temp_SellPosition=A_SellPosition();
  5.                 If(Temp_SellPosition>0)                                                                                                                                                                                                                                                                                                       
  6.                 {
  7.                         A_SendOrder(Enum_Sell,Enum_Exit,Temp_SellPosition,Close );
  8.                 }
  9.                 A_SendOrder(Enum_Buy,Enum_Entry,InitLots,Close );
  10.                 .....
  11.                 }
复制代码


2。
  1.                 If(....)
  2.                 {       
  3.                 .....
  4.                 BuyToCover(0,Close);
  5.                 Buy(InitLots,0);       
  6.                 ......
  7.                 }
复制代码


3。
  1.                 If(....)
  2.                 {       
  3.                 .....
  4.                 Buy((InitLots,0);
  5.                 .....
  6.                 }
复制代码

现在用的是第1种,但终是不能正确地平仓,跟踪发发出的指令不正常。是否是因为A_SellPosition()查询占用了时间)

BuyToCover和Buy运行的过程是否和第一种不同,不需要查询返回持仓量,而是直接提交到你们的服务器端执行,第二种方式这两个指令连在一起是否会出现问题
因为BuyToCover平掉所有的空仓位,而Buy会从复平掉所有的空仓位这部分动作,是否有问题。还是会忽略掉后面buy发出的平仓部分指令

第三种方式如何控制平仓的价格和开仓的价格,因为希望可以保证平掉所有的空仓位,价格要设很高,但开多仓要限定价格。




还有我下面的代码有错误吗?总是不能达到预期的效果。希望的效果是,第一次的运行初始化,平掉之前所有的持仓,但log文件中没有出现平仓的纪录(成功还是不成功都没有),而后面的初始化纪录有。但可以肯定地是由持仓,按理应该要执行的,不管成功与否。

跟踪了一下,发现A_BuyPosition()会返回无效的值InvalidNumeric,是因为选的周期太小,而A_BuyPosition()有延时的原因吗?

  1.                                                。。。。。。。。
  2.                                 Temp_BuyPosition=A_BuyPosition();                        //平掉前一天持有的多单
  3.                         If(Temp_BuyPosition>0)                                                                                                                                                                               
  4.                         {
  5.                                 If(A_SendOrder(Enum_Buy,Enum_Exit,Temp_BuyPosition,close )
  6.                                 {
  7.                                         FileAppend("C:\\chushihua.log",TimeToString(Ctime)+"平掉前一天持有的多单");
  8.                                 }Else
  9.                                 {
  10.                                         FileAppend("C:\\chushihua.log",TimeToString(Ctime)+"平掉前一天持有的多单 不成功");
  11.                                 }
  12.                                 Return;                                                                                                     //反复执行直到前一天持有的多单全部平掉
  13.                         }
  14.                         FileAppend("C:\\chushihua.log",DateToString(Date)+"   "+TimeToString(Ctime)+"  每天一次的初始化");
复制代码

[ 本帖最后由 soro 于 2008-6-1 11:45 编辑 ]

Rank: 3Rank: 3

精华
0
UID
1563
积分
167
帖子
36
主题
14
阅读权限
40
注册时间
2008-4-30
最后登录
2008-6-3
2#
发表于 2008-6-1 09:16:40 |只看该作者
顶上去。。。。。。。。。

使用道具 举报

Rank: 1

精华
0
UID
255987
积分
11
帖子
8
主题
3
阅读权限
10
注册时间
2017-8-25
最后登录
2018-6-25
3#
发表于 2018-6-25 10:31:58 |只看该作者
楼主这个问题解决了吗

使用道具 举报

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

bottom

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

GMT+8, 2024-5-20 06:25

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部