以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 下面这样写, 假如我设置的参数符合ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2, (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=183045) |
-- 作者:OscarDeng -- 发布时间:2020/11/16 16:53:41 -- 下面这样写, 假如我设置的参数符合ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2, 下面这样写, 假如我设置的参数符合ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2, msgout 和 explain 为什么会显示不出来? runmode: 0; //在逐K线模式下 IF BARPOS>EXTGBDATA(\'T\') THEN//程序运行虽然是逐K线模式下, 但是是每个tick都会运行一次, 只是买卖在K线完成后才运行。 MSGOUT 不是逐K线模式的, 是TICK模式的, 所以才会判断每步运行一次msgout,. BEGIN
EXTGBDATASET(\'T\',BARPOS);
CC:TIME=093100 OR TIME=143100;
MSGOUT(ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2 ,\'输入参数有误,立即停止交易\') ; MSGOUT(C<BELOWPRICE2*0.97 AND CC,\'价格低于最低价3%,考虑清楚是否需要止损?\'); EXPLAIN(ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2 ,\'输入参数有误,立即停止交易\'); EXPLAIN(C<BELOWPRICE2*0.97 AND CC,\'价格低于最低价3%,考虑清楚是否需要止损?\'); END
|
-- 作者:FireScript -- 发布时间:2020/11/16 16:56:24 -- 你是后面整个代码块都 在 IF BARPOS>EXTGBDATA(\'T\') THEN// 这个条件后面吗? 那你在 工具-数据管理-全局变量 这里看下这个全局变量t值是否正常,或者是值过大导致if条件无法满足。
|
-- 作者:FireScript -- 发布时间:2020/11/16 16:59:16 -- 如过你某次把数据拉的特别大,你后面如果数据量少于这个T。if条件都无法满足的。你手工重置下全局变量试下。 |
-- 作者:OscarDeng -- 发布时间:2020/11/30 11:49:53 -- 应该不会少于T的, 每个合约都已经够长了, 我试了几次, msgout 和 explain 显示不出来。 runmode: 0; IF BARPOS>EXTGBDATA(\'T\') THEN BEGIN
EXTGBDATASET(\'T\',BARPOS);
CC:TIME=093100 OR TIME=143100;
MSGOUT(ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2 ,\'输入参数有误,立即停止交易\') ; MSGOUT(C<BELOWPRICE2*0.97 AND CC,\'价格低于最低价3%,考虑清楚是否需要止损?\'); EXPLAIN(ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2 ,\'输入参数有误,立即停止交易\'); EXPLAIN(C<BELOWPRICE2*0.97 AND CC,\'价格低于最低价3%,考虑清楚是否需要止损?\'); END
|
-- 作者:FireScript -- 发布时间:2020/11/30 13:21:02 -- 你手工重置下全局变量或者把BARPOS>EXTGBDATA(\'T\') 作为变量条件直接输出看下就知道了。另外测试时候把msgout 和explain的条件设为1. 就能判断到底卡在那个环境了。 |
-- 作者:OscarDeng -- 发布时间:2020/12/16 8:45:21 -- 把下面的程序放在外面就能执行了, 这是为什么? IF BARPOS>EXTGBDATA(\'T\') THEN 这个语句之前是你给我的, 为什么不行? MSGOUT(ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2 ,\'输入参数有误,立即停止交易\') ; MSGOUT(C<BELOWPRICE2*0.97 AND CC,\'价格低于最低价3%,考虑清楚是否需要止损?\'); EXPLAIN(ABOVEPRICE1<BELOWPRICE1 OR BELOWPRICE1<BELOWPRICE2 ,\'输入参数有误,立即停止交易\'); EXPLAIN(C<BELOWPRICE2*0.97 AND CC,\'价格低于最低价3%,考虑清楚是否需要止损?\');
|
-- 作者:FireScript -- 发布时间:2020/12/16 9:25:26 -- 你现在情况是所有的品种都共享一个T的值。你白银现在就100个K,但是之前某次你在螺纹你加载了200个K,那么这个T就是200. 此外就是T的值只会增不会变下,你某次在图表上加载了很大的数据量,那么这个T值也会自然保存一个很大的值,导致后续都无法满足。 你在工具-数据管理-全局变量 里面看下T的值。 然后你在图表上输出看下BARPOS。判断下,比较下大小。 这个代码使用很有局限性的,不能多品种共享,也不能随意手工扩大数据量。所以你只能每次使用之前,手工重置下这个全局变量。 |