以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于使用ISLASTBAR的测试代码重复开仓的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=76246)

--  作者:infocell
--  发布时间:2015/3/6 18:02:41
--  关于使用ISLASTBAR的测试代码重复开仓的问题

这段代码会每分钟开一单,是什么原因?好象用了ISLASTBAR就会不断地开单,如果不用就不会。

 

VARIABLE:aa=CS_con-25;
开仓时间:=TIME>145600;
开多平空条件:=开仓时间 and ISLASTBAR;

buycon:=LOW>0 and aa<2 and 开多平空条件;
if buycon THEN BEGIN
buyshort(1,1,MARKET);
//if aa>2 then aa:=1;
aa:=aa+1;
if islastbar then msgout(TRUE,\'成功买一手\');
end


持仓:holding,linethick0;
资产:asset,noaxis;
可用现金:cash(0),linethick0;

日志:

2015-03-06 17:54:01.267    2015.03.06 17:54:01【图表】框架:TWS009 触发下单 BUYSHORT 品种 EURJPY 下单K线 2015.03.06 17:55:00 公式:test6 窗格ID:23 代码行:8
2015-03-06 17:54:01.273    【图表】启用多帐户及策略系数配置
2015-03-06 17:54:01.278    【图表】分账户系数1.000000 账户 812697
2015-03-06 17:54:01.283    【图表】test6 EURJPY 策略系数为 1.000000
2015-03-06 17:54:01.288    【图表】分品种下单系数调整后,手数1 账户 812697
2015-03-06 17:54:01.292    【图表】模型下单 1
2015-03-06 17:54:01.295    【图表】下单系数调整后 手数:1
2015-03-06 17:54:01.299    【图表】直接下单


2015-03-06 17:55:00.262    2015.03.06 17:55:00【图表】框架:TWS009 触发下单 BUYSHORT 品种 EURJPY 下单K线 2015.03.06 17:56:00 公式:test6 窗格ID:23 代码行:8
2015-03-06 17:55:00.267    【图表】启用多帐户及策略系数配置
2015-03-06 17:55:00.271    【图表】分账户系数1.000000 账户 812697
2015-03-06 17:55:00.275    【图表】test6 EURJPY 策略系数为 1.000000
2015-03-06 17:55:00.279    【图表】分品种下单系数调整后,手数1 账户 812697
2015-03-06 17:55:00.283    【图表】模型下单 1
2015-03-06 17:55:00.287    【图表】下单系数调整后 手数:1
2015-03-06 17:55:00.290    【图表】直接下单

2015-03-06 17:56:00.781    2015.03.06 17:56:00【图表】框架:TWS009 触发下单 BUYSHORT 品种 EURJPY 下单K线 2015.03.06 17:57:00 公式:test6 窗格ID:23 代码行:8
2015-03-06 17:56:00.787    【图表】启用多帐户及策略系数配置
2015-03-06 17:56:00.790    【图表】分账户系数1.000000 账户 812697
2015-03-06 17:56:00.795    【图表】test6 EURJPY 策略系数为 1.000000
2015-03-06 17:56:00.799    【图表】分品种下单系数调整后,手数1 账户 812697
2015-03-06 17:56:00.803    【图表】模型下单 1
2015-03-06 17:56:00.807    【图表】下单系数调整后 手数:1
2015-03-06 17:56:00.811    【图表】直接下单

2015-03-06 17:57:00.754    2015.03.06 17:57:00【图表】框架:TWS009 触发下单 BUYSHORT 品种 EURJPY 下单K线 2015.03.06 17:58:00 公式:test6 窗格ID:23 代码行:8
2015-03-06 17:57:00.761    【图表】启用多帐户及策略系数配置
2015-03-06 17:57:00.768    【图表】分账户系数1.000000 账户 812697
2015-03-06 17:57:00.772    【图表】test6 EURJPY 策略系数为 1.000000
2015-03-06 17:57:00.776    【图表】分品种下单系数调整后,手数1 账户 812697
2015-03-06 17:57:00.781    【图表】模型下单 1
2015-03-06 17:57:00.785    【图表】下单系数调整后 手数:1
2015-03-06 17:57:00.789    【图表】直接下单

2015-03-06 17:58:00.280    2015.03.06 17:58:00【图表】框架:TWS009 触发下单 BUYSHORT 品种 EURJPY 下单K线 2015.03.06 17:59:00 公式:test6 窗格ID:23 代码行:8
2015-03-06 17:58:00.285    【图表】启用多帐户及策略系数配置
2015-03-06 17:58:00.288    【图表】分账户系数1.000000 账户 812697
2015-03-06 17:58:00.291    【图表】test6 EURJPY 策略系数为 1.000000
2015-03-06 17:58:00.296    【图表】分品种下单系数调整后,手数1 账户 812697
2015-03-06 17:58:00.300    【图表】模型下单 1
2015-03-06 17:58:00.303    【图表】下单系数调整后 手数:1
2015-03-06 17:58:00.307    【图表】直接下单


图片点击可在新窗口打开查看此主题相关图片如下:test.jpg
图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2015/3/9 8:50:23
--  

这个表示当前最后一根k线,那么在k线图上就是每刷一根新的k线,这个条件就成立开单,然后过去的k线上,islastbar条件不成立,信号消失

[此贴子已经被作者于2015/3/9 8:50:38编辑过]

--  作者:infocell
--  发布时间:2015/3/9 9:55:25
--  
用islastbar就是想避免在历史K线中开单影响我实盘启动后开仓,在条件里面限制了 aa<2 只能开两单,不知道为什么会重复开单。
--  作者:jinzhe
--  发布时间:2015/3/9 10:04:13
--  

用了islastbar会造成反复开仓,信号闪烁,具体理由参考上面的回复

写个最简单的例子

buy(islastbar,1,marketr);

看看效果是不是如我上面所说的,最后一根k线信号出现,之前的信号消失


--  作者:infocell
--  发布时间:2015/3/9 10:14:33
--  

理解您的意思,如果只是ISLASTBAR肯定重复开仓,但我有四个条件,而且是AND的关系。

虽然ISLASTBAR成立,但aa是不断增加的,开两手以后,aa=2,条件就不成立,应当就开不了仓了啊,为什么还会重复开?

 

LOW>0 and aa<2 and 开仓时间 and ISLASTBAR


--  作者:infocell
--  发布时间:2015/3/9 10:15:28
--  
另外如何让代码跳过历史K线,直接从当前K线开始执行?
--  作者:infocell
--  发布时间:2015/3/9 10:22:43
--  

LOW>0 and aa<2 and 开仓时间 and ISLASTBAR

我感觉这都能重复开,肯定是金字塔软件的bug


--  作者:jinzhe
--  发布时间:2015/3/9 10:23:52
--  

同样的,

加一句代码

a:aa;

可以看看aa是不是永远都是<2的,而且是当前为1,之前都为0


--  作者:jinzhe
--  发布时间:2015/3/9 10:24:17
--  

图表交易没有历史信号就不是图表交易了,所以这样一点是做不到的


--  作者:infocell
--  发布时间:2015/3/9 10:37:40
--  

您的意思,用了ISLASTBAR,整个程序就从头开始,所有参数都初始化一次吗?

是不是跟他在一起的参数全部被从头开始初始化,还是程序所有的代码都从头开始初始化?