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

 


Por supuesto, es mejor cambiar a una matriz de lectura/escritura

1. No cambie el tamaño de la matriz por 1 en cada iteración, es mejor hacerlo con menos frecuencia, por ejemplo, aumentar en incrementos de 50 o 100 si es necesario

2. Es mejor utilizar DoubleToStr() para la impresión de cheques.

3. No entiendo por qué se utiliza una variable de cadena para leer

 
Vinin:


Por supuesto, es mejor cambiar a la matriz de lectura/escritura

1. No cambie el tamaño de la matriz por 1 en cada iteración, es mejor hacerlo con menos frecuencia, por ejemplo, aumentar en incrementos de 50 o 100 si es necesario

2. Para la impresión de cheques, es mejor utilizar DoubleToStr()

3. No entiendo por qué se utiliza una variable de cadena para leer

1. no funciona de otra manera. escribe filas nulas, como para 4 columnas debe actualizarse cada vez

2. ok.

3. una especial aconsejó, ahora lee todo correctamente. pero resulta, una fila nula es redundante, y una carrera extra.pero el valor no está allí, por lo que llena la fila nula en consecuencia.

 
orb:

1. no funciona de otra manera. escribe filas nulas, como para 4 columnas que tienes que actualizar cada vez

2. ok.

3. una especial aconsejó, ahora lee todo correctamente. pero resulta, una fila nula es extra, mientras que un extra run.and el valor no está allí, respectivamente la fila nula se llena.


Con este enfoque habrá grandes frenos.
 
Vinin:

Con este enfoque habrá grandes frenos.

Ya veo, hasta ahora me resulta más fácil escribir de esta manera.

¿Pueden decirme cómo deshacerse de que el "while" se ejecute una vez más?

 
orb:

Ya veo, hasta ahora me resulta más fácil escribir de esta manera.

¿cómo me deshago de mientras se ejecuta una vez más?



No pude deshacerme de él. Pero no he utilizado variables de cadena
 
Lo tengo. ¿Puede, entonces, ArrayResize(); aplicarse menos que el contador del bucle, eliminará esta cadena del array?
 
orb:
Lo tengo. ¿Puede, entonces, ArrayResize(); aplicarse menos que la cuenta del bucle, eliminará esta cadena del array?

Sí, lo hará.

Cuanto menos se utilice esta función, más rápido funcionará. Reservar 100 elementos y leer controlando el rebasamiento del array. Si es necesario, vuelva a aumentar la matriz en 100 elementos. Al mismo tiempo, se mantiene el número real de elementos descargados. Después de una descarga completa del array, se hace un nuevo ArrayResize(), pero por el número real de elementos descargados.

Pero las funciones para trabajar con arrays funcionan más correctamente. Primero debe guardar el número de elementos de la matriz en un archivo, y luego la propia matriz

Lee primero el número de elementos y establece el tamaño del array. Descargue el conjunto. Y no hay bucles

 
Vinin:

Sí, lo hará.

Cuanto menos se utilice esta función, más rápido funcionará. Reservar 100 elementos y leer controlando el rebasamiento del array. Si es necesario, vuelva a aumentar la matriz en 100 elementos. Al mismo tiempo, se mantiene el número real de elementos descargados. Después de una descarga completa del array, se hace un nuevo ArrayResize(), pero por el número real de elementos descargados.

Pero las funciones para trabajar con arrays funcionan más correctamente. Primero debe guardar el número de elementos de la matriz en un archivo, y luego la propia matriz

Lee primero el número de elementos y establece el tamaño del array. Descargue el conjunto. Y no hay bucles

¡Gracias! Lo tendré en cuenta para el futuro.
 

Por favor, aconséjeme cómo resolver el problema correctamente:

Hay una proyección de los niveles de soporte/resistencia de la TF más antigua a la TF actual. Es necesario determinar cuál de los niveles fue el último en ser probado por el precio. Intenté hacerlo a través de las banderas:

int start()
{ 
      int limit;
      int counted_bars=IndicatorCounted();
      if(counted_bars>0) counted_bars--;

      limit=Bars-counted_bars;
      if(limit>barsToProcess)
         limit=barsToProcess;

     for(int i=0;i<limit;i++)

{
 
  bool flag_R[], flag_S[], S[];

   double Level_Re = iCustom(NULL,0,"........",0,i); // для каждого бара получаем значения со старшего ТФ
   double Level_Su = iCustom(NULL,0,"........",1,i); // для каждого бара получаем значения со старшего ТФ

{
   if (iHigh(Symbol(),0,i)>=Level_Re)              // проверяем тестирование ценой уровня Re
   {flag_R[i]=true; flag_S[i]=false; S[i]=true;}   // выставляем флаги
   
   if (iLow(Symbol(),0,i)<=Level_Su)               // проверяем тестирование ценой уровня Su
   {flag_R[i]=false; flag_S[i]=true; S[i]=true;}   // выставляем флаги


   if (S[i]==false) {flag_R[i]=flag_R[i+1]; flag_S[i]=flag_S[i+1];} // если тестирования не было - берем предыдущее значение

   if (flag_R[0]==true) Print("Re zone tested"); if (flag_S[0]==true) Print("Su zone tested");
   
}
}

return(0);
}

pero el registro no muestra nada.... [Si pongo, por ejemplo, Print(Level_Re), al recorrer toda la matriz, el registro se detendrá en el valor del nivel de la última barra, es decir, los niveles en sí se calculan correctamente, pero con las banderas algo no funciona para mí.... ]

¿Cuál es el error? ¿O cuál es la mejor manera de hacerlo?

 
alkador:

a T-G

pruébalo así:

datetime expiración=TimeCurrent()+MaxSecLiveTime;

OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, expiration, CLR_NONE);


y cuál es la diferencia con:

extern int MaxSecLiveTime = 120;
OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, TimeCurrent()+MaxSecLiveTime, CLR_NONE);