Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Qui se Orderselect è FALSO come l'EA può tornare alla linea di codice: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
Qui se Orderselect è FALSE come l'EA può tornare alla linea di codice: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
Quel codice è sbagliato...
cnt deve iniziare da OrdersTotal() - 1 e diminuire fino a cnt >= 0 . . . . la prima voce è 0 non 1
Ecco perché ho chiesto di vedere il codice. . e tu hai mostrato abbastanza per identificare il problema . . probabilmente. ;-)
Quel codice è sbagliato . . .
cnt deve iniziare da OrdersTotal() - 1 e diminuire fino a cnt >= 0 . . . . la prima voce è 0 non 1
Ecco perché ho chiesto di vedere il codice. . e tu hai mostrato abbastanza per identificare il problema . . probabilmente. ;-)
Molto corretto. Grazie, Wizeman!
Molto corretto. Grazie, Wizeman!
E un'altra idea:
Se ho molte condizioni, si può scrivere
Se( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Qui, l'EA deve calcolare ogni condizione all'interno della parentesi.
Ma, se stai cercando l'efficienza (4.000 linee di codice...) preferisco avere:
Se ( X>b )
{
mentre (B>S)
{
Mentre (NB<F..)
{
BBB=5;
}
break;
}
break;
}
Le 2 varianti sono le stesse?
Y.
crossy, quando scrivi il codice, per favore usa il pulsante SRC, sarà molto più leggibile
Così sarà mostrato come questo
Ecco la spiegazione del ciclo "if, while e for" in mql4 https://book.mql4.com/operators/assign
Sul secondo codice, è OK dal momento che si utilizza la pausa, tuttavia, questo è un lungo cammino solo per ottenere BBB = 5, preferisco il primo codice, usa meno risorse
E un'altra idea:
Se ho molte condizioni, si può scrivere
Se( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Qui, l'EA deve calcolare ogni condizione all'interno della parentesi.
Ma, se stai cercando l'efficienza (4.000 linee di codice...) preferisco avere:
Usa il pulsante SRC per visualizzare il tuo codice per una migliore lettura, per favore :)
Il tuo OrderSelect() è codificato in modo sbagliato. Confronta il tuo codice con questo. Poi scrivi se hai ancora il problema o no :)
Un ringraziamento speciale a onewithzachy,
Non sapevo che l'ORDERSELECT migth non cattura, quindi potresti avere errori sconosciuti.
Il mio codice che era di 4016 linee di codice è diventato quasi 4500 linee - ma senza errori.
Grazie a tutti, amici.
Y.
Ciao amici,
Dopo un lungo viaggio qui, ho avuto un buon avanzamento con il mio EA, ma ho un altro problema, come segue:
Ho la seguente linea di codice:
CLOSE_Single_P(Pair1, "LONG",OrderT,OrderL);
come:
Pair1 è il simbolo,
"LONG" è il segno di un trade lungo,
OrderT è il numero del biglietto dell'ordine,
OrderL è la dimensione del lotto dell'ordine.
La funzione è la seguente:
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
double PRC;
bool Check = false;
for ( int cntt=0; cntt<20000; cntt++ )
{
if ( Check )
{
Check_Ini();
return;
}
for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- )
{
if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
{
Check = false;
if ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID);
else
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK);
Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
if ( Check )
break;
}
}
}
return;
}
Il mio PROBLEMA è: L'EA a volte chiude il trade molto bene, ma a volte l'EA chiude la tarde MA continua a cercare il ticket per chiuderlo, anche se è già stato chiuso.
(Ricevo l'errore: "Numero di ticket sconosciuto...".
Penso di avere un errore di logica.
Grazie per il vostro gentile aiuto.
Y
Per favore. . . . .