Форум сайта python.su
2reiсм пост выше - посмотрите сколько вам памти надо в указателях
WindowsError: exception: access violation reading 0x00000064
Отредактировано (Дек. 25, 2011 15:33:57)
Офлайн
вот нашел автор подключаеться к данному длл через какой то софт и берет значения и возвращает
#import “NeuroSolutionsAdapter.dll”
int CalcNeuralNet(string dllPath, string weightsPath, double& inputs, double& outputs);
#import
//+——————————————————————+
class CNeuroSolutionsNeuralNet
{
private:
string dllPath; // Путь к DLL-нейрости, созданной в NeuroSolutions
string weightsPath; // Путь к файлу весов сети
public:
double in; // Входы сети - OHLC 5 баров
double out; // Выход сети - Close текущего бара
CNeuroSolutionsNeuralNet();
bool Calc();
};
//+——————————————————————+
void CNeuroSolutionsNeuralNet::CNeuroSolutionsNeuralNet()
{
string terminal = TerminalInfoString(TERMINAL_PATH);
dllPath = terminal + “\\MQL5\\Files\\NeuroSolutions\\WeekPattern.dll”;
weightsPath = terminal + “\\MQL5\\Files\\NeuroSolutions\\WeekPattern.nsw”;
}
//+——————————————————————+
bool CNeuroSolutionsNeuralNet::Calc()
{
// Получим текущие котировки для нейросети
MqlRates rates, rate;
CopyRates(Symbol(), Period(), 0, 6, rates);
ArraySetAsSeries(rates, true);
// Заполним массив входных данных нейросети
double zlevel=0;
for (int bar=0; bar<=5; bar++)
{
rate = rates;
// 0-й бар на вход сети не идет
if (bar==0) zlevel=rate.open; // уровень отсчета цен
// 1-5 бары идут на вход сети
else
{
int i=(bar-1)*4; // номер входа
in = rate.open -zlevel;
in = rate.high -zlevel;
in = rate.low -zlevel;
in = rate.close-zlevel;
}
}
// Проведем расчет сети в DLL NeuroSolutions (через DLL-переходник)
int res = CalcNeuralNet(dllPath, weightsPath, in, out);
switch (res)
Офлайн
все я вообщем извиняюсь я не до конца понял структура этого длл все разобрался щас расскажу как что у меня поучаеться теоретически мне нужно задать в этот длл dllpath и weightsPath тоесть пути до моих файлов .
дальше тут есть строчка
CalcNeuralNet(dllPath, weightsPath, in, out);
где сооотвестенно вызываютсья все эти функции, можно же в ней задать все свою параметры и она подгрузить сразу, где dllPath путь до длл которую подгружать, weightsPath путь до весо которые подгружать , in те значения которые можно будеь прогнать на ней (пока зададим какой нить число или патом массив сделаем нада понять как она будеть прогонять), out выход тоесть значение которе буде получено после прогонаи оно должно быть возвращено я пока не понял как это сделать
тоесть мне по сути нада вызвать из длл одну функцию а не подгружать каждую изменять
которая вернеть мне значение out/
но при попытке вызыва CalcNeuralNet
тоесть в длл написано extern “C” __declspec(dllexport) int __stdcall CalcNeuralNet(
LPCWSTR dllPath_u, LPCWSTR weightsPath_u,
double* inputs, double* outputs)
по идеи функци подлежить вызовы извне
но при попытки вызова проста без параметров он срау пишет что не может найти
from ctypes import *
lib=cdll.DLLM
lib.CalcNeuralNet
AttributeError: function ‘CalcNeuralNet’ not found
Офлайн
ххехехе пишу
AD=windll.NeuroSolutionsAdapter
AD.CalcNeuralNet
<_FuncPtr object at 0x03090A80>
ларчик открылся походу щас буду пробовать=))))))
Офлайн
пришел к следующему
from ctypes import *
AD=windll.NeuroSolutionsAdapter
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(500000,dtype='d')
d2=np.zeros(500000,dtype='d')
d3=np.zeros(500000,dtype='int16')
d4=np.zeros(500000,dtype='int32')
out=0
inp=0.01
AD.CalcNeuralNet(dllpath,weightsPath, inp,out, d1.ctypes.data,d2.ctypes.data,d3.ctypes.data,d4.ctypes.data)
ArgumentError: argument 3: <type ‘exceptions.TypeError’>: Don't know how to convert parameter 3
Уважаемы питонеры посмторите где та я наврал не то задал
Офлайн
in по идеи значения скалярные с запятой out тоже
Офлайн
AD.CalcNeuralNet(dllpath,weightsPath,inp,out,d1.ctypes.data,d2.ctypes.data ,d3.ctypes.data, d4.ctypes.data)
исправил точки запятые все равно выдает
ArgumentError: argument 3: <type ‘exceptions.TypeError’>: Don't know how to convert parameter 3
Офлайн
from ctypes import *
AD=windll.NeuroSolutionsAdapter
x=“C:\Python27\DLL1\DLLM.nsw”
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(5000000,dtype='d')
d2=np.zeros(5000000,dtype='d')
d3=np.zeros(5000000,dtype='int16')
d4=np.zeros(5000000,dtype='int16')
out='0'
inp='0.01,0.02'
AD.CalcNeuralNet(dllpath,weightsPath,inp,out)
написал так вроде ошибок не выдал =)))))) без data.types
теперь нада вернуть значение out чтоб проверить работает функция или нет ===)))))
Офлайн
from ctypes import *
AD=windll.NeuroSolutionsAdapter
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(5000000,dtype='d')
d2=np.zeros(5000000,dtype='d')
d3=np.zeros(5000000,dtype='int16')
d4=np.zeros(5000000,dtype='int16')
out='0'
inp='0.05'
print “inp vxod” + inp
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
res =AD.CalcNeuralNet(dllpath,weightsPath,inp,out)
print “out=” +out ,“inp=” +inp
результат
inp vxod0.05
out=P inp=0.05
подаем на вход 0.05 на выходе буква Проста крута!!!!!
наверна это из за того что типы не указаны ? жду комментариев!
inp vxod1,1
out= точка какаято inp=1,1
беда она вообще не работает!!!!!!! беда!!
Отредактировано (Дек. 25, 2011 19:30:03)
Офлайн
:)
2rei
жду комментариев!
2reiКажется вам не в форум надо писать а снять фильм ужасов - борьба с питоном - он меня душит.
беда она вообще не работает!!!!!!! беда!!
Офлайн