请问各位大大,如何求得某一笔开仓的开仓历时?
目的是判断某笔成交后到底是持有了多长时间!
我想出来了一个算法,但是在时间这一句有点问题,代码我发醋来看看!
//Q用来记录所剩持仓中最老的持仓单在数组中的位置,J记录数组坐标,I记录当时持仓量用于判断;
variable:X[1000]=0,I=0,J=1,Q=1,X2[1000]=0,I2=0,J2=1,Q2=1;
//买持
A1:TBUYHOLDINGEX('' ,'' ,0 );
IF A1>I THEN BEGIN
X[J]:=TIME0;
J:=J+1;
I:=A1;
END
FF:TIME0;
HH:X[1];
//如果持仓时间超过3分钟则平仓,这里为防止市价强平不成交,应配合交易设置中的“未成交则撤单报单”来使用
IF (TIME0-X[Q])>=180 THEN BEGIN
TSELL(1,1,MKT);
Q:=Q+1;
END
//卖持
A2:=TSELLHOLDINGEX('' ,'' ,0 );
IF A2>I2 THEN BEGIN
X2[J2]:=TIME0;
J2:=J2+1;
I2:=A2;
END
//如果持仓时间超过3分钟则平仓,这里为防止市价强平不成交,应配合交易设置中的“未成交则撤单报单”来使用
IF (TIME0-X2[Q2])>=180 THEN BEGIN
TSELLSHORT(1,1,MKT);
Q2:=Q2+1;
END
奇怪不知道为何(TIME0-X[Q])>=180 这一句是恒不成立的,因为X[Q]总是实时更新的,并非算法中所预想的那样(判断持仓有变化则记录一个时间到数组中去),谁帮忙看看啊!!
不是enterbars吗
我要求的是某一笔的 不是单单上次的
目的是为了计算每笔成交后的持有时间长度
哦。那就好的方法是 用全局变量indi记录每笔交易
variable:indi=0;
每次平仓后,indi累加一次
最后要调用那一笔交易,就再用barslast()
比如现在的indi=100,要调用第96次交易的开仓历史就用 aa:ref(enterbars,barslast(indi=96 and ref(indi,1)=95));
aa在程序的不同位置,可能会得到不同的结果,特别是在反手模型的时候
要是有个这样的函数就好了
返回现有持仓中的每笔开仓距今的秒数
函数名(品种,序列号,多空方向,下单类型比如开仓还是平仓)
顶起来,我写了下代码 大家给看看
FF:TIME0;
HH:X[1];
FF的值一只增加是对的
但是HH的值,发现并没有把当时的time0赋值给数组中去,一直是最新的TIME0
A1:TBUYHOLDINGEX('' ,'' ,0 );
IF A1>I THEN BEGIN
兄弟,这里并非(判断持仓有变化则记录一个时间到数组中去),而是只要满足TBUYHOLDINGEX('' ,'' ,0 )后每TICK都计算一次.
哦 这样啊,我再价格计数器试试,多谢指教~