以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请帮我这段代码翻译一下  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=171865)

--  作者:一代天骄
--  发布时间:2019/8/30 15:29:08
--  请帮我这段代码翻译一下
T1:=TIMETOT0(150000)-TIMETOT0(dynainfo(207));
abb:=(T1<=5 AND T1>0) OR NOT(ISLASTBAR);
IF NOT(abb) then GOTO SKIP1;
里面有好几个好函数不是很懂什么意思,还有这段代码要放在哪里,可以实现提前下单?

--  作者:FireScript
--  发布时间:2019/8/30 15:53:32
--  
 1.直接将 将abb添加到开仓语句的条件里面去。
类似这样:
if abb and 开仓条件 then buy(1,1,markrt);

2.T1表示的就是当前K结束时间,返回值和K线倒计时是一样的。

3. abb:=(T1<=5 AND T1>0) OR NOT(ISLASTBAR);

这个红色标识部分是为了处理历史K信号问题。因为提前下单这种操作肯定只有最新K奏效,所以必须兼顾到历史K信号问题。
T1<=5 这个就是提前下单的秒数,可以自行修改调整的。

4.提前下单用代码实现 必须是固定轮询模式的。如果是走完K,请使用软件自带的提前下单功能即可。

代码中具体使用的函数,可以直接看下函数说明就行了。我这里就只是把一些要点阐述下。
[此贴子已经被作者于2019/8/30 15:54:49编辑过]

--  作者:一代天骄
--  发布时间:2019/8/30 16:14:01
--  
 NOT(ISLASTBAR);这个代码能不能在解释一下,比如说这个k线是最后一个周期,那么islastbar就是1,那么就还回0,如果这个k线不是最后周期,那么islastbar就是0 ,那么就是还回1 ,这个我一直没有搞懂,能不能在详细解释一下
--  作者:一代天骄
--  发布时间:2019/8/30 16:21:01
--  

T1:=TIMETOT0(150000)-TIMETOT0(dynainfo(207));
abb:=(T1<=5 AND T1>0) OR NOT(ISLASTBAR);
IF NOT(abb) then GOTO SKIP1;
还有一个问题,为什么日级别以下要这样写
T1:=timeo-TIMETOT0(dynainfo(207));
abb:=(T1<=5 AND T1>0) OR NOT(ISLASTBAR);
IF NOT(abb) then GOTO SKIP1;?

--  作者:FireScript
--  发布时间:2019/8/30 16:41:06
--  
1. NOT(ISLASTBAR)
这个其实就是判断是否是最新K,历史K和最新K要区分处理。

abb:=(T1<=5 AND T1>0) OR NOT(ISLASTBAR);
这里如果是最新K 按照(T1<=5 AND T1>0) 作为信号条件
如果是历史K 按照NOT(ISLASTBAR)作为信号条件

2.前面没注意,你这个代码这里是收盘K提前下单。倒还不是所有K都提前下单。
因为这里:

T1:=TIMETOT0(150000)-TIMETOT0(dynainfo(207));
这个地方写死了是收盘K的时间了。
常规每个K都提前下单:
T1:=TIMETOT0(time)-TIMETOT0(dynainfo(207));
是这样写的。
3.
T1:=timeo-TIMETOT0(dynainfo(207));
没这种写法的。另外这个代码本身日线上压根就用不了。只能日线以下使用。

--  作者:一代天骄
--  发布时间:2019/8/30 16:59:59
--  
T1:=TIMETOT0(time)-TIMETOT0(dynainfo(207));
这样的写法是任何级别都是可以实现提前下单这个功能是吗?
zhey 

--  作者:FireScript
--  发布时间:2019/8/30 17:04:46
--  
 不包括日线,其他周期都可以。且必须固定轮询模式。还有你轮询周期不能大于提前下单的秒数,否则可能轮询检测不到就很尴尬了。