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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 初学者求助关于交易按程序的编写问题

   

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


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

主题:初学者求助关于交易按程序的编写问题

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


加好友 发短信
等级:新手上路 帖子:36 积分:0 威望:0 精华:0 注册:2014/4/7 21:00:31
初学者求助关于交易按程序的编写问题  发帖心情 Post By:2014/4/14 14:46:11    Post IP:221.7.7.122[只看该作者]

思路如下:

1:空仓情况下(2个常量:X/Y)

   收盘价上穿X开多,如果收盘前下破X平多,否则持多仓过夜;
   收盘价下破Y开空,如果收盘前上穿Y平空,否则持空仓过夜;


2:持仓情况下(2个常量:X/Y)

   持多仓:
   收盘价下破Y平多开空,如果收盘前上穿Y平空开多,否则持空仓过夜;

   持空仓:
   收盘价上穿X平空开多,如果收盘前下穿X平多开空,否则持多仓过夜;

 

已经请人编好的如下:

 

 

if holding=0 and cross(close,x) then begin

   buy(1,1,market);

end

 

if cross(x,close) and holding>0 then begin

   sell(1,0,market);

 end

 

if holding=0 and cross(y,close) then begin

    buyshort(1,1,market);

end

 

if holding<0 and cross(close,y) then begin

    sellshort(1,0,market);

end

 

 

if holding>0 and cross(y,close) then begin

    sell(1,0,market);

    buyshort(holding=0,1,market);

end

 

if  cross(close,y) then begin

   sellshort(1,0,market);

   buy(holding=0,1,market);

end

 

if holding<0 and cross(close,x) then begin

  sellshort(1,0,market);

  buy(holding=0,1,market);

end

 

if cross(x,close) then begin

   sell(1,0,market);

   buyshort(holding=0,1,market);

end

 

问题是:

 

在我持有隔夜多单时,次日日内在没有出现平多开空动作情况下,直接开多了,也就是这段指令发生作用了:

if holding<0 and cross(close,x) then begin

  sellshort(1,0,market);

  buy(holding=0,1,market);

end

 

我是想在我持有隔夜多单时,次日日内如果没有下破Y则持有多单过夜,若下破Y,则平多开空,若再次上穿X,则平空开多,上述条件循环执行。能力有限,不知我表达清楚了没有,还请各位老师不吝赐教!

[此贴子已经被作者于2014/4/14 14:46:39编辑过]

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


加好友 发短信
等级:超级版主 帖子:5895 积分:3774 威望:0 精华:0 注册:2012/1/1 0:00:01
  发帖心情 Post By:2014/4/14 15:02:47    Post IP:58.246.57.26[只看该作者]

if cross(close,y) then begin

sellshort(1,0,market);

buy(holding=0,1,market);

end

//是你这段代码出现问题,此处没有限制有仓或无仓的情况。

另外CROSS函数不能在IF条件语句里使用

 

 

例如代码第一段

if holding=0 and cross(close,x) then begin

buy(1,1,market);

end

 

应该是这样写

cond1:CROSS(C,X);

IF HOLDING=0 AND COND1 THEN

BEGIN

BUY();

END

[此贴子已经被作者于2014/4/14 15:07:03编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
crocodile
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:36 积分:0 威望:0 精华:0 注册:2014/4/7 21:00:31
  发帖心情 Post By:2014/4/14 15:14:44    Post IP:221.7.7.122[只看该作者]

非常感谢超版,我再好好研究一下。。。

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


加好友 发短信
等级:新手上路 帖子:36 积分:0 威望:0 精华:0 注册:2014/4/7 21:00:31
  发帖心情 Post By:2014/4/14 17:05:19    Post IP:221.7.7.117[只看该作者]

老师好,上述代码里的‘buyshort(holding=0,1,market);可以这么写吗?holding=0可以放在这里吗?谢谢

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


加好友 发短信
等级:超级版主 帖子:5895 积分:3774 威望:0 精华:0 注册:2012/1/1 0:00:01
  发帖心情 Post By:2014/4/14 17:25:21    Post IP:58.246.57.26[只看该作者]

可以的


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
Crocodile
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:36 积分:0 威望:0 精华:0 注册:2014/4/7 21:00:31
  发帖心情 Post By:2014/4/14 18:19:39    Post IP:221.7.7.68[只看该作者]

非常感谢!

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


加好友 发短信
等级:新手上路 帖子:36 积分:0 威望:0 精华:0 注册:2014/4/7 21:00:31
  发帖心情 Post By:2014/4/15 7:57:02    Post IP:222.82.187.14[只看该作者]

老师麻烦看一下,这样写对吗?我试了一下,主图没有显示,软件好像还是不能判断持仓情况:

 

持多仓:
   收盘价下破Y平多开空,如果收盘前上穿Y平空开多,否则持空仓过夜;

cond3:=CROSS(C,Y);
cond4:=CROSS(Y,C);

 

if holding>0 and cond4 then
begin

sell(1,0,market);

buyshort(holding=0,1,market);

end


if  holding>0 and cond3 then
begin

   sellshort(1,0,market);

   buy(holding=0,1,market);

end


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


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
  发帖心情 Post By:2014/4/15 9:09:51    Post IP:180.169.30.6[只看该作者]

“if holding>0 and cond3 then ”
平空时应该时holding<0,另外平仓手数最好写holding,不要写0,holding是平掉本策略里的持仓,0会平掉此品种所有持仓,包括其他策略开的仓。


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/4/15 9:10:22    Post IP:58.246.57.26[只看该作者]

if  holding>0 and cond3 then
begin

   sellshort(1,0,market);

   buy(holding=0,1,market);

end

 

平空的持仓判断是<0不是>0



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:36 积分:0 威望:0 精华:0 注册:2014/4/7 21:00:31
  发帖心情 Post By:2014/4/15 10:29:16    Post IP:221.7.7.98[只看该作者]

非常感谢,受教了

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