金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 159|回复: 10

请教下 如何让这个后台指令延迟2秒执行呢?

[复制链接]

39

主题

172

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
发表于 2025-4-28 09:28 | 显示全部楼层 |阅读模式
TSELLSHORT(   TSELLHOLDINGEX('','',1)>=SS AND TORDERPRICE(3,1)>0  ,SS,LMT,空头止盈价);


补充内容 (2025-4-28 09:41):
或者距离上一次撤单超过2秒执行也可以
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-28 10:35 | 显示全部楼层
试下ORDERQUEUE 函数呢。

回复

使用道具 举报

39

主题

172

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-4-28 10:39 | 显示全部楼层
资深技术05 发表于 2025-4-28 10:35
试下ORDERQUEUE 函数呢。

要如何写呢?我这个指令刚好和以下撤单指令冲突了globalvariable:mark:=0;
 
if 平多条件 and tbuyholdingex('','',2)>0 and  tremainqty(2,'',stklabel)>0 and mark=0 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark:=1;           
end
 
//确保完全撤单后再执行平仓
if mark and tbuyholdingex('','',1)>0 and tremainqty(2,'',stklabel)=0  then
begin
tsell(1,1,mkt);
mark:=0;
end
回复

使用道具 举报

39

主题

172

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-4-28 11:08 | 显示全部楼层
资深技术05 发表于 2025-4-28 10:35
试下ORDERQUEUE 函数呢。

可否帮忙解决下这个信号冲突问题

补充内容 (2025-4-28 11:09):
强制止损需要最高优先级
回复

使用道具 举报

39

主题

172

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-4-28 11:37 | 显示全部楼层
资深技术05 发表于 2025-4-28 11:16
globalvariable:mark:=0;
globalvariable:t:=0;

如果有撤单,要让这段指令延迟两秒:TSELLSHORT(   TSELLHOLDINGEX('','',1)>=SS AND TORDERPRICE(3,1)>0  ,SS,LMT,空头止盈价);,止损的这段指令是立即执行:if mark and tbuyholdingex('','',1)>0 and tremainqty(2,'',stklabel)=0
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-28 13:20 | 显示全部楼层
前面代码不就是撤单后2秒 再执行平仓的逻辑的吗?
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-28 13:22 | 显示全部楼层
这段代码不就是撤单之后2秒 进行平仓的逻辑嘛。

[PEL] 复制代码
globalvariable:mark:=0;
globalvariable:t:=0;

if 平多条件 and tbuyholdingex('','',2)>0 and tremainqty(2,'',stklabel)>0 and mark=0 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark:=1;
t:=currenttime;
end

//确保完全撤单后再执行平仓
if mark and tbuyholdingex('','',1)>0 and tremainqty(2,'',stklabel)=0 and currenttime-t>=2  then
begin
tsell(1,1,mkt);
mark:=0;
end
回复

使用道具 举报

39

主题

172

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-4-29 09:16 | 显示全部楼层
资深技术05 发表于 2025-4-28 13:22
这段代码不就是撤单之后2秒 进行平仓的逻辑嘛。

[mw_shl_code=pel,true]globalvariable:mark:=0;

不是这段代码里面本身需要延迟平仓,这段是强制止损,不能也不需要延迟,优先执行!冲突的上面一撤单这段代码就会马上执行导致止损失败:

多头止盈价:=TORDERPRICE( 1,1) + N*MINDIFF;


TSELL(  (TBUYHOLDINGEX('' ,'' ,2 )-TGLOBALSUBMITEX(2,'' ,'',0 ))>=SS AND TORDERPRICE( 1,1)>0 AND ATR<6  ,SS,LMT,多头止盈价);

可否将and CURRENTTIME-t>=2  这段加入这段命令中?加入后实盘测试有时候执行有时候不执行是怎么回事呢?
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-29 09:44 | 显示全部楼层
“冲突的上面一撤单这段代码就会马上执行导致止损失败:”
如果你不限制好撤单的条件,那肯定会冲突的。等于说是撤单条件 和你其他平仓条件 有交集情况下,那撤单肯定会在你平仓信号发出后 立刻就执行了的。

如果你是提前挂止盈单,需要等触发止损时候 撤单止损。那最好完善下撤单条件。比如在撤单的条件里判断下当前的盈亏情况等 或者把判断下当前不满足止盈的平仓条件 比如当前atr>6 才允许撤单



[PEL] 复制代码
globalvariable:mark:=0;
 
 //多头至少亏损五个点
if 平多条件 and c<tavgenterpriceex2('','',0)-5*MINDIFF  and tbuyholdingex('','',2)>0 and tremainqty(2,'',stklabel)>0 and mark=0 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark:=1;
end
 
//确保完全撤单后再执行平仓
if mark and tbuyholdingex('','',1)>0 and tremainqty(2,'',stklabel)=0 then
begin
tsell(1,1,mkt);
mark:=0;
end
回复

使用道具 举报

39

主题

172

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-4-29 11:39 | 显示全部楼层
资深技术05 发表于 2025-4-29 09:44
“冲突的上面一撤单这段代码就会马上执行导致止损失败:”
如果你不限制好撤单的条件,那肯定会冲突的。等 ...

逻辑刚好跟您说的相反,撤单优先级必须最高,才能保证撤单后止损成功啊  我的确是提前挂的止盈单,触发止损时候 撤单止损,现在是挂单指令会跑出来跟止损指令抢下单,导致市价止损无持仓数量不触发,执行失败,要通过延时避免挂单止盈的指令提前占用了可用持仓,要限制的对象您搞错了 是以下这段挂单指令需要限制:TSELL(&#160;&#160;(TBUYHOLDINGEX('' ,'' ,2 )-TGLOBALSUBMITEX(2,'' ,'',0 ))>=SS AND TORDERPRICE( 1,1)>0 AND ATR<6&#160;&#160;,SS,LMT,多头止盈价);
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 03:59 , Processed in 0.207713 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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