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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 序列计算改成逐K计算后,模型没有反应

   

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


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

主题:序列计算改成逐K计算后,模型没有反应

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


加好友 发短信
等级:论坛游侠 帖子:176 积分:0 威望:0 精华:0 注册:2019/2/22 9:45:36
序列计算改成逐K计算后,模型没有反应  发帖心情 Post By:2019/12/4 19:36:06    Post IP:175.10.238.8[只看该作者]

以下代码在序列计算中加载没有问题,但是改成逐K计算后再加载就一点反应没有。

//主合约开多时
VARIABLE:BBZY=0; //止盈
VARIABLE:BBZS=0; //止损
//主合约开空时
VARIABLE:SSZY=0; //止盈
VARIABLE:SSZS=0; //止损

VARIABLE:主合约方向 := 0;

VARIABLE:N := 0;
VARIABLE:开仓时间 := 094500;
VARIABLE:平仓时间 := 114500;
VARIABLE:账户 := '';
VARIABLE:主合约 := 'HSI00';
VARIABLE:副合约 := 'HHI00';

昨收 := CallStock(主合约, VTCLOSE, 6, -1);
//最新 := CallStock(主合约, VTCLOSE);
最新 := dynainfo2(7, 主合约);
涨跌值 := 最新 - 昨收;
//NEWJC := ABS(CallStock(主合约, VTCLOSE, -1, 0) - CallStock(副合约, VTCLOSE, -1, 0));
NEWJC := dynainfo2(7, 主合约)-dynainfo2(7, 副合约);


// CurrentTime()<=095000) and
if CurrentTime()>=开仓时间 and N=0 then begin
if (涨跌值 > 0) then begin
//主开多,副开空
TBUY(1, 1, MKT, 0, 0, 账户, 主合约);
TBUYSHORT(1, 1, MKT, 0, 0, 账户, 副合约);
主合约方向 := 1;
//INJC := ABS(CallStock(主合约, VTCLOSE, -1, 0) - CallStock(副合约, VTCLOSE, -1, 0));
INJC := dynainfo2(7, 主合约)-dynainfo2(7, 副合约);
BBZY := INJC + 10;
BBZS := INJC -10;
N := 1;
end
else if (涨跌值 < 0) then begin
//主开空,副开多
TBUYSHORT(1, 1, MKT, 0, 0, 账户, 主合约);
TBUY(1, 1, MKT, 0, 0, 账户, 副合约);
主合约方向 := 0;
//INJC := ABS(CallStock(主合约, VTCLOSE, -1, 0) - CallStock(副合约, VTCLOSE, -1, 0));
INJC := dynainfo2(7, 主合约)-dynainfo2(7, 副合约);
SSZY := INJC - 10;
SSZS := INJC + 10;
N := 1;
end
end



//===============主开多止盈===============
if 主合约方向=1 and NEWJC>=BBZY then begin
//主平多
TSELL(1, 1, MKT, 0, 0, 账户, 主合约);
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 副合约);
N := 0;
end

//===============主开多止损===============
if 主合约方向=1 and NEWJC<=BBZS then begin
//主平多
TSELL(1, 1, MKT, 0, 0, 账户, 主合约);
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 副合约);
N := 0;
end

//===============主开空止盈===============
if 主合约方向=0 and NEWJC<=SSZY then begin
//主平空
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 主合约);
TSELL(1, 1, MKT, 0, 0, 账户, 副合约);
N := 0;
end

//===============主开空止损===============
if 主合约方向=0 and NEWJC>=SSZS then begin
//主平空
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 主合约);
TSELL(1, 1, MKT, 0, 0, 账户, 副合约);
N := 0;
end

//================到点全平================
//if CurrentTime()>=平仓时间 then begin
// //到点平仓
// //全部平仓
// if 主合约方向=1 and N=1 then begin
// //主平多
// TSELL(1, 1, MKT, 0, 0, 账户, 主合约);
// TSELLSHORT(1, 1, MKT, 0, 0, 账户, 副合约);
// N := 0;
// end
// else if 主合约方向=0 and N=1 then begin
// //主平空
// TSELLSHORT(1, 1, MKT, 0, 0, 账户, 主合约);
// TSELL(1, 1, MKT, 0, 0, 账户, 副合约);
// N := 0;
// end
//end

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


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

你这里模式切换影响到的主要就全局变量了。

variable 为全局变量申明语句,一般用在逐K线计算模式下声明一个全局变量或者在序列模式和逐K线模式下声明一个内部数组。
序列模式下variable申明的序列变量会被强制转换为常数,故与普通的常数变量是没有区别的,因此序列模式下的序列变量不要使用variable进行申明。

你后面用全局变量涉及到赋值的地方都会受到影响。 另外不建议根据是否有下单来判断代码是否正确,最好把重要变量都做下输出调试,以输出调试的结果为准。
[此贴子已经被作者于2019/12/5 9:03:09编辑过]


命数如织,当如磐石。
 回到顶部