Biblioteca da 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:

A mensagem"Sua CPU suporta instruções de que este binário TensorFlow não foi compilado para uso: AVX AVX2" aparece também em CPUs mais recentes. Este é um bug conhecido em TensorFlow. Não tem nada a ver com a versão Python.

Há outra mensagem como "...não carregar dll..." de Python


Isso é verdade... tenho vídeo i3 e GForce, se não me engano o laptop tem 3-4 anos, até os brinquedos voam bem, mas com AVE acabei de descobrir

 

@Roffild, boa tarde.

Instalou sua biblioteca e imediatamente pegou o erro da primeira verificação:

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

As variáveis também estão todas no lugar.


O que mais eu esqueci de fazer?

Obrigado.

 
 

Sim, eu já descobri.

Desculpe a estupidez.

 

Boa tarde.

Deu os primeiros passos na utilização de sua biblioteca. Como exemplo, tomamos PythonDLL_Example.mq5 e PythonDLL_Example.py. Decidiu apenas testar o resultado da chamada. Pegou, fez um conjunto de 11 números e o passou para a função. Até agora, a função em PythonDLL_Example.py era parecida:

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

(minha primeira mudança )))) )Tudo funcionou como deveria. Devido ao fato de ter começado a escrever quando a troca foi fechada, para testar a função mudei a chamada para o OnInit() Não há problema, ela funciona quando a EA está em execução.

Em seguida, começou simplesmente a adicionar bibliotecas importadas no arquivo PythonDLL_Example.py

O arquivo começou a ter 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()

O seguinte começou a acontecer:

1. Eu penduro o EA, o resultado é correto. A produção abaixo.


Correto! O resultado é 251920 - isto é correto!

2. Retiro o Expert Advisor e o recoloco. A saída é mostrada abaixo:



Na terceira ou quarta vez, o Expert Advisor cai.

Qual é o problema e como ele pode ser resolvido? O que eu tenho que fazer?

Obrigado

 
  • Chamando pyFinalize() para libertar memória faz sentido, mas por causa de um bug na popular biblioteca NumPy, você não deve fazer isso. número8097,número34309

As quedas são inevitáveis quando se utiliza bibliotecas populares. As quedas acontecem precisamente no momento de terminar e iniciar uma nova, não durante a execução do código. É mais fácil reiniciar o terminal para a execução de um novo código. O testador pode desligar se você matar o terminal antes da conclusão.

Crashdumps podem se acumular emc:Utentes

O problema é o próprio Python, ou melhor, a falta de um mecanismo para notificar bibliotecas externas da conclusão.

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, muito obrigado.

Vou trabalhar com o que tenho.

 

Estou chorando lágrimas sangrentas!

Uma linha de cada vez tentando escrever código de função.

O que aconteceu:

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

O valor de x é devolvido corretamente! O resultado é 251920

O que foi adicionado:

    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]

O valor de x retorna incorretamente! O resultado é 3,211426697968103e-322

Tentei adicionar-remover um cordel várias vezes! Acabei de ler o arquivo com a string adicionada! Isso não afeta de forma alguma o cálculo de x! A biblioteca dos pandas é importada.

Por que o sistema está se comportando desta maneira? Onde procurar o problema?

Obrigado! )

 
Você também pode depurar o código em PyCharm. Você também pode colocar a impressão() em locais problemáticos - é a maneira mais fácil de controlar os valores das variáveis. O console pode ser ativado.
Razão: