以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  怎么用当日只交易一次编  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166195)

--  作者:haizxj
--  发布时间:2018/10/29 14:49:24
--  怎么用当日只交易一次编
 如果当日出现一次多头持仓并平仓后,则多头不要开仓了
空头还是可以开


怎么编

--  作者:wenarm
--  发布时间:2018/10/29 14:57:05
--  

图表不支持同时锁仓,即不能同时持有空头和多头。

只开仓1次,可以直接通过holding进行限制,只有当图表holding=0时,才可以开仓。

if 开仓条件 and holding=0 then begin

     buy(....);

end

 


--  作者:haizxj
--  发布时间:2018/10/29 15:46:16
--  
 我说的是只是单向开
不是套利
是当日只开一次多头

即第一次多头已平了,此时持仓也是0,可能出现多头信号,但是不再开仓了
第二次多头不开
[此贴子已经被作者于2018/10/29 15:46:58编辑过]

--  作者:FireScript
--  发布时间:2018/10/29 15:54:29
--  
 buycond:TYPEBAR(1,1)>TODAYBAR and holding=0  and cond;

开仓条件加一些代码。

--  作者:haizxj
--  发布时间:2018/10/29 16:07:36
--  
假定以一分钟计一个BAR,七分钟后开仓,这时TyPEbar会永远小于todaybar

--  作者:wenarm
--  发布时间:2018/10/29 16:11:51
--  
这种你直接用全局变量记录交易次数就行了。
 

【金字塔使用技巧】----限定一天交易次数

 

variable:num=0;// 全局变量,来控制当天交易次数

cs:=5;//限定一天最多交易5次

 

ma5:=ma(close,5);

ma20:=ma(close,20);

 

con1:=cross(ma5,ma20);

con2:=cross(ma20,ma5);

 

if cond2 and holding>0 then sell(1,1,market);

if cond1 and holding=0 and lossnum<5  then 

  begin

  buy(1,1,market);

  num:=num+1;

  end

if time=closetime(0) then num:=0;// 商品期货,收盘的同时,num赋值为0

//收盘num不赋值为0,第二天就不再开仓了


--  作者:FireScript
--  发布时间:2018/10/29 16:13:12
--  
 你不是要日内只开一次仓么。所以小于刚好限制后面再次开多啦。

亦或者你按照6楼的,不过开多和开空需要分别用2个变量去控制了。

--  作者:haizxj
--  发布时间:2018/10/29 16:31:59
--  
 昨天的TyPEbar与今天的信号有时是大于是重复的
--  作者:wenarm
--  发布时间:2018/10/29 16:41:40
--  
看6楼的回复。
--  作者:haizxj
--  发布时间:2018/10/30 16:49:29
--  
 
VARIABLE:n1:=0,n2:=0;
ma5:ma(c,5);
ma20:ma(c,20);
cond1:cross(ma5,ma20);
cond2:cross(ma20,ma5);
if COND1   and n1<1  THEN BEGIN
sellshort(holding<0,1,MARKET);
buy(HOLDING=0,1,MARKET);
n1:=n1+1;
end
if COND2 and n2<1 THEN BEGIN
sell(holding>0,1,MARKET);
buyshort(holding=0,1,MARKET);

n2:=n2+1;
end

if COND1    THEN BEGIN
sellshort(holding<0,1,MARKET);
end

if COND2  THEN BEGIN
sell(holding>0,1,MARKET);
n2:=n2+1;
end
if time>CLOSETIME(0)-30 then BEGIN
n1:=0;
n2:=0;
ENd
s1:n1;
s2:n2;


这个错在哪里