以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]为什么没有执行  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=9462)

--  作者:wzywzy292
--  发布时间:2011/12/21 23:14:17
--  [求助]为什么没有执行
请教:这个模型为什么没有执行 m1d:=m1d-1

谢谢!!

源码如下:


VARIABLE:m1d=0;

m1d:=5;//开仓手数

AA:=MA(C,5)>MA(C,20);

IF time>=092100 AND time<=145700 then begin

if AA then begin
sellshort(holding<0, holding,limitr,c);  
buy(1,m1d,limitr,c);
end
m1d:=m1d-1;
end

if time>=151200 then begin
sell(1,0,limitr,c);
m1d:=0;
end


--  作者:阿火
--  发布时间:2011/12/21 23:33:11
--  

在最前面 m1d赋值为5,也就是每次都会为5

如果你的本意是下单后减1手,第二天又从5开始,改为这样

if date<>ref(date,1) then m1d:=5; 


--  作者:wzywzy292
--  发布时间:2011/12/22 9:05:50
--  
 还是不行
1、有些地方手数超过了5。
2、忘了说是日内
3、谢谢


--  作者:阿火
--  发布时间:2011/12/22 10:26:07
--  

m1d 每次都减少,最后会为0 ,为0 代表满仓。

开仓时还要加一个mid>0的限定


--  作者:fly
--  发布时间:2011/12/22 10:40:58
--  

就这段代码,每次一执行策略,

一开始就会把M1D变为5,所以如果你的钱够,那么每次日内图上显示的开多,都应该是5手,一直到你的资金不够不再开仓为止(最后一个开多手数,小于等于5大于等于1)

 

总共开多的手数超过5,是正常的.

 

你再领会领会自己写的代码的意思,或者把你对自己代码的领悟写出来,看看可能是你哪里理解的有误


--  作者:wzywzy292
--  发布时间:2011/12/22 10:44:02
--  
帮忙写个完整的呗,谢谢
--  作者:wzywzy292
--  发布时间:2011/12/22 10:52:53
--  
本意是下单后再开单就减1手
[此贴子已经被作者于2011-12-22 10:53:47编辑过]

--  作者:just
--  发布时间:2011/12/22 14:21:12
--  

VARIABLE:m1d=0;

if date<>ref(date,1) then m1d:=5;//开仓手数

AA:=MA(C,5)>MA(C,20);

IF time>=092100 AND time<=145700 then begin

if AA then begin
sellshort(holding<0, holding,limitr,c);  
buy(1,m1d,limitr,c);
m1d:=m1d-1;
end
end

if time>=151200 then begin
sell(1,0,limitr,c);
m1d:=0;
end

 这样就可以了

[此贴子已经被作者于2011-12-22 14:21:44编辑过]

--  作者:wzywzy292
--  发布时间:2011/12/22 14:33:33
--  
第一次开了5手,但第二次开的不是4手,麻烦再看看,谢谢
--  作者:just
--  发布时间:2011/12/22 14:52:34
--  
资金问题 初始资金调大点就可以了。开仓条件上再加个M1D>=1。
[此贴子已经被作者于2011-12-22 14:53:20编辑过]