我写的一个随机交易程序,可是并没有我预想的那样完全随机,请高手帮忙!

 

extern int zs=500;
extern int zy=500;
extern double Lots=1;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if(OrdersTotal()<1)
{
int a=MathRand()%2;
if(a>0)
{OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-zs*Point,Ask+zy*Point,"suijibuy",16384,0,Green);}

if(a==0)
{OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+zs*Point,Bid-zy*Point,"suijisell",16384,0,Red);}

//----
return(0);
}
//+------------------------------------------------------------------+

以上的代码为了简便,我省略了下单的错我检错。

1 2011.03.21 00:00 buy 1 1.00 1.4168 1.4118 1.4218 0.00 100000.00
2 2011.03.21 17:37 t/p 1 1.00 1.4218 1.4118 1.4218 500.00 100500.00
3 2011.03.21 17:37 buy 2 1.00 1.4221 1.4171 1.4271 0.00 100500.00
4 2011.03.22 23:38 s/l 2 1.00 1.4171 1.4171 1.4271 -503.04 99996.96
5 2011.03.22 23:38 sell 3 1.00 1.4171 1.4221 1.4121 0.00 99996.96
6 2011.03.23 13:22 t/p 3 1.00 1.4121 1.4221 1.4121 490.87 100487.82
7 2011.03.23 13:22 sell 4 1.00 1.4118 1.4168 1.4068 0.00 100487.82
8 2011.03.24 07:06 t/p 4 1.00 1.4068 1.4168 1.4068 472.61 100960.43
..........................

这是我的测试记录,测试的是2011.3.21 到 4.21 的欧元 一小时数据。我只复制了一部分。

现在有个问题,就是按照我的设想,我用的是随机交易, 也就是说,测试某段历史数据(3.21-4.21),每次测试出来的结果应该是不一样的,

而目前的情况是,我不管测试多少次,其结果是一样的,根本不是完全随机,所以我很无奈,是不是哪里出错了,还是随机没有写好。

举例,测试3.21 到 4.21 的欧元一小时历史数据,其结果应该是测试多次之后,第一单有可能是多单,或者有可能是空单,而现在的情况是

不管怎么测,结果都是,第一单永远是多单,后面的,第二单,第三单.......,每次测试都和前一次一样。所以,我想要的是完全的随机,

就是,随便以测试,其下单结果是不一样的。 各位大哥,帮帮忙!!!!

 

我的联系QQ1601187939

 

兄弟,你要种一个随机种子呀,加MathSrand(),试试

 
楼上说的对,没有种子,就等于每次种子都是默认值,种子相同,结果就会想同。