Domande su MQL4 - pagina 8

 
Gli hai chiesto di distruggere tutti gli ordini cinque minuti prima della chiusura del bar, quindi li prenderà tutti. Basta impostare correttamente l'ora. E usa altri pezzi di codice per chiudere gli ordini non necessari. O volete che l'intero programma sia scritto per voi?

Mi chiedevo la prima parte... come cancellare il secondo ordine dopo che si è attivato.
La mia cancellazione avviene prima che si inneschi, ma l'algoritmo di cancellazione si basa sul controllo degli ordini APERTI
Per esempio, sono stati impostati due ordini pendenti. Uno è scattato, cioè
OrderType()==OP_SELL o OrderType()==OP_SELL
La linea corrispondente viene stampata nel log
E nei risultati del test
cancellare viene prima di comprare o vendere
e questo causa confusione nella numerazione degli ordini

. E ho chiesto se posso chiudere a fine giornata senza usare Curtime() dato che l'aggiornamento dipende dai tick in entrata e se sono assenti, l'EA non chiuderà al momento necessario
Ora ho capito che non è possibile dato che l'EA non funziona senza tick
 
Appendete lo script e non si preoccuperà se ci sono zecche.
 
Puoi cancellare il secondo in questo modo:
   for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // controlla la posizione aperta OrderSymbol()==Symbol()) // controlla il simbolo { for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType()>OP_SELL && // controlla la posizione aperta OrderSymbol()==Symbol()) // controlla il simbolo { OrderDelete(OrderTicket()); } }


E il tempo...? È davvero necessario essere così precisi? Impostatelo entro 2 minuti, di solito non si ottiene il pieno di doldrums a quell'ora.

 
Per Roger
Grazie ora... Con una piccola modifica ha funzionato come dovrebbe, anche se ancora non capisco perché non ha funzionato per me (è tutto trasparente al massimo)
A proposito della depressione... Il fatto è che a volte non due ma cinque o più minuti (a seconda della croce)

Per Rosh
Non condividere lo script se hai certamente?
 
int Coord[8]; Coord[8]=1;


Il compilatore non mostra errori. È normale che sia così?

 
Sì, è così che dovrebbe essere.
GetLastError genera un errore quando viene eseguito. il compilatore non controlla i valori delle espressioni (la costante 8 è un caso speciale di espressione)
 
Slawa,
grazie mille, ora terrò d'occhio la dimensionalità degli array con più attenzione...)

Un'altra semplice domanda.
Nel caso in cui la dimensione del lotto superi chiaramente la quantità di fondi disponibili, quando si apre...
- il primo controllo viene eseguito sul server?
- Se no, perché il pannello di apertura dell'ordine si blocca per diversi secondi?
- se sì, è corretto, forse questo controllo dovrebbe essere fatto prima sul terminale?
 
Per Roger<br / translate="no"> Grazie ora... Con un po' di tweaking ha funzionato come dovrebbe anche se ancora non capisco perché non ha funzionato per me (tutto è trasparente all'estremo)
A proposito della depressione... Il fatto è che a volte non due ma cinque o più minuti (a seconda della croce)

Per Rosh
Puoi condividere lo script, se ne hai uno?


L'ho appena notato, o forse l'ho dimenticato. Qual è lo script che funziona indipendentemente dalle zecche?
Se è così, dovremmo scrivere qualcosa come:

while (true) { startFromExpert(); Sleep(per il tempo necessario); }



La funzione startFromExpert() si ottiene semplicemente rifacendo la funzione start() dell'EA, la copiamo tutta e la incolliamo nel nostro script, e non dimentichiamo di usare tutti i parametri dell'EA.
Questa è una delle opzioni.

 
In MQL 3 c'era una funzione:
TotalProfit - profitto totale non realizzato su tutte le posizioni aperte.
Non riesco a trovare come implementarlo in MQL 4, per favore consigliatemi come farlo.
 
Anch'io comincerò presto a bestemmiare. Non vuoi leggere l'aiuto?
double AccountProfit( ) <br / translate="no">

Restituisce il valore dell'utile per il conto corrente.

Esempio

Print("Profit ", AccountProfit());