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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 帮帮忙呀,实在无法解决该问题!

   

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


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

主题:帮帮忙呀,实在无法解决该问题!

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


加好友 发短信
等级:论坛游民 帖子:121 积分:0 威望:0 精华:0 注册:2014/5/13 16:47:07
帮帮忙呀,实在无法解决该问题!  发帖心情 Post By:2014/5/23 20:42:54    Post IP:140.246.108.24[只看该作者]

以下这段交易系统:

variable:n=0;
ma1:ma(c,10);
ma2:ma(c,20);

多头:ma1>ma2,LINETHICK0;
空头:ma2>ma1,LINETHICK0;

上轨:ref(hhv(h,15),1);
下轨:ref(llv(l,15),1);

开多:h>上轨,LINETHICK0;
开空:l<下轨,LINETHICK0;

if  开多  and n=0 and holding=0 and TIME>093000 and time<145000 then BEGIN
buy(多头 and 开多 ,1,LIMITR,上轨-0.2);
BUYSHORT(空头 and 开空,1,LIMITR,下轨-0.2);
n:=n+1;
end
Sell(空头 or time>145000,1,MARKET);
sellshort(多头 or time>145000,1,MARKET);

if time=CLOSETIME(0) then n:=0;

这段交易系统,只有几天是有测算有信号,

中间有很多天没有测算,没有信号。。

怪的是,有信号的日子,全部是早上9点31分开仓,其余那些时间符合条件的时间大于9点31分的仓位多没有信号??


但是把下面两行代码的 ‘开多’ 和 ‘开空’  给去掉后:
buy(多头 and 开多 ,1,LIMITR,上轨-0.2);
BUYSHORT(空头 and 开空,1,LIMITR,下轨-0.2);
却每天多有信号,

但如果不加‘开多’和‘开空’,就没办法在:
开多:h>上轨;OR 开空:l<下轨;成立 且 时间大于9点30分时 且 其他条件成立时  每天多有信号?

请问我是错在哪里?

[此贴子已经被作者于2014/5/23 20:43:54编辑过]

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


加好友 发短信
等级:论坛游民 帖子:121 积分:0 威望:0 精华:0 注册:2014/5/13 16:47:07
  发帖心情 Post By:2014/5/23 20:46:09    Post IP:140.246.108.24[只看该作者]

这个系统的要求是这样子
取以前15根1分钟K线的最高价和最低价为上轨下轨,
当时间大于9点30分时,
如果MA1大于MA2,且最高价突破上轨,开多
如果MA2大于MA1,且最低价跌破下轨,开空。




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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2014/5/23 20:53:57    Post IP:110.172.219.180[只看该作者]

金字塔公式编写调试

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1

 

请先认真学习一下调试功能,你说的问题完全可以自行解决


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


加好友 发短信
等级:论坛游民 帖子:121 积分:0 威望:0 精华:0 注册:2014/5/13 16:47:07
  发帖心情 Post By:2014/5/23 21:01:11    Post IP:140.246.108.24[只看该作者]

大哥呀,我当然知道调试啦,但是我就是调试出了问题,就是没办法解决呀。。
buy(多头 and 开多 ,1,LIMITR,上轨-0.2);
BUYSHORT(空头 and 开空,1,LIMITR,下轨-0.2);

明明条件完全符合,却没有开仓?

就是做不到开仓!

没办法才上来问的

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


加好友 发短信
等级:论坛游民 帖子:121 积分:0 威望:0 精华:0 注册:2014/5/13 16:47:07
  发帖心情 Post By:2014/5/23 21:28:19    Post IP:140.246.108.24[只看该作者]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看
天呀,谁帮帮忙呀,

我要是能解决干嘛上来发帖呀

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


加好友 发短信
等级:小飞侠 帖子:1966 积分:0 威望:0 精华:1 注册:2013/6/15 21:56:35
  发帖心情 Post By:2014/5/23 21:48:53    Post IP:118.181.105.109[只看该作者]

取以前15根1分钟K线的最高价和最低价为上轨下轨,
当时间大于9点30分时,
如果MA1大于MA2,且最高价突破上轨,开多
如果MA2大于MA1,且最低价跌破下轨,开空。

这个策略这样写

t1:=time>093000 and time<145000
rh:=ref(hhv(h,15),1);
rL:=ref(llv(L,15),1);

ma10:=ma(c,10);
ma20:=ma(c,20);

if t1 and h>rh and ma10>ma20 then
begin
sellshort(holding<0,0,limitr,rh-0.2);
buy(holding=0,1,limitr,rh-0.2);
end
if t1 and l<rL and ma10<ma20 then
begin
sell(holding>0,0,limitr,rL+0.2);
buyshort(holding=0,1,limitr,rL+0.2);
end
if time>145000 then
begin
sell(holding>0,0,limitr,c);
sellshort(holding<0,0,limitr,c);
end
------------------------------------------
以上是你要的程序,但是你这是一种自欺欺人的做法,你的交易结果是不可能达到这个程序的测试结果的,也就是说如果怎么干你的实盘结果和你的测试结果就没有任何关系。
那么按你的意思也应该写成这样
t1:=time>093000 and time<145000
rh:=ref(hhv(h,15),1);
rL:=ref(llv(L,15),1);

ma10:=ma(c,10);
ma20:=ma(c,20);

