La bibliothèque de Roffild - page 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:

Le message"Votre CPU supporte des instructions pour lesquelles ce binaire TensorFlow n'a pas été compilé : AVX AVX2" apparaît également sur les CPU plus récents. Il s'agit d'un bogue connu dans TensorFlow. Cela n'a rien à voir avec la version Python.

Il y a un autre message comme "...not load dll..." de Python.


C'est vrai... j'ai un i3 et une vidéo GForce, si je ne me trompe pas l'ordinateur portable a 3-4 ans, même les jouets volent bien, mais avec AVE vient de découvrir

 

@Roffild, bon après-midi.

J'ai installé votre bibliothèque et j'ai immédiatement constaté l'erreur de la toute première vérification :

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

Les variables sont également toutes en place.


Qu'est-ce que j'ai encore oublié de faire ?

Merci.

 
 

Oui, je l'ai.

Désolé pour la stupidité.

 

Bon après-midi.

Les premiers pas dans l'utilisation de votre bibliothèque. À titre d'exemple, nous avons pris PythonDLL_Example.mq5 et PythonDLL_Example.py. J'ai juste décidé de tester le résultat de l'appel. Took, a créé un tableau de 11 nombres et l'a passé à la fonction. Jusqu'à présent, la fonction dans PythonDLL_Example.py ressemblait à ceci :

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

(mon premier changement )))) )Tout a fonctionné comme il se doit. En raison du fait que j'ai commencé à écrire lorsque la bourse est fermée, pour tester la fonction j'ai déplacé l'appel à int OnInit() Pas de problème, cela fonctionne lorsque l'EA est en cours d'exécution.

Ensuite, nous avons commencé à ajouter simplement les bibliothèques importées dans le fichier PythonDLL_Example.py

Le fichier a commencé à ressembler à ceci :

# 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()

Les choses suivantes ont commencé à se produire :

1. J'ai accroché l'EA, le résultat est correct. Le résultat ci-dessous.


Correct ! Le résultat est 251920 - c'est correct !

2. Je retire le Conseiller Expert et le ré-attache. La sortie est indiquée ci-dessous :



À la troisième ou quatrième fois, le conseiller expert se bloque.

Quel est le problème et comment peut-il être résolu ? Que dois-je faire ?

Merci.

 
  • Appeler pyFinalize() pour libérer de la mémoire a du sens, mais à cause d'un bogue dans la bibliothèque populaire NumPy, vous ne devriez pas le faire. question8097,question34309

Les plantages sont inévitables lorsqu'on utilise des bibliothèques populaires. Les crashs se produisent précisément au moment où l'on termine et où l'on commence un nouveau, et non pendant l'exécution du code. Il est plus facile de redémarrer le terminal pour une nouvelle exécution du code. Le testeur peut raccrocher si vous arrêtez le terminal avant la fin.

Les Crashdumps peuvent s'accumuler dansc:\Users\ \NAppData\NLocal\NCrashDumps

Le problème vient de Python lui-même, ou plutôt de l'absence d'un mécanisme permettant de notifier l'achèvement des bibliothèques externes.

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
 

OK, merci beaucoup.

Je vais travailler avec ce que j'ai.

 

Je pleure des larmes de sang !

Une ligne à la fois en essayant d'écrire un code de fonction.

Ce qui s'est passé :

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

La valeur de x est retournée correctement ! Le résultat est 251920

Ce qui a été ajouté :

    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]

La valeur de x est incorrecte ! Le résultat est 3.211426697968103e-322

J'ai essayé d'ajouter et de retirer une corde plusieurs fois ! Je viens de lire le fichier avec la chaîne ajoutée! Cela n'affecte en rien le calcul de x ! La bibliothèque pandas est importée.

Pourquoi le système se comporte-t-il ainsi ? Où chercher le problème ?

Merci ! )

 
Vous pouvez également déboguer du code dans PyCharm. Et vous pouvez également placer print() à des endroits problématiques - c'est le moyen le plus simple de contrôler les valeurs des variables. La console peut être activée.
Raison: