欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 能否不用ignorecheckprice函数实现ignorecheckprice的功能

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3561人关注过本帖树形打印复制链接

主题:能否不用ignorecheckprice函数实现ignorecheckprice的功能

帅哥哟,离线,有人找我吗?
sword8586
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
能否不用ignorecheckprice函数实现ignorecheckprice的功能  发帖心情 Post By:2021/4/20 9:15:37    Post IP:183.6.175.114[显示全部帖子]

如题:
事实:在使用限价时,当策略发出信号但是有时限价在当根K线价格波动范围。这时必须使用ignorecheckprice函数保证发出信号,等待以后K线满足价格条件成交。
目的:能否不用ignorecheckprice函数实现ignorecheckprice的功能。保证在随后K线价格满足时成交
MA1:=REF(MA((HIGH+LOW+CLOSE)/3,AVGLENGTH),1);//定义MA1
UPPERBAND:=MA1+REF(MA(TR,40),1);//上轨
LOWERBAND:=MA1-REF(MA(TR,40),1);//下轨
ENTRYLONGCOND:=MA1>REF(MA1,1) ;//开多条件
EXITLONGCOND:=HIGH>=MA1;//平空条件
//交易系统
KDL:MAX(OPEN,UPPERBAND),COLORMAGENTA;
KKL:MIN(OPEN,LOWERBAND)-1*MINDIFF,COLORCYAN;
PKL:MIN(OPEN,MA1)+1*MINDIFF,COLORGREEN;
PDL:MAX(OPEN,MA1)-1*MINDIFF,COLORRED;
IF HOLDING=0 THEN BEGIN //若持仓为0
 IF ENTRYLONGCOND THEN //且满足开多条件
  BUY(between(KDL,L,H),手数,LIMIT,KDL),IGNORECHECKPRICE;//
  KPJ:=KDL;   
END
IF HOLDING>0 THEN BEGIN//若持有空单
 IF EXITLONGCOND THEN//且满足平空条件
  SELL(between(PDL,L,H),HOLDING,LIMIT,PDL),IGNORECHECKPRICE;//
  KPJ:=PDL; 
END
我的方法如下:
VARIABLE:KPJ=0,mKDPK=0,mKKPD=0,mKDL=0,mPDL=0,  mHolding=0;
MA1:=REF(MA((HIGH+LOW+CLOSE)/3,AVGLENGTH),1);//定义MA1
UPPERBAND:=MA1+REF(MA(TR,40),1);//上轨
LOWERBAND:=MA1-REF(MA(TR,40),1);//下轨
ENTRYLONGCOND:=MA1>REF(MA1,1) ;//开多条件
EXITLONGCOND:=HIGH>=MA1;//平空条件
//交易系统
KDL:MAX(OPEN,UPPERBAND),COLORMAGENTA;
KKL:MIN(OPEN,LOWERBAND)-1*MINDIFF,COLORCYAN;
PKL:MIN(OPEN,MA1)+1*MINDIFF,COLORGREEN;
PDL:MAX(OPEN,MA1)-1*MINDIFF,COLORRED;
IF HOLDING=0 and ENTRYLONGCOND THEN BEGIN //若持仓为0
  mKKPD:=0;
  mKDPK:=1;  
  mKDL:=KDL;  
END
IF HOLDING>0 and EXITLONGCOND THEN BEGIN//若持有空单
  mKKPD:=1;
  mKDPK:=0;  
  PDL:=PDL;   
END
IF HOLDING=0 and mKDPK=1 and between(mKDL,L,H) THEN BEGIN //若持仓为0
  BUY(1,手数,LIMIT,mKDL);//开多单  KPJ:=MAX(OPEN,UPPERBAND);
  mHolding:=1;      
END
IF HOLDING>0 and mKKPD=1 and between(mPDL,L,H) THEN BEGIN//若持有空单
  SELL(1,HOLDING,LIMIT,mPDL);//平空单
  mHolding:=0;    
END
问题:我的错误在哪?谢谢老师

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 9:53:11    Post IP:183.6.175.114[显示全部帖子]

是的,就只有一个信号。麻烦老师帮忙改改。谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 11:06:03    Post IP:183.6.175.114[显示全部帖子]

AVGLENGTH、AVGLENGTH:=40;

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 11:17:43    Post IP:183.6.175.114[显示全部帖子]

VARIABLE:KPJ=0,mKDPK=0,mKKPD=0,mKDL=0,mPDL=0,  mHolding=0;
MA1:=REF(MA((HIGH+LOW+CLOSE)/3,40),1);//定义MA1
UPPERBAND:=MA1+REF(MA(TR,40),1);//上轨
LOWERBAND:=MA1-REF(MA(TR,40),1);//下轨
ENTRYLONGCOND:=MA1>REF(MA1,1) ;//开多条件
EXITLONGCOND:=HIGH>=MA1;//平空条件
//交易系统
KDL:MAX(OPEN,UPPERBAND),COLORMAGENTA;
KKL:MIN(OPEN,LOWERBAND)-1*MINDIFF,COLORCYAN;
PKL:MIN(OPEN,MA1)+1*MINDIFF,COLORGREEN;
PDL:MAX(OPEN,MA1)-1*MINDIFF,COLORRED;
IF HOLDING=0 and ENTRYLONGCOND THEN BEGIN //若持仓为0
  mKKPD:=0;
  mKDPK:=1;  
  mKDL:=KDL;  
