Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]求助撤单挂单的代码

1楼
ebpart 发表于:2020/1/15 14:47:08
求大神/版主帮我写一段后台代码:

当没有仓位的时候,市价买入多单,然后在1000限价挂单卖出平仓,假设2分钟后没有成交,撤单,然后在900限价挂单卖出平仓,然后2分钟没成交,撤单,挂800限价卖出平仓。(备注:使用1分钟K线)

我现在实现的时候,撤单可以撤成功,但是新开的限价单,也会立即被撤单。
2楼
FireScript 发表于:2020/1/15 14:49:44
 你是不是撤单的方向指定有问题。通常你撤平仓单,不会把开仓的撤掉,除非你指定的方向是全部方向单子。

[此贴子已经被作者于2020/1/15 14:49:54编辑过]
3楼
ebpart 发表于:2020/1/15 15:16:18
我描述错了,重新写个条件:

当没有仓位的时候,市价买入多单,然后在1000限价挂单卖出平仓,假设某根K的开盘价小于800的时候,还没有成交,撤单,然后在900限价挂单卖出平仓。

这种情况下,就会出现新的挂单被撤。

我追踪记录,会出现,新的900的限价单挂出来后,因为撤单条件在K线走完前,仍然还是满足的,然后新的挂单被撤销了。但是900限价挂单,只能执行一次,并不会再次执行。

也就说,TCANCAL可以多次执行,挂单卖出平仓只能执行一次。最后的结果是新挂单也被撤销了。(刚刚那个超时撤单,因为新挂单后超时条件不会一直满足了,所以倒是没问题)
4楼
FireScript 发表于:2020/1/15 15:33:07
 能否提供下你这部分的代码。在原先代码上进行校正会比较方便点。也能让我们更容易明确你的思路里面的细节。
5楼
ebpart 发表于:2020/1/15 15:33:18
备注:我这个只是特地弄个例子简单化描述

在我这个例子里,我知道可以通用全局变量来控制,比如,在900限价单挂单后设置一个全局变量为1,撤单条件增加全局变量检测,如果为1则不再进入撤单代码。

但是这样,在接下来的运行里,撤单条件不能再重复使用了
6楼
ebpart 发表于:2020/1/15 15:34:42
以下是引用FireScript在2020/1/15 14:49:44的发言:
 你是不是撤单的方向指定有问题。通常你撤平仓单,不会把开仓的撤掉,除非你指定的方向是全部方向单子。

[此贴子已经被作者于2020/1/15 14:49:54编辑过]

我撤平仓单,新开的也是平仓单,变一下价格
7楼
FireScript 发表于:2020/1/15 15:48:07
 那行。目前具体代码可能需要盘中我这边一遍测试一遍处理。有需要进一步了解的我会跟帖咨询你的。
8楼
ebpart 发表于:2020/1/15 15:55:15
当没有仓位的时候,市价买入多单,然后在1000限价挂单卖出平仓,假设某根K的开盘价小于800的时候,还没有成交,撤单,然后在900限价挂单卖出平仓

然后:假设某根K的开盘价小于800的时候,还没有成交撤单


难点是:这个撤单条件,我需要重复使用,所以不能说只撤单一次,就不再使用。而是撤单完后,在下一根K线,还要使用
9楼
FireScript 发表于:2020/1/15 16:05:17
 撤单的控制条件是未成交时间还是价格,还是说2个综合的。
10楼
FireScript 发表于:2020/1/16 9:48:44
 你可以这样做。你要做的其实就是限制撤单条件在一个K上不要重复触发以避免对新开的平仓单也执行撤单。
你可以这样:
if barpos>extgbdata('t') and  撤单条件 then //用超全局变量记住barpos
begin
    //这里写撤单语句
extgbdataset('t',barpos);//重置超全局变量
end

第一种方式有一点不好,就是那个超全局变量下次运行程序化时候 上次的值还保留着,所以需要手动清除下。
[此贴子已经被作者于2020/1/16 9:59:11编辑过]
共11 条记录, 每页显示 10 条, 页签: [1] [2]


Powered By Dvbbs Version 8.3.0
Processed in 0.05078 s, 3 queries.