Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1899

 
Valeriy Yastremskiy #:

Sí, en mi caso hay que empezar por la primera, no por la barra de cero) es un buen punto.

¿Por qué? La barra cero se desplaza junto con todas las demás barras hacia la izquierda. Y si desplazamos todas las barras excepto el cero, obtendremos dos valores iguales por el primer y segundo índice.

P.D. Si desplazamos los datos, siempre hay que sobrescribir una celda libre. De lo contrario, habrá dos valores idénticos en una fila.

 
Valeriy Yastremskiy #:

ZZZY sobrescribiendo el valor de cero antes del desplazamiento, perdemos el valor del índice cero.

¡Eso es exactamente lo que quiero decir!

 
Valeriy Yastremskiy #:

¿Qué es un tampón anular en un µl?

Algo así como

static int head=0;
for(i=head,count=0;count<ArraySize(A);i++,count++)
  {
   if(i>=ArraySize(A))i=0;
   DoSomething(A[i]);
  }

o incluso

static int head=0;
for(i=head,count=0;count<ArraySize(A);count++)
  {
   if(++i>=ArraySize(A))i=0;
   DoSomething(A[i]);
  }
 
JRandomTrader #:

Algo así como.

o incluso

desplazamiento del índice en la matriz en µl. Aunque debería funcionar. Y por cierto, el peso del ciclo de cambio de índice (que es un ciclo) y el ciclo de asignación no deberían diferir mucho.

 
Vitaly Muzichenko #:

¿Cómo se usa esto, puedes mostrarme?

Esta es la tarea.

Este es el código terminado, pero el bucle da un poco de miedo

---

De nuevo, hay un bucle dentro de ArrayCopy() y quizás más de uno. Así que el código difícilmente se volverá más sencillo y rápido debido a esta sustitución.

En este código, debe especificar una matriz

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

El índice desde el que se escribe y el que se copia depende de la dirección del desplazamiento del array. Así, si queremos que el índice 0 contenga siempre datos nuevos y frescos, debemos copiar desde 0 y escribir desde 1. Así, los valores en el índice 0 y 1 serán idénticos, y después se copiará un nuevo valor en el 0.

Y dudo mucho que ArrayCopy() tenga dentro el mismo bucle que el del usuario. Así, teniendo algún array con un tamaño determinado, se desplaza en 1 en cada tick y luego se copia en el buffer del indicador que se muestra como una línea...

 
Por favor, dígame la función de desglose de los datos diarios.
//+----------------------------------------------------------------------------+
//|Определение пробоя дневного фрактала вверх                                  |
//+----------------------------------------------------------------------------+
int BreakdownSignalUpD1()
  {
   int sig=-1;
   double resistD1 = GetNearestUpFractal(PERIOD_D1);
   if (resistD1 < Ask)
     sig=0;
   if (resistD1 >= Ask)
     sig=1;  
   return(sig);
  }

Y aquí está la función que muestra el desglose en la pantalla

ObjectCreate("signal100",OBJ_LABEL,0,0,0,0,0);
   ObjectSet("signal100",OBJPROP_XDISTANCE,600);
   ObjectSet("signal00",OBJPROP_YDISTANCE, 40);
   ObjectSetText("signal100",DoubleToString(BreakdownSignalUpD1(),0),18,"Times New Roman", clrRed);

Me pueden decir como hacer para que la pantalla no muestre 0 o 1 sino que 0 es "SI" 1 es "NO".

Gracias

 
EVGENII SHELIPOV #:
Por favor, dígame la función de desglose de los datos diarios.

Y aquí está la función que muestra el desglose en la pantalla

Me pueden decir como hacer para que la pantalla no muestre 0 o 1 sino que 0 es "SI" 1 es "NO".

Gracias

string boolToStr(bool value) { return ((value) ? "true" : "false"); }
 
EVGENII SHELIPOV #:
Por favor, dígame cuál es la función de desglose del factal diurno.

Y aquí está la función que muestra el desglose en la pantalla

Me pueden decir como hacer para que la pantalla no muestre 0 o 1 sino que 0 es "SI" 1 es "NO".

Gracias

ObjectSetText("signal100",BreakdownSignalUpD1()==0?"Да":"Нет",18,"Times New Roman", clrRed);

Algo así.

 
JRandomTrader #:

Algo así.

Gracias

 
Alexey Viktorov #:

En este código, es necesario especificar un array

El índice desde el que se escribe y el índice que se copia depende de la dirección del desplazamiento del array. Es decir, si el índice 0 debe contener siempre datos nuevos y frescos, entonces copie desde 0 y escriba desde 1. Así, los valores en el índice 0 y 1 serán idénticos, y después se copiará un nuevo valor en el 0.

Y dudo mucho que ArrayCopy() tenga dentro el mismo bucle que el del usuario. Así, teniendo algún array con un tamaño determinado, se desplaza en 1 en cada tick y luego se copia en el buffer del indicador que se muestra como una línea...

Lo intentaré.

---

En general, mi código funciona con éxito, ha sido más de una hora


Razón de la queja: