[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 14

 

la función misma dejará de funcionar, si hay una recotización por la condición else

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

try = 0, para que el bucle while se detenga y openOrder() devuelva false

Pero si utilizamos la construcción while(!openOrder(...)){}, entonces continuará trabajando hasta que abra una orden

 
keekkenen . Eso es lo que me da curiosidad en tu función start() while(!openOrder(...)){} no revelas lo que se hace allí en {}. ¿Limita el número de intentos de recotización?
 

Como has escrito que la orden debe abrirse, he dado una construcción tan "rígida", si debe abrirse, se abrirá independientemente de cuántos intentos lleve... Si abrimos las órdenes normalmente, entonces el while no es necesario, podemos pasar el número de intentos en el try y en la función ya determinar si reaccionar a los errores críticos o ignorarlos y sólo intentar abrir la orden try una vez...


El sentido de while(!openOrder(...)){} es que creamos un bucle eterno, es decir, que funcionará hasta que se abra el pedido.

En realidad, defina qué táctica debe utilizar al abrir las órdenes, nosotros le ayudaremos...

 

Esta es la pregunta:

No puedo trabajar con un array.

Inicializo el array, lo lleno con cualquier dato, pero cuando lo leo, hay ceros.

¿Qué estoy haciendo mal?


double MASS[];

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

No puedo trabajar con un array.

Hay que especificar el tamaño del array, por ejemplo, al declararlo:

double MASS[10];

O entonces:

ArrayResize(MASS,10);
 

¿Y si no sé qué tamaño tendrá mi matriz?

Y aunque lo haga, no compila:

Inserto una variable externa:

extern int Razmer = 10;

Y el resto del texto:

   double MASS[ Razmer];

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

La salida es:

'Razmer' - número entero esperado C:\N-Archivos de Programa\N-MetaTrader - Alpari2\perts\temp.mq4 (36, 16)
']' - se espera coma o punto y coma C:\gram Files\MetaTrader - Alpari2\perts\temp.mq4 (36, 22)
'MASS' - variable no definida C:\gram Files\MetaTrader - Alpari2\experts\temp.mq4 (40, 3)
'MASS' - variable no definida C:\gram Files\MetaTrader - Alpari2\perts\temp.mq4 (44, 9)

 
Kontra писал(а) >>

¿Y si no sé qué tamaño tendrá mi matriz?

Por lo tanto, tienes que usar la función ArrayResize cuando sepas cuántos elementos habrá en el array.

Con una variable externa, como puedes ver, no funcionará:)

Puedes hacerlo así:

ArrayResize(MASS,Razmer);
 

Gracias, querido cirujano.

Todo está funcionando :)

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

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

   return(0);
  }
¿Cuál es el error aquí y cómo se puede aplicar?
 

¿Qué quiere conseguir exactamente?

Razón de la queja: