以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  信号出现怎么延时确定?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=152740)

--  作者:a383623133
--  发布时间:2017/5/11 15:04:03
--  信号出现怎么延时确定?
后台程序化,固定每1秒轮循模式:
怎么实现盘中信号出现后开始计时,持续10秒再开仓,如果中途信号有消失再出现将重新计时。。
请教该怎么表达,越简单越好?

--  作者:a383623133
--  发布时间:2017/5/11 15:38:31
--  
比方我用1分钟周期,价格>100就出信号,然后引用1秒钟行情,连续5秒>100再确认信号,这种做法可行否?
--  作者:wenarm
--  发布时间:2017/5/11 15:44:35
--  

http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=2183

6楼


--  作者:a383623133
--  发布时间:2017/5/11 15:54:33
--  
双向都开的话是不是这样编写:
MA1:MA(CLOSE,3);
MA2:MA(CLOSE,5);
CROS:=CROSS(MA1,MA2);
CROS2:=CROSS(MA2,MA1);
BUY1:=FALSE;
IF ISLASTBAR THEN
BEGIN
 IF CROS THEN
 BEGIN
  //将当前信号周期置全局变量数据库
  //数据名字前加信号周期,标记周期位置
  CRTEMP:=\'TEMP1\'&NUMTOSTR( BARPOS, 0);
    //读取原有变量的时间,判断是否到延时时间
  BUYTIME1:=EXTGBDATA(CRTEMP);
  BUYTIME2:=TIMETOT0(CURRENTTIME);
  DEBUGOUT(\'D1 %.0f\',BUYTIME1);
  IF BUYTIME1 > 1 THEN //第一次信号的原数据库读取会得到0值
  BEGIN
   DEBUGOUT(\'D2 %.0f\',BUYTIME2 - BUYTIME1);
   IF BUYTIME2 - BUYTIME1 > 15 THEN
   BEGIN
    //大于15秒的延迟,表示信号已经得到确认
    BUY1:=TRUE;
   END
  END
  ELSE
  BEGIN
   //第一次信号位置记录
   EXTGBDATASET(CRTEMP,TIMETOT0(CURRENTTIME));
  END
 END
 ELSE
 BEGIN
  //否则表示信号中间消失了
  CRTEMP:=\'TEMP1\'&NUMTOSTR( BARPOS, 0);
  EXTGBDATASET(CRTEMP,0);
 END
END
TBUY(BUY1,1,lmt,c);
TSELL(CROS2,0,lmt,c);
TBUYSHORT1:=FALSE;
IF ISLASTBAR THEN
BEGIN
 IF CROS2 THEN
 BEGIN
  //将当前信号周期置全局变量数据库
  //数据名字前加信号周期,标记周期位置
  2CRTEMP:=\'TEMP1\'&NUMTOSTR( BARPOS, 0);
    //读取原有变量的时间,判断是否到延时时间
  2BUYTIME1:=EXTGBDATA(2CRTEMP);
  2BUYTIME2:=TIMETOT0(CURRENTTIME);
  DEBUGOUT(\'D1 %.0f\',2BUYTIME1);
  IF 2BUYTIME1 > 1 THEN //第一次信号的原数据库读取会得到0值
  BEGIN
   DEBUGOUT(\'D2 %.0f\',2BUYTIME2 - 2BUYTIME1);
   IF 2BUYTIME2 - 2BUYTIME1 > 15 THEN
   BEGIN
    //大于15秒的延迟,表示信号已经得到确认
    TBUYSHORT1:=TRUE;
   END
  END
  ELSE
  BEGIN
   //第一次信号位置记录
   EXTGBDATASET(2CRTEMP,TIMETOT0(CURRENTTIME));
  END
 END
 ELSE
 BEGIN
  //否则表示信号中间消失了
  2CRTEMP:=\'TEMP1\'&NUMTOSTR( BARPOS, 0);
  EXTGBDATASET(2CRTEMP,0);
 END
END
TBUYSHORT( TBUYSHORT1,1,lmt,c);
TSELLSHORT(CROS,0,lmt,c)

--  作者:a383623133
--  发布时间:2017/5/11 16:04:11
--  
17.05.11 16:03:24 HSI05
2D1 0
17.05.11 16:03:24 HSI05
运行结束
17.05.11 16:03:24 HSI05
2D1 0
17.05.11 16:03:24 HSI05
运行结束
17.05.11 16:03:24 HSI05
2D1 0
17.05.11 16:03:24 HSI05
运行结束
17.05.11 16:03:24 HSI05
2D1 0
17.05.11 16:03:24 HSI05
运行结束

经过观察:空信号出现后,2D1 会有跳出来,但始终显示0,请问这是正常的吗?

--  作者:a383623133
--  发布时间:2017/5/11 16:31:56
--  
??没人解答吗?
--  作者:wenarm
--  发布时间:2017/5/11 16:52:13
--  
EXTGBDATASET仅在最后一根K线起作用,无法做迭代运算