[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 14

 

如果有一个else条件的重新引用,函数本身将停止工作。

if ( res!=-1){    
//..
}else{
    err = GetLastError();
    if ( err > 1) try = 0;
    Comment("Ошибка - ", err);          
}

try = 0,所以while循环将停止,openOrder()返回错误。

但如果我们使用 while(!openOrder(...)){}结构,那么它将继续运行,直到打开一个订单为止

 
keekkenen .这就是我所好奇的,在你的start()函数 while(!openOrder(...)){}中,你没有透露在{}中做了什么。你是否限制重新报价 的尝试次数?
 

由于你写的是订单应该打开,我给出了这样一个 "刚性 "结构,如果它应该打开,它将打开,无论它需要多少次尝试......如果我们正常打开订单,那么虽然不需要,我们可以在尝试中传递尝试次数,并在函数中已经确定是否对关键错误 作出反应或忽略它们,只是尝试打开订单尝试一次......


while(!openOrder(...)){}的意义在于,我们创建了一个永恒的循环,也就是说,它将工作到订单被打开。

实际上,定义开单时应该使用什么战术,我们会帮助...

 

问题就在这里。

我不能用数组工作。

我初始化了数组,用任何数据填充它,但当我读取它时,却发现有零。

我做错了什么?


double MASS[];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);
 }
 
Kontra писал(а)>>

我不能用数组工作。

你必须指定数组的大小,例如在声明它的时候。

double MASS[10];

或者然后。

ArrayResize(MASS,10);
 

如果我不知道我的数组 会有多,怎么办?

即使我这样做了,它也不会被编译。

我插入一个外部变量。

extern int Razmer = 10;

以及其余的文字。

   double MASS[ Razmer];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);

输出是。

'Razmer' - 预期的整数 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 16)
']'- 逗号或分号预期 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 22)
'MASS' - 变量未定义 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (40, 3)
'MASS' -变量未定义 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (44, 9)

 
Kontra писал(а)>>

如果我不知道我的数组会有多大,怎么办?

因此,当你知道数组中会有多少元素时,你必须使用ArrayResize函数。

正如你所看到的,用一个外部变量,它将不会起作用:)

你可以这样做。

ArrayResize(MASS,Razmer);
 

谢谢你,亲爱的外科医生。

这一切都在发挥作用 :)

 
int init()
  { 
   double A=AccountBalance()         //Определяем баланс
   double B=NormalizeDouble( A/50,0)  //Выполняем вычисления и делаем результат целым числом
   double Lots= B*0.01                //Вычисление лота.

if ( Lots>0)Alert("Лот будет ", Lots )

   return(0);
  }
这里的错误是什么,如何才能实现?
 

你到底想达到什么目的?