Помощь в кодировании - страница 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 Cannot open file 'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4\Experts\Fisher Auto EA v1 m11.ex4' [2]

Если ваш советник скомпилирован и, как я видел, может быть загружен на живой график, единственное, что может вызвать это новый metatrader 4 и его ошибки в бэк-тестере. Но проверьте, правильно ли скомпилирован советник

 

объявление 'LeftNum1' скрывает глобальное объявление в строке 20 fisher m111.mq4 119 8

возможно, проблема между экспертом и индикатором!?

 
grego:
2014.10.15 12:36:23.875 Cannot open file 'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4\Experts\Fisher Auto EA v1 m11.ex4' [2]

Быстрый визуальный тест этого советника

Он работает и открывает (и закрывает) ордера. Используются параметры по умолчанию

Файлы:
backtest.gif  66 kb
 

Привет, ребята... еще одна небольшая просьба:

может кто-нибудь подсказать мне, как удалить дублирующиеся значения из строкового массива?

Пожалуйста,

Спасибо!

 
AtApi:
Привет, ребята... еще одна небольшая просьба:

может ли кто-нибудь подсказать мне, как удалить дублирующиеся значения из строкового массива?

Пожалуйста,

Спасибо!

Вы не можете удалить элемент(ы) массива, если только он/они не являются последним(и) элементом(ами) массива. Поскольку в 99.999% случаев это не так, вы должны создать новый пустой массив и добавить в этот вновь созданный массив только уникальные элементы существующего массива.

 

Спасибо 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++;

}

}

 
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++)

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:
Попробуйте сделать что-то вроде этого:
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!

Проблема в том, что этот способ не удаляет строку из массива, он просто меняет значение строки на "remove" как для оригинального, так и для дублирующего значения... так что если я захочу позже отфильтровать их, я удалю и оригинальное значение... надеюсь, я понятно объяснил...