信号发生时后, 持续15秒后还有信号, 确认开仓, 持续时间可以是0-180秒
为了处理即时信号消失问题,由于系统缺陷,文华无奈地采用了比较笨的方法:
1、信号消失恢复之前的持仓;
2、信号延时确认
按理说金字塔比文华灵活,可以在后台交易中通过公式达到此功能,由于金字塔时间函数目前的局限,不能被合理引用,以致连这个简单功能都不知如何实现,更别说实现诸如
精确控制开仓\平仓时的各种变化,比如满足条件tj1后, 根据之后20秒时间的持仓变化、盘口变化,给出进一步的行动依据,。。。
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=2174&page=0&star=2
由于金字塔的卓越功能,已经成为我们的投机利器,我们再也离不开这一制胜法宝,同时也在考虑如何回报金字塔,使它更强更大。我们非常庆幸金字塔能有这样一位天才设计者,由衷地感谢您!
请求金字塔满足大家的意见,拿出更简单的方法实现这类功能。谢谢!
最好的方法是扩充现有函数Time0 的功能
取得从当日0点以来的秒数。
使它能够在任何大于1秒的周期,返回自从当日0点以来的真正秒数。(目前函数Time0在1分钟周期,返回自从当日0点以来的秒数只能精确到60秒,不能到1秒)
这样,很容易实现信号延时确认功能,同时也可以进一步拓展其它功能。
这种函数国外优秀交易软件和平台是有的
如
二.时间函数
001)获取毫秒级计时
GetTimeTick(last) ;//获取毫秒级计时
功能:获取毫秒级计时
参数:last--毫秒级计时双字值
返回: 毫秒级计时减last后的双字值
一般使用形式:
系统毫秒级计时一般几十天一个循环
m_tick=GetTimeTick(0) ;//当前毫秒级计时
.....
m_ctick=GetTimeTick(m_tick) ;//从m_tick到现在的毫秒数
002)获取当前时间(或指定时间)
GetTime() ;//获取当前时间(或指定时间)
功能:获取当前时间(或指定时间)
参数:获取指定时间的时间值时,要输入,年,月,日,时,分,秒
返回: 当前时间(或指定时间)的双精度浮点值(相当于8字节长度数值)
一般使用形式:
m_t00=GetTime() ;
m_t00=GetTime(2006,08,15,12,20,22) ;
003)获取当前时间(或指定时间)的具体年,月,日,时,分,秒
GetSeconds() ;//获取当前时间(或指定时间)的秒
GetMinutes() ;//获取当前时间(或指定时间)的分
GetHour() ;//获取当前时间(或指定时间)的时
GetDay() ;//获取当前时间(或指定时间)的天
GetDayOfWeek() ;//获取当前时间(或指定时间)的星期
GetMonth() ;//获取当前时间(或指定时间)的月
GetYear() ;//获取当前时间(或指定时间)的年
GetDate() ;//获取当前时间(或指定时间)的字串
功能:获取当前时间(或指定时间)的具体年,月,日,时,分,秒
参数:获取指定时间的时间值时,输入具体时间值(和GetTime()函数返回的值意义一样)
返回: 返回相应的值或字符串
一般使用形式:
m_t00=GetDay() ;
m_t00=GetDay(10025656...) ;
可以使用全局变量数据库来记录之前的信号变量前后之间的时间差,由于较为复杂,稍后我们会做出例子。
多谢! 期待着
另外,我在[交易] ---> [合约信息设置] 里设置的外汇品种,如EURUSD 的单位/乘数 设为 1 ,但经常自动的被改为0,影响系统头寸控制,请求解决办法,谢谢!
本示例以后台自动交易的方式,展现了金字塔实现延迟信号确认的工作原理。
本代码可以实现3天现上穿5天线后,15秒等待信号确认后,再发开仓单。
请选择固定时间间隔模式运行后台自动交易,间隔时间设为1秒
本公式会在运行时产生很多临时数据,请用户再第二天交易前清空这些历史变量,否则会导致与第二天的临时变量冲突。方法 工具菜单-》数据-》全局变量,进去后,选择“清空”按钮
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,MKT);
TSELL(CROS2,0,MKT);
本示例以后台自动交易的方式,展现了金字塔实现延迟信号确认的工作原理。
本代码可以实现3天现上穿5天线后,15秒等待信号确认后,再发开仓单。
请选择固定时间间隔模式运行后台自动交易,间隔时间设为1秒
本公式会在运行时产生很多临时数据,请用户再第二天交易前清空这些历史变量,否则会导致与第二天的临时变量冲突。方法 工具菜单-》数据-》全局变量,进去后,选择“清空”按钮
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,MKT);
TSELL(CROS2,0,MKT);
能否直接设置在 金字 塔软件 里面 可以 自由调整 ,不需要现在这样 个个 模型都需要 加上 这些原码???并且可以在图表交易中使用 谢谢