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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 为什么上面的执行了,下面这条却不执行?

   

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


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

主题:为什么上面的执行了,下面这条却不执行?

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


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
为什么上面的执行了,下面这条却不执行?  发帖心情 Post By:2020/3/30 9:01:47    Post IP:180.169.30.6[只看该作者]

请教:金字塔里面,图标程序化,两条语句是连续的,为什么上面的执行了,下面这条却不执行?
MSGOUT(ISLASTBAR,'Place2.2');
BUY(1,SS0,MARKET);
SS0默认是1

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/30 9:22:07    Post IP:180.169.30.6[只看该作者]

 你说的不执行是指图表上没有显示开多信号?你看下当前图表虚拟持仓是0 还是空头仓位 如果是空头仓位,是触发不了开多信号的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
CTR1013
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:31 积分:0 威望:0 精华:0 注册:2017/9/6 21:45:50
  发帖心情 Post By:2020/3/30 10:43:14    Post IP:112.96.103.95[只看该作者]

没有显示开多信号,虚拟持仓是多仓,就是不明白为什么总是不执行开多操作。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/30 11:00:40    Post IP:180.169.30.6[只看该作者]

光这2句代码不可能有问题的。这个开仓都没有限制。在图表上肯定会出信号的。  你看下是不是虚拟资金不足了。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
CTR1013
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:31 积分:0 威望:0 精华:0 注册:2017/9/6 21:45:50
  发帖心情 Post By:2020/3/30 11:22:59    Post IP:112.96.103.95[只看该作者]

如果是资金不够,那也应该是在交易记录那里提示才对啊,现在是根本就没有下达交易指令,但是如果我打开了持仓同步则会马上开仓,不打开持仓同步就没有任何反应。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/30 12:59:48    Post IP:180.169.30.6[只看该作者]

我说的是模型的虚拟资金,不是实盘的那个资金,你把ASSET 也输出看下。如果是虚拟资金不足 也是可能导致不出信号的,如果不出信号那肯定会无法下单。 另外你最好提供下你代码,交易周期,品种 我们本地从代码上排查下,仅仅上面2行代码 无法进一步判断为什么没有信号。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
CTR1013
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:31 积分:0 威望:0 精华:0 注册:2017/9/6 21:45:50
  发帖心情 Post By:2020/3/30 14:09:58    Post IP:112.96.103.95[只看该作者]

实在不明白为什么金字塔要弄这么复杂,弄什么虚拟资金虚拟持仓,该怎么执行就怎么执行啊,弄这么多干嘛?

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


加好友 发短信
等级:新手上路 帖子:31 积分:0 威望:0 精华:0 注册:2017/9/6 21:45:50
  发帖心情 Post By:2020/3/30 21:33:03    Post IP:61.242.40.199[只看该作者]

以下是我简化后的代码:
WARNING_DISABLE:4;
WARNING_DISABLE:9;
VARIABLE:BuySell='00';
BuySell:=GETINIFILESTRING('C:\SystemSet.ini','Gen','BuySell');
if BuySell='' then BuySell:='00';
SS0:=1;
HoldFlag:if(TBUYHOLDING(1)<>0,1,if(TSELLHOLDING(1)<>0,-1,0)),NODRAW,NOAXIS;//这个在没登录的时候都是0
if ISLASTBAR then begin
if (BuySell='B1' or BuySell='B2' or BuySell='B3') then begin 
MSGOUT(ISLASTBAR,'Place1' & ',Holding:' & numtostr(Holding,0));
if HoldFlag=0 then begin 
MSGOUT(ISLASTBAR,'Place2' & ',Holding:' & numtostr(Holding,0));
if HoldFlag<0 then begin 
MSGOUT(ISLASTBAR,'Place2.1' & ',Holding:' & numtostr(Holding,0));
SELLSHORT(1,0,MARKET);//做多前先平空
end
HoldFlag:=if(TBUYHOLDING(1)<>0,1,if(TSELLHOLDING(1)<>0,-1,0));
if HoldFlag=0 then begin
MSGOUT(ISLASTBAR,'Place2.2' & ',Holding:' & numtostr(Holding,0));
    BUY(1,SS0,MARKET);
    HoldFlag:=if(TBUYHOLDING(1)<>0,1,if(TSELLHOLDING(1)<>0,-1,0));//这个在没登录的时候都是0
    end
end
else if HoldFlag>0 then begin
MSGOUT(ISLASTBAR,'Place2.3' & ',Holding:' & numtostr(Holding,0));
end
end
end
也就是说,我的想法是从C:\SystemSet.ini文件中读取BuySell变量的值来判断交易动作,现在我文件中BuySell变量的值为B2,运行都是正常的,输出如下:
2020/03/23 09:00:24  Place1,Holding:0
2020/03/23 09:00:24  Place2,Holding:0
2020/03/23 09:00:24  Place2.2,Holding:0
我现在的疑问是为什么到BUY(1,SS0,MARKET)这一步的时候没有任何反应?

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/3/31 1:25:20    Post IP:101.88.98.179[只看该作者]

你用的应是走完一根k模式,上面的代码整体逻辑是只在最新一根k上执行且判断下单条件。再条件成立时,该根k走完的一瞬间,它就再是最后一根k了,所以信号也就随之消失了(移动到下根k上),自然不会触发下单动作。

如果你想触发可以用固定时间间隔模式。

 

 

注:

1.

图表中不要使用后台函数和配置类函数。会造成图表信号闪烁。如果想操作实际账户的持仓,直接使用后台程序化。

 

2.

检查下你的begin end嵌套语句逻辑存在错误。HoldFlag=0怎么还能嵌套子条件HoldFlag<0 ?猜测应是并列关系。

if HoldFlag=0 then begin 

MSGOUT(ISLASTBAR,'Place2' & ',Holding:' & numtostr(Holding,0));
if HoldFlag<0 then begin 
MSGOUT(ISLASTBAR,'Place2.1' & ',Holding:' & numtostr(Holding,0));
SELLSHORT(1,0,MARKET);//做多前先平空
end

 

 

[此贴子已经被作者于2020/3/31 1:30:52编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
CTR1013
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:31 积分:0 威望:0 精华:0 注册:2017/9/6 21:45:50
  发帖心情 Post By:2020/3/31 12:14:16    Post IP:112.96.103.95[只看该作者]

1.最后一根K线的问题会导致下面这两句只执行上面这一句,下面那句不执行吗?
MSGOUT(ISLASTBAR,'Place2.2' & ',Holding:' & numtostr(Holding,0));
BUY(1,SS0,MARKET);

2.我测试的时候看到用后台函数能够得到正确的数据,为什么会导致信号闪烁呢?在什么情况下会信号闪烁?另外我只有标准版,没有专业版,所以用不了后台交易程序

3.你说这个逻辑错误不是错误来的,只是备用,里面的操作对我的程序不会有任何影响

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