Ajuda na codificação - página 371

 

2014.10.15 12:36:23.875Tester: Não é possível carregar o Auto EA v1 m11 do Fisher Experts\Fisher

 

2014.10.15 12:36:23.875Não é possível abrir o arquivo 'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4Experts\Fisher Auto EA v1 m11.ex4' [2]

 
grego:
2014.10.15 12:36:23.875 Não é possível abrir o arquivo 'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4Experts\Fisher Auto EA v1 m11.ex4' [2]

Se sua EA for cumprida e, como eu vi, ela pode ser carregada em um gráfico vivo, a única coisa que pode causar isso é um novo metatrader 4 e seus bugs de teste de costas. Mas verifique se a EA está corretamente compilada

 

declaração de 'LeftNum1' esconde declaração global na linha 20fisher m111.mq41198

talvez um problema entre especialista e indicador!?

 
grego:
2014.10.15 12:36:23.875 Não é possível abrir o arquivo 'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4Experts\Fisher Auto EA v1 m11.ex4' [2]

Rápido teste visual de retorno dessa EA

Está funcionando e está abrindo (e fechando) ordens. Parâmetros padrão utilizados

Arquivos anexados:
backtest.gif  66 kb
 

Oi pessoal novamente... outro pequeno pedido:

alguém pode me dizer como remover valores duplicados de uma matriz de cordas?

Por favor

Obrigado!

 
AtApi:
Oi pessoal novamente... outro pequeno pedido:

alguém pode me dizer como remover valores duplicados de uma matriz de cordas?

Por favor

Obrigado!

Você não pode remover um elemento(s) da matriz a menos que seja(m) o(s) último(s) elemento(s) da matriz. Como este não será o caso em 99,999% dos casos, você tem que criar um novo array vazio e adicionar apenas elementos únicos do array existente a esse array recém-criado.

 

Obrigado mladen por sua resposta... então eu deveria fazer algo assim?

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:
Obrigado mladen por sua resposta... então eu deveria fazer algo assim?

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]

Tente algo como isto :

[CÓDIGO] cordel tempArray[];

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

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

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

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

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

 
mladen:
Tente algo como isto :
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; }

Obrigado mladen!

o problema desta maneira é que não remove realmente a string da matriz, apenas muda o valor da string para "remover" tanto no valor original quanto no valor duplicado...então se eu quiser filtrá-los mais tarde eu removerei o valor original também...espero que eu esteja claro...