[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1050

 

Come scrivo la condizione if(ordershistorytotal()"rifornito da un ordine")?

 
Stasjan:

Come scrivo la condizione if(ordershistorytotal()"rifornito da un ordine")?

Per questo, il valore precedente di OrdersHistoryTotal() deve essere memorizzato in una variabile statica, e i valori precedenti e attuali devono essere confrontati nella condizione. Se è cambiato, allora si è ricostituito, dato che lì i valori non cambiano in una direzione minore.
 
Reshetov:
Per fare questo, il valore precedente di OrdersHistoryTotal() deve essere memorizzato in una variabile statica, e i valori precedenti e attuali devono essere confrontati nella condizione. Se è cambiato, allora si è riempito, dato che i valori non cambiano verso il basso.

grazie!!!
 
prom18:
Per favore, aiuto. L'Expert Advisor mette due ciondoli BuyStop e SellStop accanto al segnale. C'è anche un segnale per aprire un ordine pendente Buy. Devo modificare un vecchio ordine di acquisto in base alle condizioni dell'ultimo segnale. L'ho fatto attraverso la funzione OrderModify(). Non ha funzionato. Ci dà un errore 4051. Come selezionare l'ordine richiesto. Capisco che dobbiamo scegliere il biglietto, ma come determinare il biglietto dell'ordine richiesto (in questo caso, abbiamo a che fare con BuyStop). Spiegare almeno la logica dell'azione. Grazie!

int ticket = -1;

...

OrderSelect(...);

se (OrderType() == OP_BuyStop) {

ticket = OrderTicket();

OrderModify(...);

ritorno(0);

}

 
Reshetov:
Per fare questo, il valore precedente di OrdersHistoryTotal() deve essere memorizzato in una variabile statica, e i valori precedenti e attuali devono essere confrontati nella condizione. Se è cambiato, allora si è riempito, poiché i valori non cambiano verso il basso in quel punto.

Qualche consiglio su come renderlo uguale?
 
Roman.:

1 non è certamente molto. Molto dipende dalla velocità di esecuzione dei tuoi ordini da parte del broker, dipende dalla velocità (da internet) con cui dai i tuoi ordini al broker, e probabilmente da "qualcosa" sul conto reale di cui noi (io) non abbiamo idea. Slava ha scritto, come il broker ha tagliato il suo pipsaur (per mezzo del cosiddetto "approccio individuale" a un cliente) aumentando un minimo dist da 2,3 punti a 18 - 20 punti, vedere un ramo qui https://forum.mql4.com/ru/37451/page10...
Ho messo 2 punti in "buffer" - tutti i trade sono aperti ora ) Grazie ancora.
 
Stasjan:

Qualche consiglio su come resettarlo?

statico prevhitorytotal = 0;

...

se (OrderHistoryTotal() != prevhistorytotal) {

// rifornito da un ordine

}

prevhistorytotal = OrderHistoryTotal();

 
Reshetov:
A tal fine, il valore precedente di OrdersHistoryTotal() deve essere memorizzato in una variabile statica, e i valori precedenti e attuali devono essere confrontati nella condizione. Se è cambiato, allora si è riempito, poiché i valori lì non sono cambiati verso il basso.


static int totalh=OrdersHistoryTotal();

se(OrdiniHistoryTotale()>totaleh)

Ho capito bene o no?

 
Reshetov:

statico prevhitorytotal = 0;

...

se (OrderHistoryTotal() != prevhistorytotal) {

// rifornito da un ordine

}

prevhistorytotal = OrderHistoryTotal();


Capito?

 
Stasjan:


static int totalh=OrdersHistoryTotal();

Non è corretto.

static int totalh=0; // le variabili statiche sono dichiarate prima delle chiamate start(), init() e deinit()

...

int start() {

...

se (OrderHistoryTotal() != totalh) {

// rifornito da un ordine

}

totalh = OrderHistoryTotal();

...

}