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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 同一根k线内多次下单的问题

   

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


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

主题:同一根k线内多次下单的问题

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


加好友 发短信
等级:论坛游侠 帖子:165 积分:0 威望:0 精华:0 注册:2015/11/17 17:32:45
同一根k线内多次下单的问题  发帖心情 Post By:2016/3/3 13:21:57    Post IP:101.254.236.229[只看该作者]

斑竹好!

我的后台程序是在1分钟k线周期上用固定轮询模式运行的,每1秒轮询。金字塔默认同一个k线内只下一次单,第二次以后的tbuy等代码被执行了会被退回;如果加上allowrepeat又会导致在触发条件价位上下来回买卖买卖的闪烁。请问可以怎么解决这个问题?就是让程序接纳同一个k内的所有下单指令,但是不要闪烁。

例子:
if holding > 0 then tsell(cond1, 1, mkt);
if holding = 0 then tbuy(cond2, 1, mkt);
如果本来持有多仓,某个k内cond1满足了,就平多了;然后几秒之后,同一个k之内,cond2又满足了,就又要开多。请问如何让平多开多都在同一个k内正常下单,但是又不要用allowrepeat造成闪烁?

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


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

首先,你用holding来判断后台持仓的吗?这个是图表的不能用在后台上

其次,同一根k线内只下一次单指的是同一句下单语句只会执行一次,并不表示一根k线只有一个下单动作,只要cond1和cond2都满足,那么在同一根k线内先平后开是完全没问题的,你现在是用holding判断导致的问题,不要在后台上用holding判断,用tholding判断,如果需要更加精细的条件判断,则可以用tbuyhodlingex



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

客户服务部

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

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

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


加好友 发短信
等级:论坛游侠 帖子:165 积分:0 威望:0 精华:0 注册:2015/11/17 17:32:45
  发帖心情 Post By:2016/3/3 14:01:16    Post IP:101.254.236.229[只看该作者]

1. 没有,这个就是为了举例写的两行代码,holding是一个无意错误,与我的代码无关。
2. 如果不同的下单语句可以在同一k线内下单,那请你帮我看一下代码吧。由于我想用不同的参数在同一个品种内交易,所以使用extgbdata全局变量来记录每套参数的仓位。下面的代码就是第一套参数平多和开多的部分。今天上午出现的一个问题是,我本来沥青第一套参数持多,某分钟内平多条件触发,正常平仓;几秒之后开多条件又触发,后台程序化没有出现开多预警,账户的仓位也没有变化,但是去查全局变量的值,却发现全局变量的赋值是与已经执行开多之后的情况一致。也就是说,开多部分的代码,extgbdataset()都执行了(标黄部分),tbuy却没有得到执行,这可能是什么原因导致的呢?

1c:= extgbdata('liqing1c');  //第一套参数仓位
1p:= extgbdata('liqing1p');  //第一套参数平仓价格
1j:= extgbdata('liqing1j'); //第一套参数持仓期间极值
if 1c > 0 then begin //如果第一套参数持多
if close > 1j then 1j := close; //更新极值
if (1j - 1ext * atr) > 1p then 1p := 1j - 1ext * atr; //更新平仓价格
if close <= ceiling(1p) then begin //如果条件符合则平仓并清零所有全局变量
tsell(1, 1c, mkt);
1j := 0;
1p := 0;
1c := 0;
end;
extgbdataset('liqing1c', 1c); //清零全局变量
extgbdataset('liqing1p', 1p);
extgbdataset('liqing1j', 1j);
end;

if 1c = 0 then begin
if close >= floor(ou1) then begin //开多条件
1j := close; //计算全局变量
1p := close - inistop * atr;
1c := round((tasset * 1inir) / (inistop * atr * MULTIPLIER));

tbuy(1, 1c, mkt); //开多
extgbdataset('liqing1c', 1c); //记录全局变量
extgbdataset('liqing1p', 1p);
extgbdataset('liqing1j', 1j);
//这三行都执行了
end;
end;

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


加好友 发短信
等级:论坛游侠 帖子:165 积分:0 威望:0 精华:0 注册:2015/11/17 17:32:45
  发帖心情 Post By:2016/3/3 14:02:08    Post IP:101.254.236.229[只看该作者]

金字塔客户端里拷贝过来的代码怎么格式全没了,都顶格了?

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


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

你输出下1c的值,看看是不是为0


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

客户服务部

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

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

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


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

给你一段简单的代码

tbuY(1,1mkt);

tbuY(1,1mkt);

tbuY(1,1mkt);

你看看是不是触发之后一次性的有3次开仓



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

客户服务部

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

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

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


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

1c := round((tasset * 1inir) / (inistop * atr * MULTIPLIER));

tbuy(1, 1c, mkt); //开多

 

 

测试方法是在这两句中间加一句 debugout('1c = %.0f',1c);

然后在监控界面看看是多少



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

客户服务部

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

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

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


加好友 发短信
等级:论坛游侠 帖子:165 积分:0 威望:0 精华:0 注册:2015/11/17 17:32:45
  发帖心情 Post By:2016/3/3 14:08:14    Post IP:101.254.236.229[只看该作者]

1c的值可以在工具-数据管理-全局变量 看到,不是0,是36

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


加好友 发短信
等级:论坛游侠 帖子:165 积分:0 威望:0 精华:0 注册:2015/11/17 17:32:45
  发帖心情 Post By:2016/3/3 14:10:09    Post IP:101.254.236.229[只看该作者]

如果1c在这行代码1c := round((tasset * 1inir) / (inistop * atr * MULTIPLIER));之后是0,那么extgbdataset('liqing1c',1c);是紧接其后的,不会被记录为36

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


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

不一样,开仓时的1c是这样计算的:1c := round((tasset * 1inir) / (inistop * atr * MULTIPLIER));

 



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

客户服务部

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

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

 回到顶部
总数 23 1 2 3 下一页