[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 649

 
7sintez:
Muchas gracias a todos por su ayuda. Los códigos aún no los he utilizado, los he copiado en el bloc de notas. Los investigaré cuando tenga tiempo. ¡Gracias una y otra vez amigos!


Puedes utilizar las bibliotecas de Igor Kim


//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}

 

Es un poco más complicado que eso.

 
r772ra:


Puedes utilizar las bibliotecas de Igor Kim

Es un poco más complicado que eso.


Ya he utilizado su código. Todo funciona. Gracias.

 
¿Cómo se parchean los agujeros de cotización con Mtqvotes o cómo se recalculan las cotizaciones de los minutos completos para todos los TFs?
 
Qwertee: ok, otra cosa en mi EA es esta ramificación:

if(period=="M15")
{
//comprobar para abrir la compra
Alert(buysell);

if(buysell=="buy")

Alerta(1);

.............

}

Básicamente, un if anidado. PERO. la condición if(period=="M15") se cumple y la Alerta da un resultado, y compra, pero la condición if(buysell=="buy") no se cumple y el comando Alert(1) ni siquiera se ejecuta. Maldita sea, pero ambas condiciones son incluso sintácticamente iguales, pero ¿por qué una se ejecuta y la otra no?

Técnicamente es simple: buysell !="buy" - por lo que la siguiente Alerta(1) no se ejecuta.

Lo que contiene la variable buysel en ese momento se averigua mediante la impresión: Print (buysell); después de la primera Alerta.

------------------------------------------------------------------------------------------------------------------------------------------------

Ese es el problema, si pongo Print(buysell) en lugar de Alert(1) en mi código, buysell devolverá el valor de buy, así que ¿qué pasa?

 

Hay una función en la que uno de los parámetros es un array: FunctionTest(double OneDimensionalArray[7]) ...

Existe un array tridimensional: double Three-dimensionalArray[1][2][7].

La tarea consiste en insertar la última dimensión de la matriz tridimensional como parámetro en una función. Estoy intentando hacerlo, pero el compilador frunce el ceño.

Lo hago así: FunctionTest(ThreeDimensionalArray[0][0]) .

¿Podría decirme qué estoy haciendo mal y cómo solucionar este problema?

Gracias de antemano.

 
artem179:

Hay una función en la que uno de los parámetros es un array: FunctionTest(double OneDimensionalArray[7]) ...

Existe un array tridimensional: double Three-dimensionalArray[1][2][7].

La tarea consiste en insertar la última dimensión de la matriz tridimensional como parámetro en una función. Estoy intentando hacerlo, pero el compilador frunce el ceño.

Lo hago así: FunctionTest(ThreeDimensionalArray[0][0]) .

¿Podría decirme qué estoy haciendo mal y cómo solucionar este problema?

Gracias de antemano.

Dicen que Catalina la Grande cometió hasta 4 errores en una palabra de 3 letras.

Todavía no se ha resuelto el problema. Encuentra una solución más fácil...

 
tara:

Se dice que Catalina la Grande cometió hasta cuatro errores en una palabra de tres letras.

Todavía no se ha resuelto el problema. Encuentra una solución más fácil...


En principio, ya lo he resuelto de otra manera. Pero no deja de ser interesante, al menos de forma puramente teórica. Después de todo, un array[0][0] tridimensional debería ser un array unidimensional, ¿no? Si es así, ¿cómo puedo obtener una matriz unidimensional a partir de una tridimensional?
 
artem179:

En principio, ya resuelto de otra manera. Pero no deja de ser interesante, al menos de forma puramente teórica. Después de todo, se supone que Three-dimensionalArray[0][0] es una matriz unidimensional... Si es así, ¿cómo puedo obtener una matriz unidimensional a partir de una tridimensional?

¿Mirando la compra?
1. Las matrices son siempre estáticas

2. No es necesario que lo obtengas del 3D, sólo que lo crees correctamente.

 
artem179:

En principio, ya lo he resuelto de otra manera. Pero no deja de ser interesante, al menos de forma puramente teórica. Después de todo, un array[0][0] tridimensional debería ser un array unidimensional, ¿no? Si es así, ¿cómo sacar una matriz unidimensional de una tridimensional?
Un array de N dimensiones es un array unidimensional. Sólo está dividido en dimensiones por comodidad.
 
¿Y tú qué opinas, Vadim? ¿Qué tan cómodo es navegar en * medidas? ))) Sin embargo, he conocido gente que podía contar las facetas del teseracto en su cabeza. Pero no estoy seguro de que esto tenga que ver con nuestros problemas.
La cuestión es la formulación del problema. Aquí no lo necesitas. Unidimensional, por supuesto.