Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 935

 
Esta pregunta: ¿es posible desplazar la indexación de los elementos del array en 1 unidad sin crear otro array similar y copiar elemento a elemento la información del primer array (y luego volver a él)? De hecho, en MT4 se hace de alguna manera en las matrices de series temporales (cuando se forma una nueva barra, se le asigna el índice 0, y los índices de todos los elementos anteriores de la matriz se desplazan en 1 unidad).
 
FxRoller:
Buenos días a todos! Esta pregunta: ¿es posible desplazar la indexación de los elementos del array en 1 unidad sin crear un array más como éste y copiar elemento a elemento la información del primer array (y luego volver a él)? De hecho, en MT4 se hace de alguna manera en las matrices de series temporales (cuando se forma una nueva barra, se le asigna el índice 0, y los índices de todos los elementos anteriores de la matriz se desplazan en 1 unidad).

Me uno a la pregunta: sería conveniente utilizar la función incorporada para desplazar la dimensión N del array en M elementos a la derecha o a la izquierda.

Que yo sepa, por ahora hay que desplazar por un bucle, definiendo el tamaño del array. Es más difícil utilizar la dinámica (+los datos no se pierden).

 
kosmos0975:

Me uno a la pregunta: sería conveniente utilizar la función incorporada para desplazar la dimensión N del array en M elementos a la derecha o a la izquierda.

Por lo que sé, por ahora hay que desplazarse con un ciclo, definiendo el tamaño del array. Más difícil de utilizar la dinámica (+los datos no se pierden).

¿No ayuda SetIndexShift()?

Establece el desplazamiento de la línea del indicador con respecto al inicio del gráfico.

voidSetIndexShift(
intindex,// número
int shift// shift
);

Parámetros

índice

[in] Número secuencial de la línea. Debe ser de 0 a 7.

turno

[in] Valor de desplazamiento en barras.

Valor devuelto

No.

Nota

Un valor positivo desplaza la imagen de la línea hacia la derecha, un valor negativo la desplaza hacia la izquierda. El valor calculado en la barra actual se dibuja con el desplazamiento especificado respecto a la barra actual.

Ejemplo:

 

También se puede copiar un array a sí mismo con un desplazamiento.

int  ArrayCopy(
   void&        dst_array[],         // куда копируем                           // сюда, понятно имя массива
   const void&  src_array[],         // откуда копируем                         // сюда тоже его
   int          dst_start=0,         // с какого индекса пишем в приемник       // сюда 0
   int          src_start=0,         // с какого индекса копируем из источника  // сюда, например с первого, значит 1
   int          count=WHOLE_ARRAY    // сколько элементов                       // сюда размерность массива минус 1
   );

Así que el array se copiará a sí mismo con un desplazamiento de 1 elemento. El cero será descartado y el último estará vacío. Por el contrario, descartando el último elemento, no lo he probado, pero creo que se pueden poner correctamente los tres últimos parámetros de la función.

 
AlexeyVik:

También se puede copiar un array a sí mismo con un desplazamiento.

Así que el array se copiará a sí mismo con un desplazamiento de 1 elemento. El cero será descartado y el último estará vacío. Lo de tirar el último elemento al revés, no lo he probado, pero creo que los tres últimos parámetros de la función se pueden configurar correctamente.


No lo he probado, pero puede ser útil para cambiar la dirección de indexación.

P.D. Tengo algunas preguntas sobre el probador de estrategias. ¿Puede ayudar?

 
kosmos0975:

No lo he probado, pero un cambio en la dirección de indexación podría ser útil.

P.D. Hay preguntas sobre el probador de estrategias. ¿Puede ayudar?

¿Te refieres a cambiar la dirección de indexación después de copiar un array en sí mismo? ¿Es necesario? Creo que no habrá ningún problema en copiar desde el índice cero sin el último y pegar desde el primero, mientras que el cero permanecerá vacío o el valor antiguo, no importa, porque este procedimiento es necesario no sólo para copiar, sino específicamente para reemplazar uno de los valores de la matriz (cero o último) con uno nuevo. En consecuencia, después de dicha copia, el elemento "desocupado" se rellena con el nuevo valor. Y no importa lo que haya quedado en él.

En el probador, si puedo - voy a ayudar. Pero aquí hay más dignos que pueden sugerir.

 

Las señales de control y el control de las posiciones abiertas son realizados por el indicador. Las órdenes de apertura y cierre de posiciones se envían al Asesor Experto a través de las variables globales del terminal.

El uso de indicadores es conveniente porque hay muchos indicadores, y se puede ver el trabajo de varios bloques lógicos al mismo tiempo.

Pregunta. En el probador de estrategias, el indicador puede trabajar con la función OrderSelect(),OrdersTotal(), etc.

 
AlexeyVik:

¿Te refieres a invertir el sentido de la indexación después de copiar el array en sí mismo? ¿Es realmente necesario? Creo que no habrá ningún problema para copiar desde el índice cero sin el último y pegar desde el primero, mientras que el cero permanecerá vacío o el valor antiguo, no importa, porque este procedimiento es necesario no sólo para copiar, sino específicamente para reemplazar uno de los valores de la matriz (cero o último) con uno nuevo. En consecuencia, después de dicha copia, el elemento "desocupado" se rellena con el nuevo valor. Y no importa lo que haya quedado en él.

En el probador, si puedo - voy a ayudar. Pero aquí hay más dignos que pueden sugerir.

Antes de copiar y después.
 
No se ha comprobado, pero ¿qué le impide comprobarlo usted mismo? Sólo tiene que guardar la plantilla con todos los indicadores bajo el nombre del EA y luego, cuando inicie el EA en el probador, todos los indicadores se cargarán y probablemente funcionarán correctamente. Pero es posible que tomen valores de las pestañas "Comercio" e "Historial de la cuenta".
 
kosmos0975:
Antes de copiar y después.
¿Por qué te rascas la oreja derecha con el dedo de la mano izquierda? O pie... Sólo he dicho que la segunda opción, por falta de necesidad, no se ha probado. Pero lógicamente funcionaría sin problemas.