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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 后台下单模板

   

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


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

主题:后台下单模板

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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
后台下单模板  发帖心情 Post By:2020/2/12 18:22:04    Post IP:122.97.222.140[只看该作者]

请问下面是实例中为什么已经有了sell, sellshort, buy, buyshort语句, 还要增加 tsellshort(1,cang,mkt,0,0,'800988'),allowrepeat;  tbuyshort(1,cang,mkt,0,0,'800988'),allowrepeat; 干嘛? 

另外xiadan800988:=cc800988-hold;cang:=min(xiadan800988,abs(hold));这两句分别是什么意思? 下了多少手成交和未成交实际上不是用tholding或者tholdingex来实现吗? 为什么要那么麻烦? 


实例见此贴 http://www.weistock.com/bbs/dispbbs.asp?BoardID=10&ID=9112&replyID=&skin=1

//实例一、 K线走完模式的模型

Globalvariable:hold=drawnull;
cc800988:=holding;//这句放在信号稳定的地方

//蓝色部分改为你自己的模型(K线走完模型)
buycond:=count(c>o,2)=2;
sellcond:=count(c<o,2)=2;
if holding>0 and sellcond then sell(1,1,thisclose);
if holding<0 and buycond then sellshort(1,1,thisclose);
if holding=0 and buycond then buy(1,1,thisclose);
if holding=0 and sellcond then buyshort(1,1,thisclose);

drawtextex(1,1,800,0,'虚拟持仓为:'+numtostr(cc800988,0));//在图表上输入虚拟持仓以便监控
if not(islastbar) or workmode<>1 then exit;
xiadan800988:=cc800988-hold;//xiadan800988等于持仓
if xiadan800988>0.5 then begin//如果有下单的话
 cang:=min(xiadan800988,abs(hold));//cang 的意思是仓位
 if hold<0 then begin
  tsellshort(1,cang,mkt,0,0,'800988'),allowrepeat;
  debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 平空 %.0f',cang);
 end
 cang:=xiadan800988+min(hold,0);
 if cang>0 then begin
  tbuy(1,cang,mkt,0,0,'800988'),allowrepeat;
  debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 开多 %.0f',cang);
 end
end
if xiadan800988<-0.5 then begin
 cang:=min(abs(xiadan800988),abs(hold));
 if hold>0 then begin
  tsell(1,cang,mkt,0,0,'800988'),allowrepeat;
  debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 平多 %.0f',cang);
 end
 cang:=abs(xiadan800988)-max(hold,0);
 if cang>0 then begin
  tbuyshort(1,cang,mkt,0,0,'800988'),allowrepeat;
  debugfile('D:\800988.txt',numtostr(hold,0)+' '+numtostr(cc800988,0)+' 开空 %.0f',cang);
 end
end
hold:=cc800988;

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


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

没什么原因。只能让新接触后台的用户,降低后台策略的编写难道,间接使用自己更为熟悉的图表交易过程产生的信号和虚拟持仓,进行后台交易。


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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/2/13 9:07:43    Post IP:122.97.179.3[只看该作者]

请问下面是实例中为什么已经有了sell, sellshort, buy, buyshort语句, 还要增加 tsellshort(1,cang,mkt,0,0,'800988'),allowrepeat;  tbuyshort(1,cang,mkt,0,0,'800988'),allowrepeat; 主要是怕交易不成功, 重新再发出指令?

另外xiadan800988:=cc800988-hold;cang:=min(xiadan800988,abs(hold));这两句分别是什么意思? 下了多少手成交和未成交实际上不是用tholding或者tholdingex来实现吗? 为什么要那么麻烦? 

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


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

图表和后台下单函数只有在符合自己的所属交易环境下,才会执行。

这个问题你自己试一下就知道了,图表中使用后台下单函数是无效的,反之同理。

allowrepeat函数是不断重复委托下单,这个和用户需求有关。市价指令已经是可以保证一定成交的方式了。

 

他的代码注释中已经说得很清楚了。说白了就是当前holding和上根k对应的holding的差值,间接计算出下单手数。你自己用带入法去分析理解。

麻不麻烦和用户写代码的思路有关。没有为什么。至于用什么方式实现也是用户自己的爱好。   

 

 

阿火提供的这个模板,你看不懂就不要看了,没多大意义,本身就是个鸡肋的东西。

 

 

 

[此贴子已经被作者于2020/2/13 9:41:21编辑过]


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


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

1.不是。常规情况下 同样的一句下单代码 在一个K周期内都只能触发一次。 这样如果有人需要某种反复触发条件 反复下单的情况。那么就只能新很多条件语句才能实现。因此有了allowrepeaz.这样 就不用那么麻烦了。

2.sell  和Tsell 前面是图表的下单语句  后面是后台程序化的语句。阿火这个例子里面的做法  主要是为了让部分客户的简单代码在图表和后台有个对照。复杂的思路 这样混杂肯定不合适的。

3.xiadan800988:=cc800988-hold;cang:=min(xiadan800988,abs(hold));
这个是把虚拟持仓 也就是holding的变化 计算成实际要下单的仓位数量。  


如果你是后台程序化,不建议参考这个例子里面的做法。这个例子需要对图表和后台都很了解的情况下,可以参考学习。


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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/2/13 11:53:54    Post IP:122.97.179.3[只看该作者]

看不懂里面的hold 代表的是什么意思, hold=drawnull并没有拿到实际的下单持仓。 如果计算剩下还有多少单没有下的话, 不是直接用holding-tholding 就可以了吗? 

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/2/13 12:18:34    Post IP:101.88.97.123[只看该作者]

不可以。hold就是图表虚拟持仓。  你说的这种方式受策略影响,无法保证图表开仓和后台开仓在手数上的一致性。

 

如果你基础比较差,建议你不要看这个代码。否者你只会越来越迷糊。

[此贴子已经被作者于2020/2/13 12:20:56编辑过]


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


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2020/2/13 12:19:16    Post IP:221.225.151.88[只看该作者]

每个人的理解都是不同的,您可以用DEBUGFILE调试看一下,如果他的思路跟你的不符合,你改成自己的思路代码就可以了,程序编写为了达成目的有100个方法都可以,看个人的喜好和熟悉程度

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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/2/13 13:13:27    Post IP:122.97.179.3[只看该作者]

hold在上面的程序 代表的是什么意思?跟cc800988又有什么区别?  hold=drawnull并没有拿到实际的下单持仓?

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


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

hold就是图表虚拟持仓 ,4楼第二段话已经回复过你。

 

这个模板,压根就不牵扯实际持仓。都是按虚拟持仓holding处理的。

[此贴子已经被作者于2020/2/13 14:31:20编辑过]


编程无捷径,技巧靠积累。
 回到顶部
总数 12 1 2 下一页