Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1866

 
Andrey Sokolov #:

Gli array k_buffer[0] e d_buffer[0] contengono gli ultimi valori dell'indicatore. Che problema c'è ad emetterli e a vederli di persona?

Sì, infatti, a quanto pare il mio errore è altrove. Grazie!

 
Andrey Sokolov #:

Cosa esattamente non funziona nell'abbreviazione del codice?

Ho già scritto. Se si verificano certe condizioni, diversi ordini saranno chiusi. Sono posizionati su diverse coppie di valute e in diverse direzioni. Ecco un pezzo di codice.

 if ( NormalizeDouble((MaxOpenSell(2) + MaxOpenBuy(2) + MinOpenSell(2))*Point,Digits) >= Profit1 && FindLastSell() >= Block 
         && FindLastBuy() >= 1 && MaxOpenSell(2) > 0 && MA1 < MA2)
      {
         LockTicket = 0;
         CalProfHis = 0;
         bool close =  OrderClose((int)MaxOpenSell(5),MaxOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MinOpenSell(5),MinOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MaxOpenBuy(5),MaxOpenBuy(3), Bid, Slippage, clrBlue);
      }

Chiudo tre ordini in esso.

Tuttavia, la mia società di intermediazione a volte li perde, suppongo a causa di molti segnali alla volta. Così, posso controllare ogni ordine e ripeterlo se fallisco.
La questione è come farlo correttamente e con competenza, e non scrivere un codice enorme. Sono sicuro che c'è una via più breve, è per questo che lo chiedo a voi, miei programmatori anziani.

 
makssub #:

Così posso scrivere un assegno per ogni ordine, e ripeterlo se fallisce.
La domanda è: come farlo in modo corretto e competente, e non scrivere codice enorme. Sono sicuro che c'è una via più breve, quindi lo chiedo a voi, i nostri programmatori senior.

L'opzione che ho suggerito non ti soddisfa?

Questo è il forum per il trading, i sistemi di trading automatico e il test delle strategie.

Tutte le domande dei neofiti su MQL4 e MQL5, o qualsiasi consiglio e discussione su algoritmi e codici

Mihail Matkovskij, 2022.01.17 10:35

Se si verifica una condizione di uscita/chiusura, aggiungi i tick all'array. Poi, se la matrice non è vuota, la percorre in loop, chiamando OrderClose per ogni biglietto. Poi controlla l'esistenza di ogni biglietto e lo rimuove dalla lista (array). Ripetete queste azioni a intervalli di 1-3 secondi fino a quando la lista è vuota.


 
Il policitismo è tutto
 
Artyom Trishkin #:
Il policitismo è tutto

che è all'inizio :)

Naturalmente, quando vedo questi codici, mi vengono le lacrime di pietà.

 
Vitaly Muzichenko #:

che è all'inizio :)

Naturalmente, quando vedo questi codici, mi vengono le lacrime di pietà.

Allo stesso tempo, le stampelle non si scrivono da sole...

 
Vitaly Muzichenko #:

che è all'inizio :)

Naturalmente, quando vedo questi codici, mi vengono le lacrime di pietà.

Signori, per favore, usate una critica ragionata.

 
Andrey Sokolov #:

Signori, per favore, usate una critica ragionata.

Siamo solo noi... che parliamo durante una pausa sigaretta. Non farci caso.

 
Tutto può essere chiamato stampelle. Poiché non si capisce bene il codice macchina in linguaggio assembly, sono stati inventati i linguaggi di programmazione di alto livello e ultra-alto livello. Cosa non sono le stampelle?
 
Mihail Matkovskij #:

Quando si verifica una condizione di uscita/chiusura, aggiunge i biglietti all'array. Poi, se l'array non è vuoto, lo percorre in loop, chiamando OrderClose per ogni biglietto. Poi controlla l'esistenza di ogni biglietto e rimuovilo dalla lista. Ripeti queste azioni a intervalli di 1-3 secondi fino a quando la lista è vuota.

Puoi mostrare l'intera funzione di chiusura?