END
IF HOLDING>0 and EXITLONGCOND THEN BEGIN//若持有空单
  mKKPD:=1;
  mKDPK:=0;  
  PDL:=PDL;   
END
IF HOLDING=0 and mKDPK=1 and between(mKDL,L,H) THEN BEGIN //若持仓为0
  BUY(1,手数,LIMIT,mKDL);//开多单  KPJ:=MAX(OPEN,UPPERBAND);
  mHolding:=1;      
END
IF HOLDING>0 and mKKPD=1 and between(mPDL,L,H) THEN BEGIN//若持有空单
  SELL(1,HOLDING,LIMIT,mPDL);//平空单
  mHolding:=0;    
END

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 15:12:55    Post IP:183.6.175.114[显示全部帖子]

老师:的确可以正常开平仓了,但是计算出的结果完全不等同于ignorcheckprice函数。
问题出在哪呢?字面上理解ignorcheckprice,找不出问题来。老师能否更详细的描述其机制呢?
可以的话,请老师帮忙在修改下。

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 16:04:13    Post IP:183.6.175.114[显示全部帖子]

这个结果肯定会不一样的。ignorcheckprice 是忽略价格检查。也就是说系统默认是有价格检查的。价格不在当前K范围内是发不出信号,开不了仓的。

你现在这个做法 是将开仓位置完全移动到价格满足的位置上去了,从原本应该出信号的位置 到最后实际出信号的位置,这中间一段行情 在你现在模型里面是被完全忽略掉的。如果按照之前做法用ignorcheckprice 那么这段行情是该干嘛干嘛。

老,我比较纠结“ignorcheckprice 是忽略价格检查"这句话。结合我的上面的替代策略,我的理解不知道是否出偏差:

1、若KDL价格不在当根K线范围,不加ignorcheckprice不能发出信号!加上,在当根K线发出信号,但是是假信号,不会引起成交,也不会在以后的K线依据KDL价格成交!!
1、若KDL价格在当根K线范围,不加与ignorcheckprice均能发出信号!正常成交。

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 16:27:14    Post IP:183.6.175.114[显示全部帖子]

 是会成交的。 不是不能成交。加了之后正常出信号 正常成交。

老师,我不能理解的是价格都不在当根K范围,发出的价格(图表上的)确实是KDL。那么,实际成交价格(发出的价格)是什么?依据是什么?图标回测统计的计算依据是什么价格呢?过来当根K以后还会以限价KDL成交还是其他机制?
请老师明示,谢谢。

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 19:50:20    Post IP:119.130.147.122[显示全部帖子]

回测里的成交价,就是你限价的那个价格。这个IGNORECHECKPRICE也只有在你用限价时候才会出现。

而且实际交易中,你受到的价格限制就只是涨跌停,你想按照什么价格下单,跟你当前K什么价格范围一点关系都没有。最多就是不成交或者成交慢而已。
所以你价格不在当前K范围的情况, 在回测中 只是无法体现出成交延迟的情况。其他处理都是符合实际情况的1.是正常发单 2.按照委托价成交。
老师,颜色标记的几句话,我读起来似乎有逻辑矛盾,不知道正确不:
1、跟你当前K什么价格范围一点关系都没有。最多就是不成交或者成交慢而已。意味着:当前发出信号K价格虽然不满足KDL条件,必然会发出信号(因为有IGNORECHECKPRICE,发出了申请单,价格为KDL)!成不成功取决于当前K满不满足价格条件,不满足就是挂单!挂单后若以后价格满足,以后就可成交!否则不成交!如不成交回测时图表会显示开仓信号吗?换句话说,在我提供的策略中,不能成交的开仓信号都不会在图表中显示,再下次开仓信号出现之前的平仓信号未能执行,这些开仓信号也不会出现!
2、所以你价格不在当前K范围的情况, 在回测中 只是无法体现出成交延迟的情况。其他处理都是符合实际情况的意味着:加入IGNORECHECKPRICE的图表回测时不准的,因为有些限价指令发出的挂单是不会成功的,成功了的挂单在实盘中也可能不会及时平仓的!

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/20 19:53:53    Post IP:119.130.147.122[显示全部帖子]

为了帮助我理解,老师最好把该函数的计算及回测机制直接发给我。谢谢了。我好依据回测机制优化我的策略。

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/4/21 15:19:09    Post IP:183.6.175.114[显示全部帖子]



感谢老师对我的纠结的理解。现在我非常糊涂:

2.这种机制没办法完全描述的,而且这个函数真就一句话解释,没什么复杂的逻辑在里面的。系统默认下单价格不能超过当前K范围(开多不能低于最低价,开空不能高于最高价),用了这个函数,则取消这个默认限制,直接按照委托价成交。
我们能肯定的就是,金字塔系统对KDL不在当根K线内的价格加以了限制,不能发出交易指令,对应于手工,只要不超出涨跌停,所有K所有价格都可发出交易指令!IGNORECHECKPRICE函数对超出当根价格也可发出指令!问题是交易所只有限价模式才能保持挂单!若不发出指令IGNORECHECKPRICE函数就毫无意义。难道IGNORECHECKPRICE函数是记住信号的方向及价格,只要以后满足就予以发出信号成交?图表的信号出现的位置实际就是本身信号出现的位置,并未延后。
好糊涂。

 回到顶部
总数 11 1 2 下一页