以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  想限价开多仓和空仓,下列代码错在哪里呢  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=81472)

--  作者:jason123
--  发布时间:2015/7/21 13:55:21
--  想限价开多仓和空仓,下列代码错在哪里呢
//没有空仓再开
if TODAYHOLDING>=0 then begin
//当SBP(SC5+3)<C<SSK(SC5+9),开卖出空仓,限价SC5+6
Tsell(SBP<C<SSK,1,LMT,SC5+6,SC5+36,\'\',\'if08\');
end

//没有多仓再开
if TODAYHOLDING<=0 then begin
//当SC5<C<SBP(SC5+3),开买入多仓,限价SC5
Tbuy(SC5<C<SBP,1,LMT,SC5,SC5-30,\'\',\'if08\');
end
//当XBK(XC5-9)<C<XSK(XC5-3),开买入多仓,限价XC5-6

//没有多仓再开
if TODAYHOLDING<=0 then begin
Tbuy(XBK<C<XSK,1,LMT,XC5-6,SC5-36,\'\',\'if08\');
//当XSK(XC5-3)<C<XC5,开卖出空仓,限价XC5
end

//当XC5<=C<=SC5,开多仓空仓,限价买C-3,卖C+3

//没有多仓再开
if TODAYHOLDING<=0 then begin
Tbuy(XC5<=C<=SC5,1,LMT,C-3,C-33,\'\',\'if08\');
end

//没有空仓再开
if TODAYHOLDING>=0 then begin
Tsell(XC5<=C<=SC5,1,LMT,C+3,C+33,\'\',\'if08\');
end

。。。。。。。。。。。。。。。。。。
本来的想法是只控制1手,限价触发了一手多仓,止损30,点,然后止盈6个点开空仓
但是上面的代码好像不停开多仓,请问错咋哪里呢

--  作者:jinzhe
--  发布时间:2015/7/21 14:08:59
--  

SC5<C<SBP

这类的写法是错的

SC5<C and C<SBP要这样写


--  作者:jason123
--  发布时间:2015/7/21 14:17:51
--  
谢谢指点 已经改过来了 如下,可还是只买入开多仓,而且我只要1手,买了多手

//没有空仓再开
if TODAYHOLDING>=0 then begin
//当SBP(SC5+3)<C<SSK(SC5+9),开卖出空仓,限价SC5+6
Tsell(SBP<C and C<SSK,1,LMT,SC5+6,SC5+36,\'\',\'if08\');
end

//没有多仓再开
if TODAYHOLDING<=0 then begin
//当SC5<C<SBP(SC5+3),开买入多仓,限价SC5
Tbuy(SC5<C and C<SBP,1,LMT,SC5,SC5-30,\'\',\'if08\');
end
//当XBK(XC5-9)<C<XSK(XC5-3),开买入多仓,限价XC5-6

//没有多仓再开
if TODAYHOLDING<=0 then begin
Tbuy(XBK<C and C<XSK,1,LMT,XC5-6,SC5-36,\'\',\'if08\');
//当XSK(XC5-3)<C<XC5,开卖出空仓,限价XC5
end

//当XC5<=C<=SC5,开多仓空仓,限价买C-3,卖C+3

//没有多仓再开
if TODAYHOLDING<=0 then begin
Tbuy(XC5<=C and C<=SC5,1,LMT,C-3,C-33,\'\',\'if08\');
end

//没有空仓再开
if TODAYHOLDING>=0 then begin
Tsell(XC5<=C and C<=SC5,1,LMT,C+3,C+33,\'\',\'if08\');
end

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
求指点,逻辑错了吗

--  作者:十世
--  发布时间:2015/7/21 14:34:07
--  
你有多条开多语句 并且这些开多仓的条件不同 当某一时刻条件都满足时 会同时触发下单指令
--  作者:jason123
--  发布时间:2015/7/21 14:49:15
--  
但是 每次我都有这个判断啊
if TODAYHOLDING>=0 then begin  //当仓位是多头 才开空仓
Tsell
end

if TODAYHOLDING<=0 then begin //当仓位是空头 才开多仓
Tsell
end
。。。。。。。。。。。。。。。。。。。。。。。。
请问我这个逻辑错了吗,请问 要达到我的目的:只控制一手,平仓才开新的多仓空仓,应该怎么办呢????求指点

--  作者:pyd
--  发布时间:2015/7/21 14:59:00
--  
如果报单了没有成交 TODAYHOLDING是等于0 的,后边的开仓语句就会继续开仓
--  作者:jason123
--  发布时间:2015/7/21 15:01:06
--  
有什么函数能知道现在有多少未成交单的吗?求教
--  作者:十世
--  发布时间:2015/7/21 15:02:06
--  

在某一时刻的时候 你的TODAYHOLDING<=0  是对所有的TBUY语句都成立的  其他条件满足的情况下下多手是正常的

 

VARIABLE: a=0;

 

if TODAYHOLDING<=0 then begin
Tbuy(XBK<C and C<XSK and a=0,1,LMT,XC5-6,SC5-36,\'\',\'if08\');
a=1;
end
 
if TODAYHOLDING<=0 then begin
Tbuy(XC5<=C and C<=SC5 and a=0,1,LMT,C-3,C-33,\'\',\'if08\');
a=1;
end
 
加个全局变量的条件判断
[此贴子已经被作者于2015/7/21 15:26:08编辑过]