Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1109

 
LRA:
La domanda è rilevante, per esempio, per un sistema di formazione. Per ottenere la distribuzione, installare MT4 su un'unità flash. Oppure copiate la cartella del terminale su un'unità flash. Poi questa cartella può essere copiata su un numero qualsiasi di computer un numero qualsiasi di volte. Una tale distribuzione è utile per scopi di backup, di recupero, di ripristino... Meglio avviare il terminale con lo switch /portable, altrimenti creerà scomode cartelle inutili sul vostro computer. Questa domanda è trattata più dettagliatamente in un altro thread al seguente link

Come impostarlo?

Il programma di installazione che scarico non installa nulla da internet.

 

Quando avvio il programma di installazione, appare una finestra che mostra un indicatore di download del file.

Poi appare un'altra finestra

Il programma di installazione mi richiede di specificare le impostazioni proxy, che non ho.

 
 
polpolpol:

Quando avvio il programma di installazione, appare una finestra che mostra un indicatore di download del file.

Poi appare un'altra finestra

Il programma di installazione mi richiede di specificare le impostazioni proxy, che non ho.

Devo spegnere l'antivirus e resettarlo dalla memoria.
 

Ciao, la seguente voce sarà corretta? La funzione quando viene chiamata dovrebbe cancellare tutti gli ordini in sospeso.

void DeletedOrders()
         {
         for (int i=0; i<=OrdersTotal(), i++)
             {
             if (OrderSelect(i,SELECT_BY_POS))
                type=OrderType();
             if (type==2 || type==3 || type==4 || type==5)
                OrderDelete(i,clrNONE);
             }
         return();
         }  
 
bobrush:

Ciao, la seguente voce sarà corretta? La funzione dovrebbe cancellare tutti gli ordini pendenti quando viene chiamata.

No, certo che no. Dovremmo specificare il biglietto, non il numero d'ordine nel ciclo:OrderDelete(OrderTicket(),clrNONE);

E la condizione è sufficiente:if(type>1).

Raccomando anche di stampare più spesso il codice di errore - aiuta.

Oh, sì, le funzioni di tipo "void" non devono restituire nulla, non abbiamo bisogno di return() nell'esecuzione normale, solo quando l'uscita prematura della funzione è fornita da qualsiasi condizione.

 
bobrush:

Ciao, la seguente voce sarà corretta? La funzione quando viene chiamata dovrebbe cancellare tutti gli ordini in sospeso.

Tenete presente che ci sono ancora tipi di ordine non documentati con type=6 e con type=7 rispettivamente per le operazioni sopra il saldo e sopra il credito del conto.

Invece di i<=OrdersTotal(), i<OrdersTotal() sarebbe meglio, senza chiamare inutilmente OrderSelect

E il ciclo deve essere passato dalla fine all'inizio, altrimenti, se l'array dell'ordine ha il tempo di essere aggiornato dopo che l'i-esimo elemento in esso è stato rimosso, il precedente i+1esimo elemento nell'i-esimo posto sarà saltato. È meglio iniziare dalla fine.

Se consideriamo che gli sviluppatori non garantiscono alcun ordine nell'array degli ordini, non possiamo effettivamente garantire che la sequenza degli ordini nel loro array rimanga la stessa dopo averne eliminato uno. Questo sarebbe abbastanza affidabile. Facciamo un ciclo fino a quando l'ordine pendente viene rilevato. Il ciclo è terminato. Cancellare l'ordine che abbiamo trovato. Aspettiamo Sleep (100) per aggiornare l'array di ordini. Poi torniamo al ciclo per trovare l'ordine pendente ma con un nuovo array di ordini. Eseguiamo una ricerca completa, ma non riprendendo il ciclo precedente. Il ciclo di tre (il ciclo di ricerca, la cancellazione di un ordine, l'attesa dell'aggiornamento dell'array) fino a quando l'ordine in sospeso non può essere trovato.

 
evillive:

No, certo che no. Il biglietto deve essere specificato, non il numero d'ordine nel ciclo:OrderDelete(OrderTicket(),clrNONE);

E la condizione è sufficiente:if(type>1).

Raccomando anche di stampare il codice di errore più spesso - aiuta.

Oh, sì, le funzioni di tipo "void" non devono restituire nulla, non abbiamo bisogno di return() nell'esecuzione normale, solo quando l'uscita prematura della funzione è fornita da qualsiasi condizione.


Grazie!
 
Vlad143:

Si noti che ci sono ancora tipi di ordine non documentati con type=6 e con type=7 rispettivamente per le transazioni sopra il saldo e sopra il credito del conto.

Invece di i<=OrdersTotal(), i<OrdersTotal() sarebbe meglio, senza chiamare inutilmente OrderSelect

E il ciclo deve essere passato dalla fine all'inizio, altrimenti, se l'array dell'ordine ha il tempo di essere aggiornato dopo che l'i-esimo elemento in esso è stato rimosso, il precedente i+1esimo elemento nell'i-esimo posto sarà saltato. È meglio iniziare dalla fine.

Se consideriamo che gli sviluppatori non garantiscono alcun ordine nell'array degli ordini, non possiamo effettivamente garantire che la sequenza degli ordini nel loro array rimanga la stessa dopo averne eliminato uno. Questo sarebbe abbastanza affidabile. Facciamo un ciclo fino a quando l'ordine pendente viene rilevato. Il ciclo è terminato. Cancellare l'ordine che abbiamo trovato. Aspettiamo Sleep (100) per aggiornare l'array di ordini. Poi torniamo al ciclo per trovare l'ordine pendente ma con un nuovo array di ordini. Eseguiamo una ricerca completa, ma non riprendendo il ciclo precedente. E dobbiamo farlo in triplicato (ciclo per trovare, cancellare un ordine, aspettare che l'array sia aggiornato) fino a quando l'ordine in sospeso non può essere trovato.


Cioè, for(OrdersTotal()-1,i=0,i--) e alla fine del ciclo, sleep e break?
 
Vlad143: Aspettiamo Sleep (100) per aggiornare l'array di ordini.
IMHO, IMHO, la mia opinione personale invece di Sleep (100) è meglio while(!RefreshRates()); punto e virgola alla fine.
Motivazione: