金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 188|回复: 6

指令冲突,请帮我优化完善下代码

[复制链接]

50

主题

238

帖子

238

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
发表于 2025-9-30 10:36 | 显示全部楼层 |阅读模式
多头时间止盈价:=TORDERPRICE( 1,1) +N*MINDIFF;

TSELL(  (TBUYHOLDINGEX('' ,'' ,2 )-TGLOBALSUBMITEX(2,'' ,'',0 ))>=SS AND (TBUYHOLDINGEX('' ,'' ,2 )-TGLOBALSUBMITEX(2,'' ,'',0 ))<=10*SS AND TORDERPRICE( 1,1)>0 AND T1 AND (TGLOBALSUBMITEX(2,'' ,'',1 )>=2 OR TGLOBALSUBMITEX(2,'' ,'',1 )=0),SS,LMT,多头时间止盈价);

globalvariable:mark1:=0,mark2:=0;

//总亏损风控

if  TACCOUNT(26)-TACCOUNT( 6)>5000*N   and tbuyholdingex('','',2)>0  and mark2=0 AND TGLOBALSUBMITEX(2,'' ,'',1 )>=1 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark2:=1;           
end

//确保完全撤单后再执行平仓
if mark2=1 and tbuyholdingex('','',1)>0   then
begin
tsell(1,0,mkt);
end

if TIME=151450  then
begin
mark2:=0;
end

//止损平仓


if CROSS(止损价,L)AND NOT(跨期多头) AND todaybar>30 and tbuyholdingex('','',2)>0  and mark1=0  AND TGLOBALSUBMITEX(2,'' ,'',1 )>=1 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark1:=1;           
end

//确保完全撤单后再执行平仓
if mark1=1 and tbuyholdingex('','',1)>0   then
begin
tsell(1,0,mkt);
mark1:=0;
end
以上撤单止损代码实际运行过程中会因为平仓信号TSELL会在撤单后的第一时间就马上挂单出去,导致止损不彻底,会有一张单子没有办法止损,要如何解决呢?该指令是成交驱动型的高频下单,没有遇到撤单情况需要第一时间挂单出去,但是遇到撤单可否延迟几秒钟再挂单,让止损可以优先执行呢?

回复

使用道具 举报

3

主题

903

帖子

944

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2025-9-30 13:12 | 显示全部楼层
劳烦您把遇到的现象再具体描述下。
回复

使用道具 举报

50

主题

238

帖子

238

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-9-30 13:26 | 显示全部楼层
admin 发表于 2025-9-30 13:12
劳烦您把遇到的现象再具体描述下。

撤单后挂单平仓指令会比市价止损指令先发出去,导致全部止损失败,只有部分止损,实际有一张单还是按照原来的价格而不是市价挂出去

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

3

主题

903

帖子

944

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2025-9-30 13:51 | 显示全部楼层
105190 发表于 2025-9-30 13:26
撤单后挂单平仓指令会比市价止损指令先发出去,导致全部止损失败,只有部分止损,实际有一张单还是按照原 ...

你这个日志和以后的代码逻辑也对应不起来。
日志中标注的限价委托的1手订单属于指定手数下单。和1楼的撤单再平仓没有必然关系。

您可以针对自己遇到的问题,以一个具体实际仓位的变化过程给出描述。以便于分析诉求
回复

使用道具 举报

50

主题

238

帖子

238

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-9-30 14:22 | 显示全部楼层
admin 发表于 2025-9-30 13:51
你这个日志和以后的代码逻辑也对应不起来。
日志中标注的限价委托的1手订单属于指定手数下单。和1楼的撤 ...

是没有必然关系,但是在时间上会产生冲突,限价委托的1手订单会抢在市价平仓委托之前发出去啊,可否对限价委托进行条件呢限制,识别到几秒内要是有撤单的情况下,就暂缓挂单呢?
回复

使用道具 举报

3

主题

903

帖子

944

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2025-9-30 14:55 | 显示全部楼层
那你只能从下单条件上做控制处理,实际能否有效满足你的需求,需要结合你的代码实现运行看下。
大致方法如下:在满足测单逻辑中记录时间。
globalvariable:tcanceltime:=-1;
if  撤单条件 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark2:=1;
tcanceltime:=TIMETOT0(DYNAINFO(207))+30; //记录撤单触发后30s的时间节点位置
end

if 平仓条件 and tcanceltime<TIMETOT0(DYNAINFO(207)) then begin
   平仓语句
end

end
回复

使用道具 举报

50

主题

238

帖子

238

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-9-30 18:48 | 显示全部楼层
admin 发表于 2025-9-30 14:55
那你只能从下单条件上做控制处理,实际能否有效满足你的需求,需要结合你的代码实现运行看下。
大致方法如 ...

好的,谢谢!我试试看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-10-8 12:01 , Processed in 0.091536 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表