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
|