if t1 and h>=rh and ma10>ma20 then
begin
sellshort(holding<0,0,limitr,rh+0.4);
buy(holding=0,1,limitr,rh+0.4);
end
if t1 and l<=rL and ma10<ma20 then
begin
sell(holding>0,0,limitr,rL-0.4);
buyshort(holding=0,1,limitr,rL-0.4);
end
if time>145000 then
begin
sell(holding>0,0,limitr,c-0.2);
sellshort(holding<0,0,limitr,c+0.2);
end
----------------------------------------------------------------
这样写也有问题,可能会出现没有成交价格的问题所以按你的策略意思应该这样写;
t1:=time>093000 and time<145000
rh:=ref(hhv(h,15),1);
rL:=ref(llv(L,15),1);

ma10:=ma(c,10);
ma20:=ma(c,20);

if t1 and h>=rh and ma10>ma20 then
begin
sellshort(holding<0,0,limitr,max(rh,o)+0.4);
buy(holding=0,1,limitr,max(rh,o)+0.4);
end
if t1 and l<=rL and ma10<ma20 then
begin
sell(holding>0,0,limitr,min(rL,o)-0.4);
buyshort(holding=0,1,limitr,min(rL,o)-0.4);
end
if time>145000 then
begin
sell(holding>0,0,limitr,c-0.2);
sellshort(holding<0,0,limitr,c+0.2);
end
-------------------------------------------------------
这样的写法其实还是有问题的,会到致你的测试信号和实盘信号有差别(由于这个程序程序的特例差别不是太大)。也就是说你这个小小的程序还含有未来数据。这个你自己琢磨吧。

版主评定:好评,获得10个金币奖励好评,获得10个金币奖励
(理由:奖励谢谢对小白用户的耐心指教)
 回到顶部
帅哥哟,离线,有人找我吗?
追逐趋势
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:121 积分:0 威望:0 精华:0 注册:2014/5/13 16:47:07
  发帖心情 Post By:2014/5/23 22:58:35    Post IP:140.246.108.24[只看该作者]

这位朋友,非常感谢你的解答!

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


加好友 发短信
等级:论坛游民 帖子:121 积分:0 威望:0 精华:0 注册:2014/5/13 16:47:07
  发帖心情 Post By:2014/5/23 23:25:11    Post IP:140.246.108.24[只看该作者]


variable:n=0;
ma1:ma(c,10);
ma2:ma(c,20);

多头:ma1>ma2,LINETHICK0;
空头:ma2>ma1,LINETHICK0;

上轨:ref(hhv(h,15),1);
下轨:ref(llv(l,15),1);

开多:h>上轨,LINETHICK0;
开空:l<下轨,LINETHICK0;

if  开多  and n=0 and 多头 and TIME>093000 and time<145000 then BEGIN
buy( holding=0 ,1,LIMITR,上轨-0.2);

n:=n+1;
end

if  开空  and n=0 and 空头 and TIME>093000 and time<145000 then BEGIN
BUYSHORT(holding=0 ,1,LIMITR,下轨-0.2);
n:=n+1;
end

Sell(空头 or time>145000,1,MARKET);
sellshort(多头 or time>145000,1,MARKET);

if time=CLOSETIME(0) then n:=0;

以上时我修改后的代码,
跟一楼的代码差别是:
把原来BUY和BUYSHORT里的第一个参数,放到BUY外面判断。


在这里我要反映个问题:
为什么我把BUY里面的参数换成HOLDING=0,把变量多头和空头放在BUY外面判断,就可以每天在满足条件下多可以开仓



而原来一楼的代码中的:

buy(多头 and 开多 ,1,LIMITR,上轨-0.2);
BUYSHORT(空头 and 开空,1,LIMITR,下轨-0.2);

在条件满足的情况下,只有9点31分产生的信号才能开仓,超过了9点31分的却不行?

这是个BUG 呀!


这是不是金字塔的BUG ,还是金字塔中在IF语句里的BUY和BUYSHORT的第一个参数,只能是关于HODING的判断?

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


加好友 发短信
等级:论坛游民 帖子:121 积分:0 威望:0 精华:0 注册:2014/5/13 16:47:07
  发帖心情 Post By:2014/5/23 23:43:01    Post IP:140.246.108.24[只看该作者]

我遇到的情况简单讲是这样子的,不知道这个是不是你们的BUG:
当日交易,每天只交易一单:
TIME>XX,time<qq  
在IF语句里,只要BUY和BUYSHORT的第一个参数不是关于HOLDING的,而是关于其他的,
那么当天就算BUY和BUYSHORT的条件成立时,只要不是在XX+1的时间里成立的,
那么XX+1的时间以后所有条件成立时应该出现的信号和开平仓的地方,金字塔就不会出现信号和并且不会开平仓了。。
会导致在测试时,很多的应该开仓的日子经常却没有开仓。
测试的时候,粗略算了一下,在上面的情况出现时,100天里面,原本100天多应该开仓,而出现了上面的情况就只有20多天有开仓。


只有把在IF语句里的BUY和BUYESHORT的第一个参数,换成关于HOLDING的,
并且把其他条件放在BUY和BUYESHORT外面进行判断后,金字塔才能正常的出现信号和开仓。。


请问这是金字塔在IF语句里对BUY和buyshort的第一个参数故意这样设置的吗?
[此贴子已经被作者于2014/5/23 23:44:45编辑过]

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


加好友 发短信
等级:小飞侠 帖子:1966 积分:0 威望:0 精华:1 注册:2013/6/15 21:56:35
  发帖心情 Post By:2014/5/24 9:46:53    Post IP:118.181.105.109[只看该作者]

先不要怀疑平台的bug,这种常用的东西一般不会有问题的。等你把金字塔玩熟了,用到一些偏僻的功能有可能会遇到BUG.你的写法有问题,你1楼的的程序在IF里限制里了holding=0....那么只要有持仓就不会进行任何交易了,按我给你的写法写程序。建议你还是好好从基础开始学起。

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