编码帮助 - 页 371

 

2014.10.15 12:36:23.875 测试器。无法加载 Experts\Fisher Auto EA v1 m11

 

2014.10.15 12:36:23.875 无法打开文件'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4\Experts\Fisher Auto EA v1 m11.ex4' [2] 。

 
grego:
2014.10.15 12:36:23.875 无法打开文件'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4\Experts\Fisher Auto EA v1 m11.ex4' [2] 。

如果你的EA被编译了,而且正如我所看到的,它可以被加载到实时图表上,唯一能导致这种情况的是新的metatrader 4和它的回测器的错误。但请检查 EA是否被正确编译了

 

LeftNum1 "的声明在第20行隐藏了全局声明 fisher m111.mq4 119 8

也许是专家和指标之间的问题!?

 
grego:
2014.10.15 12:36:23.875 无法打开文件'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4\Experts\Fisher Auto EA v1 m11.ex4' [2] 。

对该EA进行快速的视觉回测

它正在工作,并且正在打开(和关闭)订单。使用默认参数

附加的文件:
backtest.gif  66 kb
 

大家好......又是一个小请求。

谁能告诉我如何从一个字符串数组中删除 重复的值?

请告诉我

谢谢!

 
AtApi:
大家好......又是一个小请求。

谁能告诉我如何从一个字符串数组中删除重复的值?

请告诉我

谢谢!

你不能删除一个数组元素,除非它是/它们是数组的最后一个元素。因为在99.999%的情况下都不会是这样,所以你必须创建一个新的空数组,并将现有数组中唯一的元素添加到新创建的数组中。

 

谢谢你的回答,那么我应该这样做吗?

int numDups = 0, prevIndex = 0;

string tempArray[];

for (int x = 0; x < ArraySize(myArray); x++)

{

bool foundDup = false;

for (int j = 0; j < x; j++)

{

if (myArray[x] == myArray[j])

{

foundDup = true;

numDups++; // Increment means Count for Duplicate found in array.

continue;

}

}

if (foundDup == false)

{

tempArray[prevIndex] = myArray[x]; prevIndex++;

}

}

 
AtApi:
谢谢mladen的回答......那么我应该这样做吗?

int numDups = 0, prevIndex = 0;

string tempArray[];

for (int x = 0; x < ArraySize(myArray); x++)

{

bool foundDup = false;

for (int j = 0; j < x; j++)

{

if (myArray[x] == myArray[j])

{

foundDup = true;

numDups++; // Increment means Count for Duplicate found in array.

continue;

}

}

if (foundDup == false)

{

tempArray[prevIndex] = myArray[x]; prevIndex++;

}

}

[/CODE]

试试这样的方法。

[CODE] string tempArray[];

for (int i = 0; i < ArraySize(myArray); i++)

for (int j = i+1; j < ArraySize(myArray); j++)

如果(myArray == myArray[j])myArray[j]="删除"。

for (i = 0; i < ArraySize(myArray); i++)

if (myArray != "remove") { ArrayResize(tempArray, ArraySize(tempArray)+1); tempArray[ArraySize(tempArray)-1] =myArray; }

 
mladen:
试试这样的方法。
string tempArray[];

for (int i = 0; i < ArraySize(myArray); i++)

for (int j = i+1; j < ArraySize(myArray); j++)

if (myArray == myArray[j]) myArray[j]="remove";

for (i = 0; i < ArraySize(myArray); i++)

if (myArray != "remove") { ArrayResize(tempArray, ArraySize(tempArray)+1); tempArray[ArraySize(tempArray)-1]=myArray; }

谢谢mladen!

这个方法的问题是,它并没有真正从数组中删除 字符串,它只是将字符串的值改为 "删除",对原始和重复的值都是如此......所以如果我想以后过滤它们,我也会删除原始值......我希望我清楚了。