Biblioteca de Roffild - página 10

 
Advanced Vector Extensions - Wikipedia
  • en.wikipedia.org
AVX2 expands most integer commands to 256 bits and introduces fused multiply-accumulate (FMA) operations. AVX-512 expands AVX to 512-bit support using a new EVEX prefix encoding proposed by Intel in July 2013 and first supported by Intel with the Knights Landing processor, which shipped in 2016.[3][4] AVX uses sixteen YMM registers. Each YMM...
 
Roffild:

El mensaje"Su CPU soporta instrucciones para las que este binario de TensorFlow no fue compilado: AVX AVX2" aparece también en CPUs más recientes. Este es un error conocido en TensorFlow. No tiene nada que ver con la versión de Python.

Hay otro mensaje como "...no cargar dll..." de Python


Es cierto... tengo i3 y GForce video, si no me equivoco el portátil tiene 3-4 años, hasta los juguetes vuelan bien, pero con el AVE recién descubierto

 

@Roffild, buenas tardes.

Instalé su biblioteca e inmediatamente detecté el error de la primera comprobación:

2019.07.09 21:56:43.540 PythonDLL_Example (USDRUB,D1)   ERROR: PythonHome == ""

Las variables también están en su sitio.


¿Qué más me he olvidado de hacer?

Gracias.

 
 

Sí, lo tengo claro.

Perdón por la estupidez.

 

Buenas tardes.

Inició los primeros pasos en el uso de su biblioteca. Como ejemplo tomemos PythonDLL_Example.mq5 y PythonDLL_Example.py. Acabo de decidir probar el resultado de la llamada. Tomó, hizo un array de 11 números y lo pasó a la función. Hasta ahora la función en PythonDLL_Example.py tenía el siguiente aspecto:

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        return [x]

(mi primer cambio ))) )Todo funcionó como debía. Debido a que he empezado a escribir cuando la bolsa está cerrada, para probar la función he trasladado la llamada a int OnInit() No hay problema, funciona cuando el EA está en marcha.

A continuación, comenzó a añadir simplemente las bibliotecas importadas en el archivo PythonDLL_Example.py

El archivo comenzó a tener este aspecto:

# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# https://github.com/Roffild/RoffildLibrary
# ==============================================================================

import pandas as pd

import numpy as np

import tensorflow as tf
from tensorflow import keras

import sys
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

class PythonDLL_Example():
    def getLong(self, magic: int, value: int, array: tuple) -> tuple or list:
        raise NotImplementedError

    def getULong(self, magic: int, value: int, array: tuple) -> tuple or list:
        raise NotImplementedError

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        return [x]

    def getString(self, magic: int, value: str, array: bytes) -> str:
        if magic == 1:
            return value + str(sys.version)
        if magic == 2:
            return str(array) + " " + str(sys.version_info)
        if magic == 3:
            return "sys.path:\n" + "\n".join(sys.path) + \
                   "os.environ[\"PATH\"]:\n" + os.environ["PATH"].replace(";", "\n")
        raise Exception("This is not a bug! This is a feature :D")


__mql__ = PythonDLL_Example()

Lo siguiente comenzó a suceder:

1. Cuelgo el EA, el resultado es correcto. El resultado es el siguiente.


¡Correcto! El resultado es 251920 - ¡es correcto!

2. Retiro el Asesor Experto y lo vuelvo a colocar. El resultado se muestra a continuación:



A la tercera o cuarta vez, el Asesor Experto se bloquea.

¿Cuál es el problema y cómo se puede resolver? ¿Qué tengo que hacer?

Gracias

 
  • Llamar a pyFinalize() para liberar memoria tiene sentido, pero debido a un error en la popular biblioteca NumPy, no deberías hacerlo. issue8097,issue34309

Las caídas son inevitables cuando se utilizan bibliotecas populares. Los bloqueos se producen precisamente en el momento de terminar y comenzar uno nuevo, no durante la ejecución del código. Es más fácil reiniciar el terminal para una nueva ejecución de código. El comprobador puede colgarse si se apaga el terminal antes de terminar.

Los Crashdumps pueden acumularse enc:\NUsers\NAppData\NLocal\NCrashDumps

El problema está en el propio Python, o más bien en la falta de un mecanismo para notificar a las bibliotecas externas la finalización.

Crash when importing numpy from the Python C-API after calling Py_Finilize() · Issue #8097 · numpy/numpy
Crash when importing numpy from the Python C-API after calling Py_Finilize() · Issue #8097 · numpy/numpy
  • numpy
  • github.com
New issue Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account
 

Bien, muchas gracias.

Trabajaré con lo que tengo.

 

¡Estoy llorando lágrimas de sangre!

Una línea a la vez tratando de escribir el código de la función.

Lo que pasó:

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        return [x]

El valor de x se devuelve correctamente. El resultado es 251920

Lo que se ha añadido:

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        df = pd.read_csv("RTSSplice.csv", usecols=['Low', 'Open', 'Close', 'High', 'Volume', 'Indicator1', 'Indicator2', 'Indicator3', 'Indicator4', 'Indicator5', 'Indicator6', 'Indicator7'], encoding='utf-16')
        return [x]

El valor de x devuelve incorrectamente! El resultado es 3.211426697968103e-322

He intentado añadir y quitar una cadena varias veces. ¡Acabo de leer el archivo con la cadena añadida! No afecta en absoluto al cálculo de x. Se importa la biblioteca de pandas.

¿Por qué el sistema se comporta así? ¿Dónde buscar el problema?

Gracias. )

 
También puedes depurar código en PyCharm. También puedes colocar print() en lugares problemáticos - es la forma más fácil de controlar los valores de las variables. La consola se puede activar.