金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 36|回复: 8

为何我的全部变量没有记录呢?

[复制链接]

51

主题

243

帖子

243

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
发表于 2025-10-10 11:00 | 显示全部楼层 |阅读模式
globalvariable:mark5:=0;
//止损平仓
if CROSS(止损价,L) AND todaybar>30 and tbuyholdingex('','',2)>0  and mark5=0  AND TGLOBALSUBMITEX(2,'' ,'',1 )>=1 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark5:=1;
tcanceltime:=TIMETOT0(DYNAINFO(207))+3; //记录撤单触发后3s的时间节点位置         
end

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

if TIME=151450  then
begin
mark5:=0;
end
AA:mark5;

请帮我看下,这样写是否有误?为何满足止损条件后,全局变量的mark5输出值AA依然是0,我的目的是触发止损后只做一次市价止损平仓,后续同样条件直接忽略,不想频繁挂撤单

回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-10 11:02 | 显示全部楼层
本帖最后由 资深技术05 于 2025-10-10 11:06 编辑

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

这里在符合条件的K上会不断重置,然后你开仓/平仓 又不判断这个时间条件。自然会再次触发操作。再重置全局变量期间,应该也约束其他的开平操作。
回复

使用道具 举报

51

主题

243

帖子

243

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-10-10 11:06 | 显示全部楼层
资深技术05 发表于 2025-10-10 11:02
你这个代码加载到图表上用的?

不是,在后台使用,同时在图表层也做信号输出看看,后台交易记录显示今日止损又撤单了四次
回复

使用道具 举报

51

主题

243

帖子

243

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-10-10 11:13 | 显示全部楼层
资深技术05 发表于 2025-10-10 11:02
if TIME=151450  then
begin
mark5:=0;

要如何约束呢?
回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-10 11:14 | 显示全部楼层
就是加上一个时间条件。 开/平 要在 151450 之前操作。之后就不允许操作了。
回复

使用道具 举报

51

主题

243

帖子

243

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-10-10 11:23 | 显示全部楼层
资深技术05 发表于 2025-10-10 11:02
if TIME=151450  then
begin
mark5:=0;

这句话的意思不是表达当时间为15:14:50才重置变量mark5为零吗?早盘K线没有满足时间重置条件啊?它会每根k线不断重置?
回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-10 11:26 | 显示全部楼层
本帖最后由 资深技术05 于 2025-10-10 11:28 编辑

你K线周期多少?这个重置的代码在符合条件的K上 又不是只执行一次。
另外你也别只看下单结果,去日志里先看下 撤单和下单来源 是不是上面的代码。

回复

使用道具 举报

51

主题

243

帖子

243

积分

Rank: 4

等级: 专业版

注册:
2021-10-19
曾用名:
 楼主| 发表于 2025-10-10 11:37 | 显示全部楼层
资深技术05 发表于 2025-10-10 11:26
你K线周期多少?这个重置的代码在符合条件的K上 又不是只执行一次。
另外你也别只看下单结果,去日志里先 ...

1分钟周期上后台运行,日志查了,就是按照行数查,就是这段代码触发的
回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-10 14:06 | 显示全部楼层
1.如果是1分钟周期 ,TIME=151450 这个条件恒不满足。你肯定还有其他地方重置了变量,亦或者你就不是连续运行,中间暂停过程序。globalvariable 定义的全局变量 是保存在内存中,不会持久化。程序暂停过直接没了。

2.“不是,在后台使用,同时在图表层也做信号输出看看,后台交易记录显示今日止损又撤单了四次”
这段代码 在图表上根本无法使用,在图表上看到的变量输出结果没有任何参考价值。请不要以图表输出结果作为参考。



3.上面代码存在的问题是。如果mark5不能及时重置,你平仓部分在有持仓情况下就会一直触发的。
在触发一次市价止损后,可以把变量重置为-1.  与此同时需要完善下重置的逻辑。

[PEL] 复制代码
globalvariable:mark5:=0;
//止损平仓
if c<ref(c,1) AND todaybar>1 and tbuyholdingex('','',2)>0  and mark5=0  AND TGLOBALSUBMITEX(2,'' ,'',1 )>=1 then
begin
tcancelex(1,2,'',stklabel);//先撤单
mark5:=1;      
end

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

//补充一个有效的重置条件
if 重置条件  then
begin
mark5:=0;
end

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-11 20:16 , Processed in 0.100334 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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