Perché Metaquotes spinge la MT5 invece della MT4? - pagina 3

 
Stanislav Korotky:

E quali funzioni di MT4Orders sono utilizzate - asincrone (OrderSendAsync, OrderCloseAsync) o no? Questo è probabilmente il problema.

Non ho approfondito, l'ho solo collegato, controllato la velocità, confrontato con il codice originale su mql5, cancellato l'originale e lasciato solo la libreria con il codice mql4

 
Vitaly Muzichenko:

Non l'ho capito, l'ho solo collegato, controllato la velocità, confrontato con il codice originale su mql5, cancellato l'originale e lasciato solo la libreria con il codice mql4

Non sto chiedendo i dettagli della libreria, ma come è stata usata, per capire il problema. In generale, ho dato una mancia.

 
Stanislav Korotky:

Non stavo chiedendo informazioni sull'interno della libreria, stavo chiedendo come veniva usata, per vedere cosa stava causando il problema. Comunque, ti ho dato un consiglio.


Il problema non è come usare la biblioteca.

Il problema è che non abbiamo una posizione complessa in MT4, abbiamo degli ordini. Pertanto, dobbiamo chiudere una dozzina di ordini per ottenere l'effetto che abbiamo appena mostrato.

A proposito, non c'è questo effetto nel tester. E non lo abbiamo nella demo. Ma l'abbiamo sul conto reale.

In questo caso, la migrazione del codice da mql4 a mql5 e indietro "1 a 1" è impossibile.

Il lavoro con gli ordini su mql4 deve essere organizzato adeguatamente alle possibilità di mql4.

Non c'è modo di dirlo qui:

Vitaly Muzichenko:

L'unico grande svantaggio di MT4 ...

È solo che mql4 ha alcune caratteristiche e mql5 ne ha altre. In questo caso particolare mql5 ha il vantaggio. Ma il problema può essere risolto normalmente con mql4.

 
Andrey F. Zelinsky:

Il problema non è come usare la biblioteca.

Il problema è che in MT4 non c'è una posizione aggregata, ci sono ordini. E la chiusura di una dozzina di ordini ha l'effetto mostrato.

A proposito, non c'è questo effetto nel tester. E non lo abbiamo nella demo. Ma l'abbiamo sul conto reale.

In questo caso, la migrazione del codice da mql4 a mql5 e indietro "1 a 1" è impossibile.

Il lavoro con gli ordini su mql4 deve essere organizzato adeguatamente alle possibilità di mql4.

Non c'è modo di dirlo qui:

È solo che mql4 ha alcune caratteristiche e mql5 ne ha altre. In questo caso particolare mql5 ha il vantaggio. Ma questo problema può essere risolto normalmente su mql4.

Cosa può essere accelerato in MT4?

 if(OT==OP_BUY) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue);
   if(!error) Print("Error ",GetLastError());
 }
 if(OT==OP_SELL) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red);
   if(!error) Print("Error ",GetLastError());
 }
 
Andrey F. Zelinsky:

Il problema non è come usare la biblioteca.

Il problema è che in MT4 non c'è una posizione aggregata, ci sono ordini. E la chiusura di una dozzina di ordini ha l'effetto mostrato.

È ragionevole confrontare la MT4 con un conto di copertura della MT5 (in questo caso si tratta proprio di un tale sistema di trading). E cosa ha a che fare questo con la posizione aggregata? In MT5 ci sarà esattamente lo stesso mucchio di posizioni = equivalenti di ordini quad. Comunque, stai di nuovo portando la conversazione lontano dal problema.

 
Vitaly Muzichenko:

Cosa può essere accelerato in MT4?

Ho suggerito sopra di sostituire con le funzioni XXXAsync. Non sono sicuro che possa aiutare, ma perché non fare un tentativo?

 
Stanislav Korotky:

Ho suggerito sopra di sostituire con le funzioni XXXAsync. Non sono sicuro che possa aiutare, ma perché non fare un tentativo?

Probabilmente è un po' spento. Non ho problemi in MT5 con questo codice, e usando <MT4Orders>, tutto si chiude istantaneamente.

C'è un problema in MT4, ma lì per ovvi motivi e non hanno bisogno di <MT4Orders>, c'è il più semplice codice quadruplo. Ne ho più di cento, ho degli screenshot. A volte scivola a mio favore, e molto spesso, se è iniziata una chiusura e il prezzo è andato avanti. Non so a cosa sia legato, ma probabilmente è dovuto alla sequenza di invio degli ordini.

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Perché Metaquotes fa scivolare MT5 invece di MT4?

Vitaly Muzichenko, 2017.09.23 20:50

Cosa può essere accelerato in MT4?

 if(OT==OP_BUY) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue);
   if(!error) Print("Error ",GetLastError());
 }
 if(OT==OP_SELL) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red);
   if(!error) Print("Error ",GetLastError());
 }

Come minimo:

  • Fare a meno delle etichette velocizzerà il codice.
  • La normalizzazione dei prezzi non è sempre necessaria. Anche se ottenere il prezzo Ask o Bid stampa più cifre decimali, non significa che la normalizzazione darà un risultato positivo.

La normalizzazione del valore del prezzo è necessaria solo nel caso di operazioni matematiche con quel prezzo. Quando un valore viene aggiunto o sottratto al prezzo.

 
Vitaly Muzichenko:

Probabilmente è un po' spento. Non ho problemi in MT5 con questo codice, e usando <MT4Orders>, tutto si chiude istantaneamente.

C'è un problema in MT4, ma lì per ovvi motivi e non ha bisogno di <MT4Orders>, c'è il più semplice codice quadruplo. Ne ho più di cento, ho degli screenshot. A volte scivola a mio favore, e molto spesso, se è iniziata una chiusura e il prezzo è andato avanti. Non so cosa c'entri, ma probabilmente è dovuto alla sequenza di invio degli ordini.

Sì, è colpa mia - sono stupido.

La variante della soluzione è la seguente: invece di chiudere diversi ordini, metto un contatore di volume totale, e poi chiamo OrderCloseBy diverse volte fino alla distruzione reciproca.

 
Stanislav Korotky:

La soluzione è la seguente: invece di chiudere diversi ordini, mettere un contatore di volume totale, e poi chiamare OrderCloseBy diverse volte fino alla distruzione reciproca.

Questa variante funziona, purtroppo, solo per un simbolo.


È strano che nessuno abbia aggiunto funzioni di ordine asincrono al kodobase di MT4 nel corso degli anni.