MQL4代码:
#import "PythonZones.dll"
void CalculateZones(double &data[], double quantile, int arraySize,char&[]);
#import
#property indicator_chart_window
char buffer[4096];
input color M5color = clrTurquoise;
input int WINDOW = 446;
input double PARAM_SHIFT = 0.14;
int start()
{
if (IsNewBar()){
double data[];
ArrayResize(data,WINDOW);
Rate(data,WINDOW);
Print(data[0]);
CalculateZones(data,PARAM_SHIFT ,WINDOW,buffer);
string zones = CharArrayToString(buffer);
Print(zones);
}
return(0);
}
void Rate(double &out[],int len){
for(int i=(len - 1);i>-1;i--){
double close = iClose(NULL,0,i+1);
out[i] = close;
}
}
和C++ +DLL代码:
^{pr2}$指示器工作得很好,但是当我从图表中删除指示器并重新添加它时,它不再工作,并返回错误“accessviolationread”。在
而且当我在Strategy Tester中使用它时,MetaTrader在没有记录任何错误的情况下崩溃。在
我认为问题出在数组引用上。我尝试用^ {< CD1}}代替数组,但是我不能编译它,因为我不知道MQL4或C++。在
我怎样才能解决这个问题?在
问题出在
numpy
包中。在C++
中使用时,不应初始化两次。Py_finilize()
工作不正常,并且不删除numpy
模块对象。我从这里开始求解https://github.com/numpy/numpy/issues/8097使用
string
-s的MQL4/DLL集成是一次疯狂的尝试但是,第一步应该是修复
#import
调用签名,其中提供了接口详细信息供MQL4编译器使用:如果调用DLL签名的修复,以满足您发布的呼叫接口,这将不起作用(我们不能测试没有测试的DLL的副本),您需要一个专家来进行这种双重系统集成(具有双重领域的专门知识,C++不足以使MQL4编排工作)。在
我祈祷你能用修复的
#import
呼叫签名来解决这个问题。几十年来这个双重领域的故障排除告诉了我为什么要这样祈祷。在相关问题 更多 >
编程相关推荐