投资者咨询:[求助]能否在MQ版中恢复Refx, Refx1函数? 用作统计. (文华财经wh9)
来源:文华财经 日期:2018-12-10 12:46
例如, 要统计某个K线形态在整个周期中出现的次数, 而不是仅到当前K线为止的次数, 以前版本用Refx1, 参数N用一个大数, 就可以定位到最后一根K线, 来统计最后一根K线前的次数(也就是总次数), 现在MQ版不能这样统计了?
又例如, 要统计某个K线形态之后的周期是否上涨或下跌, 要用到Refx或Refx1来调取当前K线后的数据, 现在MQ版也做不到了?
另外, 最好Refx和Refx1的周期参数N可以是变量, 这样更加灵活, 不用设一个超大数来取到最后一根K线, 可以用其他函数(比如 IIF(BarStatus=2 DSG:=DSX);, DSG是Global变量)计算出的总K线数就可以了.
技术人员回复
日期:2018-12-10 13:07
投资者咨询:[求助]能否在MQ版中恢复Refx, Refx1函数? 用作统计. (文华财经wh9)
来源:文华财经 日期:2018-12-10 12:46
或者, 能在赢智(WH8)中增加Global广域变量? Variable全局变量是每根K线刷新都会归0的, 希望能有不归0的变量.
技术人员回复
日期:2018-12-10 13:31
投资者咨询:[求助]能否在MQ版中恢复Refx, Refx1函数? 用作统计. (文华财经wh9)
来源:文华财经 日期:2018-12-10 12:46
例如(随便写的, 只是说明意思):
VARIABLE: BJ:=0, TEMP:=0;
IF BJ=0 THEN
BEGIN
BJ:=1;
TEMP:=CLOSE;
AMOUNT1:=COUNT(CLOSE>TEMP,0);
AMOUNT2:=COUNT(CLOSE=TEMP,0);
AMOUTN3:=COUNT(CLOSE<TEMP,0);
BJ:=0;
END
想实现的功能是:
在当前周期, 如果全局变量BJ=0, 就把它设为1, 防止其他K线周期的进程在这个比较过程中改写TEMP的数值, 然后进行后续的比较统计, 将当前的CLOSE赋值给TEMP, 然后将之前周期的CLOSE与TEMP比较(也就是与当前周期的CLOSE比较), 最后再把BJ改回0, 以便其他周期进行同样的过程.
结果发现不成功, 对其他K线来说, BJ, TEMP始终是0, 所以无法和当前周期的CLOSE进行比较, 始终得到的结果是AMOUTN1是0, AMOUNT2是之前的总周期数量, AMOUNT3是0, 也就是说, 其他周期总是在与自身比较.
投资者咨询:[求助]能否在MQ版中恢复Refx, Refx1函数? 用作统计. (文华财经wh9)
来源:文华财经 日期:2018-12-10 12:46
另外, 我在MQ里试GLOBAL_NUMERIC, 好像也不起作用........
投资者咨询:[求助]能否在MQ版中恢复Refx, Refx1函数? 用作统计. (文华财经wh9)
来源:文华财经 日期:2018-12-10 12:46
以下是引用欧阳在2018/12/10 14:54:00的发言:
分析后回复 |
我好像有点知道原因了, COUNT函数的条件COND, 不能是和VARIABLE或GLOBAL_NUMERIC变量直接比较, 必须先把VARIABLE或GLOBAL_NUMERIC的值赋给一个自身临时变量, 然后和这个临时变量比较.
请检查是否是这样.
技术人员回复
日期:2018-12-10 15:57
如果是内部赋值后进行价格比较,是需要使用中间变量进行转换的
AMOUNT1:COUNT(CLOSE>REF(CLOSE,1),0);
AMOUNT2:COUNT(CLOSE=REF(CLOSE,1),0);
AMOUTN3:COUNT(CLOSE<REF(CLOSE,1),0);
投资者咨询:[求助]能否在MQ版中恢复Refx, Refx1函数? 用作统计. (文华财经wh9)
来源:文华财经 日期:2018-12-10 12:46
以下是引用1908796号用户在2018/12/10 15:08:00的发言:
我好像有点知道原因了, COUNT函数的条件COND, 不能是和VARIABLE或GLOBAL_NUMERIC变量直接比较, 必须先把VARIABLE或GLOBAL_NUMERIC的值赋给一个自身临时变量, 然后和这个临时变量比较.
请检查是否是这样.
检查了一下, 应该不对, 虽然有数字出来了, 但是拿头几根K线看了一下, 不对的. 而且, 如果是COND条件不能直接和全局变量比的话, 没理由"CLOSE=TEMP"都得到"真"的结果.
投资者咨询:[求助]能否在MQ版中恢复Refx, Refx1函数? 用作统计. (文华财经wh9)
来源:文华财经 日期:2018-12-10 12:46
以下是引用欧阳在2018/12/10 15:57:00的发言:
如果是内部赋值后进行价格比较,是需要使用中间变量进行转换的
如果是内部赋值后进行价格比较,是需要使用中间变量进行转换的
AMOUNT1:COUNT(CLOSE>REF(CLOSE,1),0);
AMOUNT2:COUNT(CLOSE=REF(CLOSE,1),0);
AMOUTN3:COUNT(CLOSE<REF(CLOSE,1),0);
您这个公式得到的结果应该是之前收盘价比前一天收盘价涨跌的统计, 而我要的是之前全部K线收盘价相对于当前K线收盘价的高低的统计.
比如有5天收盘价分别是: 1, 5, 7, 4, 9
在第5天K线进行统计的话, 您的结果是: AMOUNT1=3, AMOUNT2=0, AMOUNT3=1 (因为5>1, 7>5, 9>4 ; 没有一个相等 ; 4<7)
而我要的结果是: AMOUNT1=0, AMOUNT2=1, AMOUNT3=4 (因为没有一个大于9; 9=9,即当天等于当天 ; 1,5,7,4都小于9)