Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共5 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:对阿火后台模型的问题

1楼
zx7027 发表于:2017/2/5 16:40:57

首先感谢阿火的模板,感谢管理员的解答。


问题已用红色标出,见注释的【1】~【3】。


runmode:0;
Globalvariable:hold=drawnull;
……//这里添加上你自己的模型

……//这里添加上你自己的模型

cc800988:=holding;//这句放在信号稳定的地方
drawtextex(1,1,800,0,'虚拟持仓为:'+numtostr(cc800988,0));//在图表上输入虚拟持仓以便监控
if not(islastbar) or workmode<>1 then exit;
xiadan800988:=cc800988-hold;
if xiadan800988>0.5 then begin
 cang:=min(xiadan800988,abs(hold)); //【1】在cang的计算中,为什么要与hold进行某种形式的比较?xiadan800988本来就是虚拟持仓的变化量了。
 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); //【2】min(hold,0)恒等于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; //【3】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;



2楼
jinzhe 发表于:2017/2/6 9:05:37
这段代码的目的是什么?
[此贴子已经被作者于2017-2-6 9:05:44编辑过]
3楼
zx7027 发表于:2017/2/6 9:29:23
利用图表的虚拟持仓的变化进行后台程序化操作。
http://www.weistock.com/bbs/dispbbs.asp?BoardID=10&replyID=39654&ID=9112&skin=1
4楼
jinzhe 发表于:2017/2/6 10:34:27

1.hold为上次交易后的持仓结果,cc800988为这次交易后的持仓结果。

在反手交易的情况下,hold为负数,cc800988为正数,那么xiadan800988的结果可能是一个比abs(hold)要大,那么平仓时则要平掉全部空仓,那么平仓手数为abs(hold),用min是为了获取abs(hold)。

比如:上次交易为5手开空,当前交易为10手开多。则hold为-5 ,cc800988为10,xiadan800988为15。要平仓手数为5手,所以要用min来求出5这个数

 

2.并不是恒等于0,在上面基础上,min(0,hold)的结果为-5,平仓之后反手开仓,那么要求出反手开仓的数量:10手。

那么cang:=xiadan800988+min(0,hold)就是 15+(-5),即开多10手

 

3.防止一根k线内信号反复变化,用allowrepeat使得一根k线内能反复下单,信号变化时也能接着执行下单,让实际交易和信号保持一致

 

 

5楼
zx7027 发表于:2017/2/6 10:36:14
感谢,如果我用K线走完模式的话,就没有必要用allowrepeat了吧?
共5 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.04688 s, 3 queries.