Aiuto per la codifica - pagina 371

 

2014.10.15 12:36:23.875 Tester: Impossibile caricare Experts\Fisher Auto EA v1 m11

 

2014.10.15 12:36:23.875 Impossibile aprire il file '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 Impossibile aprire il file 'C:\Program Files\Forex Broker Inc MT4 Client Terminal\MQL4\Experts\Fisher Auto EA v1 m11.ex4' [2]

Se il tuo EA è compilato e come ho visto può essere caricato su un grafico live, l'unica cosa che può causarlo è un nuovo metatrader 4 e i suoi bug di back tester. Ma controlla se l'EA è compilato correttamente

 

dichiarazione di 'LeftNum1' nasconde dichiarazione globale alla linea 20 fisher m111.mq4 119 8

forse problema tra esperto e indicatore?

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

Rapido back test visivo di quell'EA

Funziona e apre (e chiude) gli ordini. Parametri predefiniti utilizzati

File:
backtest.gif  66 kb
 

Ciao ragazzi di nuovo... un'altra piccola richiesta:

qualcuno può dirmi come rimuovere i valori duplicati da un array di stringhe?

Per favore

Grazie!

 
AtApi:
Ciao ragazzi di nuovo... un'altra piccola richiesta:

qualcuno può dirmi come rimuovere i valori duplicati da un array di stringhe?

Per favore

Grazie!

Non puoi rimuovere un elemento(o più elementi) di un array a meno che non sia / siano l'ultimo elemento (o più elementi) dell'array. Dal momento che questo non sarà il caso nel 99,999% dei casi, devi creare un nuovo array vuoto e aggiungere solo gli elementi unici dell'array esistente all'array appena creato

 

Grazie mladen per la tua risposta... quindi dovrei fare qualcosa del genere?

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:
Grazie mladen per la tua risposta... quindi dovrei fare qualcosa del genere?

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]

Provate qualcosa del genere:

[CODICE] stringa 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:
Provate qualcosa del genere:
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; }

Grazie mladen!

il problema in questo modo è che non rimuove realmente la stringa dall'array, ma cambia solo il valore della stringa in "remove" sia sul valore originale che su quello duplicato... quindi se voglio filtrarli in seguito rimuovo anche il valore originale... spero di essere chiaro...

Motivazione: