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

 
Eres un héroe, Junko, arreglando silenciosamente el código y... Es como si eso fuera lo que ocurrió. ¿Me vas a decir que eso es lo que pasó y que te estoy mintiendo? ¿Sí?
 
Roger:
¿Por qué está leyendo de un archivo? Tienes todo el archivo en la variable ReadCBOE, puedes usarlo,

No hay problema con él, pero no toda la línea encaja en la variable! MT tiene sus propias restricciones en la longitud de la línea, mientras que el archivo se escribe en la información del sitio, y el archivo termina </body></html> mientras que la línea - se rompe en 65k caracteres (más o menos). En cualquier caso, el tamaño final del archivo es de 69KB.

 
Integer:

Lea el artículo. Básicamente no hay forma en la naturaleza de leer una línea determinada de un archivo, hay que leer todas las líneas hasta una línea determinada... Hay una función en el artículo para leer un archivo de texto línea por línea.

Vaya, gracias, no lo encontré yo, debería haber buscado por etiqueta HTML.
 
Zhunko:

Así es como funciona. Lo he comprobado.


De todos modos, hay un error, y aquí es
if (FileWriteString(hFile, sTextWrite, 10000) < 0)
escribe TODA la cadenaen el archivo, independientemente de los 3 parámetros de la función, que es responsable del tamaño de la cadena.
 
Integer:
Eres un héroe, Junko, arreglando silenciosamente el código y... como si eso fuera lo que ocurrió. ¿Me vas a decir que fue así y que te estoy engañando? ¿Sí?

¿Arreglar qué? ¿Comprobación de NULL? Eso está bien. ¿Qué pasa? Si encuentro un error, lo arreglo.

No lo arreglas. Lo he visto. Incluso cuando lo señalaste, no lo corregiste. ¿Te gusta cometer errores y no corregirlos? ¿Y luego te jactas de ello?

=============

Estoy excusado. Casi nunca escribo en MQL4. Ya he escrito todo lo que necesito. No trabajo con descriptores y errores. Fueron escritas hace mucho tiempo, encapsuladas y olvidadas.

En C++, los descriptores suelen compararse con NULL.

mzk_3om6u:

De todos modos, hay un error, y aquí es
if (FileWriteString(hFile, sTextWrite, 10000) < 0)
escribir TODA la cadena en el archivo, independientemente de 3 parámetros de la función que son responsables de tamaño de la cadena.
No lo es. Funciona. Es que este código no sobrescribe el archivo. Estás viendo un archivo que ya está escrito. Parece que no funciona. De hecho, se escribió donde debía, pero la continuación de la línea sigue siendo la antigua.

Escriba algo más, o borre el archivo, o ponga una bandera de sólo escritura en él.

 
Zhunko:

¿Arreglar qué? ¿Comprobación de NULL? Eso está bien. ¿Qué pasa? Si encuentro un error, lo arreglo.

No lo arreglas. Lo he visto. Incluso cuando lo señalaste, no lo corregiste. ¿Te gusta cometer errores y no corregirlos? ¿Y luego te jactas de ello?

=============

Estoy excusado. Casi nunca escribo en MQL4. He escrito todo lo que necesito. No trabajo con descriptores y errores. Fueron escritas hace mucho tiempo, encapsuladas y olvidadas.

En C++, los descriptores suelen compararse con NULL.

No lo es. Funciona. Es que este código no sobrescribe el archivo. Estás viendo un archivo que ya está escrito. Parece que no funciona. De hecho, se escribió donde debía, pero la continuación de la línea sigue siendo la antigua.

Escriba algo más, o borre un archivo o establezca una bandera de sólo escritura.


Sí, está funcionando... Gracias.
 
Hola! ¿Va a salir MetaTrader para Windows Phone o Windows RT, y cuándo está previsto que salga?
 
Buen tiempo. Por favor, ayúdenme a resolver el error.
extern int OpenHH = 14; // Время открытия ордеров (часы).
extern int OpenMM = 25; // Время открытия ордеров (минуты).

extern int CloseHH = 23; // Время закрытие/удаление ордеров (часы).
extern int CloseMM = 45; // Время закрытие/удаление ордеров (минуты).


Esta parte del código funciona y no hay quejas al respecto. Los pedidos del viernes a las 23:45 se cierran normalmente. La función DeleteOrders() funciona bien.

if (DayOfWeek() == 0 || DayOfWeek() == 6 ) return(0); // В выходные не работаем.
if (!IsTradeAllowed()) return(0); // Пропустить тик, если терминал занят.
if (Close_All_Orders) // Разрешение на закрытие ордеров.
if (DayOfWeek() >= 5 && // Если пятница и закрытие ордеров разрешено, то
TimeHour(TimeCurrent()) >= CloseHH && // в назначенный час
TimeMinute(TimeCurrent()) >= CloseMM ) // в назначенные минуты -
{ DeleteOrders(); return(0); } // все ордера закрываются.


El código de apertura de pedidos se hace por analogía. El código no funciona en absoluto en la forma especificada.
Sin embargo, si eliminamos o comentamos la línea con los minutos, todo funciona bien y las órdenes se abren a las 14:00. La función OpenOrders() funciona bien.
Cuál puede ser el problema en esta (u otra) línea de código: TimeMinute(TimeCurrent()) >= OpenMM ?

if (Trade) // Разрешение на торговлю.
if (TimeHour(TimeCurrent()) >= OpenHH && // В назначенный час,
TimeMinute(TimeCurrent()) >= OpenMM ) // в назначенные минуты -
{ OpenOrders(); return(0); } // открыть ордера.


PD: Básicamente, hay bastantes EAs en Internet que abren y cierran órdenes por tiempo. Pero, por una u otra razón, pueden no ser satisfactorios. Me gustaría tratar el error anterior...

Gracias...

 
Crosswert:
Buenas tardes. Ayúdame con este error.


Todo parece correcto, debería funcionar. Probé tu código en el mío - funciona con minutos. Pero sólo de 14:25 a 14:59, de 15:25 a 15:59, etc.

int start()
  {
  int OpenHH=14,OpenMM=25;
  bool Trade=true;
//----
if (Trade) // Разрешение на торговлю.
 if (TimeHour(TimeCurrent()) >= OpenHH && // В назначенный час
 TimeMinute(TimeCurrent()) >= OpenMM ) // в назначенные минуты - 
 { OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера.   
//----
   return(0);
  }
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}


 

Tal vez eso sea mejor.

if ((Hour() == OpenHH && Minute() >= OpenMM) || (Hour() > OpenHH))