void DLL_EXPORT GetLocalMaxMin(double* x_sm[],double* x_rl[], double* loc_max[], double* loc_min[], int N, bool real_price)
{
...
}
2 在python中做以下工作。
from ctypes import *
my_dll = cdll.LoadLibrary("my_dll/my_lib.dll") #загружаем свою DLL
my_dll.GetLocalMaxMin.argtypes = [POINTER(c_double),
POINTER(c_double), POINTER(c_double), POINTER(c_double), c_int, c_bool] #определяем типы входных аргументов функции через атрибуты ctypes
my_dll.GetLocalMaxMin.restype = None #определяем типы выходных данных
...
# y - список цен
# y_sm - список сглаженных цен
# len(y)=len(y_sm) - длина списков одинаковая
x_sm = (c_double * len(y))(*y_sm) #создаем указатель на массив x_sm размером len(y_sm) предаем туда указатель на массив y_sm
x_rl = (c_double * len(y))(*y) #создаем указатель на массив x_rl размером len(y) предаем туда указатель на массив y
loc_max = (c_double * len(y))() #создаем указатель на массив loc_max размером len(y) заполный 0.0
loc_min = (c_double * len(y))() #создаем указатель на массив loc_min размером len(y) заполный 0.0
my_dll.GetLocalMaxMin(x_sm, x_rl, loc_max, loc_min, len(y), True) #вызываем функцию и передаем туда все что насоздавали
print(list(loc_max),list(loc_min)) #смотрим что получилось
....
轻松,关于遗传编程可能性的好文章
https://blog.ephorie.de/symbolic-regression-genetic-programming-or-if-kepler-had-r
我发现(对我来说)一个很酷的方法,可以在python上测试我的mql脚本,以及大大加快其中的一些函数,使用dll。
这里是mql5中的初始函数,我想把它放到python中。它只是利用价格的平滑形态来搜索价格的最小值和最大值。
这要分几个步骤进行
1.在某个地方,在visual studio或codeblock中编译你的dll。在.cpp文件中我们写出我们的函数,在.h文件中我们声明它。在帖子的附件中,有一个对我有用的例子。在codeblox项目文件中,有main.cpp文件, main.h 文件,在文件夹\bin\Debug文件my_lib.dll。 简而言之,这里是c++中的函数头。
2 在python中做以下工作。
这不是最终的真相,有任何补充,或其他选择,请写。
我发现(对我来说)一个很酷的方法,可以在python上测试我的mql脚本,以及大大加快其中的一些函数,使用dll。
这里是mql5中的初始函数,我想把它放到python中。它只是利用价格的平滑形态来搜索价格的最小值和最大值。
这要分几个步骤进行
1.在某个地方,在visual studio或codeblock中编译你的dll。在.cpp文件中我们写出我们的函数,在.h文件中我们声明它。在帖子的附件中,有一个对我有用的例子。在codeblox项目文件中,有main.cpp文件, main.h 文件,在文件夹\bin\Debug文件my_lib.dll。 简而言之,这里是c++中的函数头。
2 在python中做以下工作。
这不是最终的真相,任何补充,或其他选择,写。
如果是速度,那么就不要用
循环内,在调用函数之前,设置你想要的大小,就像你在C++和python中做的那样,或者用第三个参数保留它
现在,每一次对ArrayResize的调用,都会在内存中创建一个新的区块,将旧的区块复制到其中,并删除旧的区块。这非常、非常慢。
И
ArraySize(loc_max)
你不必每次都这样做,你可以把它储存在一个变量中。
试试吧,也许你就不用把一个简单的函数翻译成3种不同的编程语言了。开发人员说,MQL的速度与C++相当,而且在某些方面更快。
如果你可以直接从MQL调用DLL,为什么还需要Python?
还是你有其他的目的?你想达到什么目的?
如果速度,不要使用
循环内,在调用函数前,像在C++和Python中那样,设置你想要的大小,或者用第三个参数保留它
现在,每一次对ArrayResize的调用,都会在内存中创建一个新的区块,将旧的区块复制到其中并删除旧的区块。这非常、非常慢。
И
你不必每次都这样做,你可以把它储存在一个变量中。
试试吧,也许你就不用把一个简单的函数翻译成3种不同的编程语言了。开发人员说,MQL的速度与C++相当,而且在某些方面更快。
如果你可以直接从MQL调用DLL,为什么还需要Python?
还是你有其他的目的?消息中的极值搜索 功能只是作为一个例子来说明其背后的原理。
目的是方便在Python中寻找特征和目标的依赖关系,并挑选模型,而MQL有一个很好的测试器,如果不是为了欺骗自己,会给你一个明确的估计结果。
我对Python工作很自如,但我刚开始学习,不能用Python中的循环来写mql5中的任何函数,使用矢量计算。没有它们,写代码就是浪费时间,因为Python的速度非常慢。有些函数可能在每条上都被调用,这使得它很难找到。我到处使用algib,因为他们有python和mql5的解决方案。但是,当谈到我的疯狂想象力时,我有一些问题。
mql5 的代码可以很容易地转换为c++ 并编译成dll。因此,我在测试器和Python脚本中使用一个相同的函数。
消息中的极值搜索功能只是作为一个例子来说明其上的原理。
目的是Python对于搜索特征和目标的依赖关系以及拟合模型很有用,而MQL有一个很好的测试器,如果不是自己作弊,可以让你对你的发现有一个清晰的估计。
所以,你已经在Python中找到了依赖关系,挑选、训练和测试了模型。那么你如何在测试器中进行测试呢?Python对测试器或MKL5不友好。
如果TS的平均持仓时间为10分钟。而目前的位置 已经挂了10个小时,那么它的结果是一个赌博(完全非系统性的)?
这取决于TS的逻辑/规则是如何编写的。这个 "可能 "是一个概率性的结果,不是由TC的逻辑决定的。如果该逻辑在所有10个小时内都绝对有效,那么这只是一个罕见的案例。
如果所有10个小时的逻辑都绝对有效,这只是一个罕见的案例。
仅仅因为逻辑起作用并不意味着结果是系统性的。
仅仅因为逻辑起作用并不能使结果系统化。
这个问题并没有具体说明对什么适用对价和系统性。如果是对TC,那么就取决于TC,如果是对外部条件,那么罕见的情况本来就不是系统性的。而且可能有例外情况。欧洲美元14年5月至15年3月的情况。不是一个系统性的案例。