以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  为什么AA 和BB 没有 输出值?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=181445)

--  作者:OscarDeng
--  发布时间:2020/7/28 14:17:50
--  为什么AA 和BB 没有 输出值?
为什么AA 和BB 没有 输出值?使用在分钟周期里, 肯定超过1万个数据以上。 

DIFF :EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA  :EMA(DIFF,M);
MACD:2*(DIFF-DEA),COLORSTICK;
MACDMAX:=MAX(C,O);
MACDMIN:=MIN(C,O);
MACDL:=LLV(MACDMIN,7);//8周期内最低收盘价
AA:MA(ABS(DIFF),10000),NOAXIS;
BB:STD(ABS(DIFF),10000),NOAXIS;




--  作者:wenarm
--  发布时间:2020/7/28 15:50:08
--  

自己在策略中输出k线数量看

ccc:DATACOUNT;


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

--  作者:OscarDeng
--  发布时间:2020/7/28 17:34:43
--  
我用在15分钟上CC已经2324, 为什么BB 也显示不出来?为什么BB不会自动找前面1400的数据? 我程序化难道还要缩小画面才能让他自己找数据吗?
此主题相关图片如下:qq图片20200728173202.png
按此在新窗口浏览图片

DIFF :EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA  :EMA(DIFF,M);
MACD:2*(DIFF-DEA),COLORSTICK;
MACDMAX:=MAX(C,O);
MACDMIN:=MIN(C,O);
MACDL:=LLV(MACDMIN,7);//8周期内最低收盘价
BB:STD(ABS(DIFF),1440),NOAXIS;
cc:datacount,NOAXIS;


--  作者:yukizzc
--  发布时间:2020/7/28 19:49:09
--  
datacount是整个图上有多少跟k
你要看barpos当前十字光标所在k是多少跟k
你看你图上十字光标的序列是1144,不足1440

--  作者:yukizzc
--  发布时间:2020/7/28 19:50:12
--  
举个例子你要计算360均线,你在刚上市品种那几根k上去看均线,能得到均线吗
--  作者:OscarDeng
--  发布时间:2020/7/29 10:25:23
--  
那下面的语句要怎样改才能正确? 就是开始的时候DIFFSTD取值少一点, barpos多了之后 std()的N值取值多一些

VARIABLE:DIFFSTD:=5;
  IF BARPOS>50 AND BARPOS<100 THEN DIFFSTD:=STD(ABS(DIFF),50);
  IF BARPOS>=100 AND BARPOS<200 THEN DIFFSTD:=STD(ABS(DIFF),100);
  IF BARPOS>=200 AND BARPOS<300 THEN DIFFSTD:=STD(ABS(DIFF),200);
  IF BARPOS>=300 AND BARPOS<500 THEN DIFFSTD:=STD(ABS(DIFF),300);
  IF BARPOS>=500 AND BARPOS<750 THEN DIFFSTD:=STD(ABS(DIFF),500);
  IF BARPOS>=750 AND BARPOS<1000 THEN DIFFSTD:=STD(ABS(DIFF),750);
  IF BARPOS>=1000  THEN DIFFSTD:=STD(ABS(DIFF),1000);

--  作者:FireScript
--  发布时间:2020/7/29 10:47:59
--  
 你这里的问题是std不能用在if里面吧。那你可以这样,先把std的参数计算好,再算std,这样就不用把std放在if里面的:
VARIABLE:DIFFSTD:=5;
Len:BARPOS;

IF BARPOS>50 AND BARPOS<100 THEN Len:=50;
IF BARPOS>=100 AND BARPOS<200 THEN Len:=100;
IF BARPOS>=200 AND BARPOS<300 THEN Len:=200;
IF BARPOS>=300 AND BARPOS<500 THEN Len:=300;
IF BARPOS>=500 AND BARPOS<750 THEN Len:=500;
IF BARPOS>=750 AND BARPOS<1000 THEN Len:=750;
IF BARPOS>=1000  THEN Len:=1000;
DIFFSTD:=STD(ABS(DIFF),Len);//对BARPOS小于50的就按照有多少个K算多少K。

--  作者:OscarDeng
--  发布时间:2020/7/29 11:44:53
--  
那能否这样写? 
LEN:=BARPOS;  //就是说Len 每次都+1
IF BARPOS>=1000  THEN LEN=1000;
DIFFSTD:=STD(ABS(DIFF),LEN);

--  作者:FireScript
--  发布时间:2020/7/29 13:05:38
--  
 也可以的啊。