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

 
Chiripaha:

Non sono disposto ad essere d'accordo. - Perché da una tale posizione si perde la logica di far funzionare gli EA e di calcolare correttamente sia il denaro che le posizioni. - Questo è uno. Secondo. - Se il mio EA sta dormendo, per esempio, per 100 millisecondi, e un altro inizia a lavorare nello stesso momento, allora cosa succederà, che appena questi 100 millisecondi passano, l'altro dovrà fermare il suo lavoro... e passarlo di nuovo a questo nel mezzo e così via all'infinito... D'altra parte. Ho visto (non di rado) in EAs quando mandano a "dormire" per minuti e molte volte ad ogni blocco di esecuzione. - Poi, se tutti gli altri gufi non lavorano in questo periodo, anche questo è in qualche modo sbagliato. - Quindi la domanda è abbastanza pertinente. Vorrei capire la logica di funzionamento a questo punto. Ma non ho trovato una spiegazione dettagliata nei documenti ufficiali.

Ma sono pronto a concordare. In origine, quando mql4 è apparso, nessuno ha mai pensato alla multicurrency, o ai branchi di gufi in un terminale. Quindi c'è la possibilità che questo sia normale.

Chiripaha:

Ma tra due mali sceglierei il secondo. In questo caso lascerei solo il gufo di cui sono sicuro. Se non lo fate, è lo stesso: almeno la correttezza dei ricalcoli è conservata, anche se il loro lavoro è rallentato.

Ha più senso usare diversi segnali, cioè per ogni simbolo un segnale diverso. Poi raccogliamo tutti i segnali di cui abbiamo bisogno nell'array, e tutto viene scambiato da un EA. Dato che la logica è la stessa, perché abbiamo bisogno di molti EA?

Chiripaha:

Il problema non è così banale come sembra. - Il fatto è che i miei esperimenti hanno dimostrato che quando la casella "Allow EAs to trade" è deselezionata, il lavoro dell'EA non si ferma - tutti i calcoli vengono eseguiti su ogni tick. Solo le transazioni dell'EA non vengono inviate al server. Ma, se questi calcoli sono riempiti con questi "slittamenti" (non proprio correttamente), allora se ci sono 5-10 EAs di questo tipo, possono specificamente rallentare l'esecuzione dell'EA attuale che sta facendo trading.

Sì, alcuni programmatori mettono il controllo sui permessi di commercio e saltano il lavoro del gufo su questa base. Ma non viene fatto più spesso. E se il codice è chiuso, non possiamo assolutamente capire se l'operazione è frenata o meno (e quale gufo esattamente). - Ora mi metterò a curiosare su questo argomento nella ricerca del forum. Qualcosa ha rallentato.

Apparentemente sì, questo pulsante"Allow EA to trade" funziona come previsto solo se il codice dell'EA lo prevede.
 
Chiripaha:

Non sono disposto ad essere d'accordo. - Perché da una tale posizione si perde la logica di far funzionare gli EA e di calcolare correttamente sia il denaro che le posizioni. - Questo è uno. Secondo. - Se il mio EA sta dormendo, per esempio, per 100 millisecondi, e un altro inizia a lavorare nello stesso momento, allora cosa succederà, che appena questi 100 millisecondi passano, l'altro dovrà fermare il suo lavoro... e passarlo di nuovo a questo nel mezzo e così via all'infinito... D'altra parte. Ho visto (non di rado) in EAs quando mandano a "dormire" per minuti e molte volte ad ogni blocco di esecuzione. - Poi, se tutti gli altri gufi non stanno lavorando in questo periodo, anche questo è in qualche modo sbagliato. - Quindi la domanda è abbastanza pertinente. Vorrei capire la logica di funzionamento a questo punto. Ma non ho trovato una spiegazione dettagliata nei documenti ufficiali.

Ma tra due mali sceglierei il secondo. In questo caso, lascerei semplicemente il gufo di cui sono sicuro. In caso contrario, va bene lo stesso: almeno la correttezza dei ricalcoli è conservata, anche se il loro lavoro è rallentato.

Il problema non è così banale come sembra. - Il punto è che i miei esperimenti hanno dimostrato che se la casella "Allow EAs to trade" è deselezionata, allora il lavoro dell'EA non si ferma - tutti i calcoli sono eseguiti allo stesso modo su ogni tick. Solo le transazioni dell'EA non vengono inviate al server. Ma, se questi calcoli sono riempiti con questi "slittamenti" (non proprio correttamente), allora se ci sono 5-10 di questi EA, possono specificamente rallentare l'esecuzione dell'EA reale che sta attualmente facendo trading.

Sì, alcuni programmatori mettono il controllo sui permessi di commercio e saltano il lavoro del gufo su questa base. Ma non viene fatto più spesso. E se il codice è chiuso, non possiamo assolutamente capire se l'operazione è frenata o meno (e quale gufo esattamente). - Ora mi metterò a curiosare su questo argomento nella ricerca del forum. Qualcosa è rallentato.

Grazie ad Arles per la domanda, per avermi ricordato e aggiornato. Non avevo abbastanza esperienza per capire ciò che era scritto sull'argomento. Lo farò di nuovo adesso.


Senza entrare nei dettagli dell'elaborazione del codice del processore, fermiamoci al "quadro" comune: durante Sleep() c'è una pausa per l'ulteriore elaborazione di questo stesso codice (tutti gli altri codici sono elaborati in thread paralleli INDIPENDENTI).
 
TarasBY:
Senza entrare nei dettagli dell'elaborazione del codice del processore, fermiamoci su una "immagine" comune: durante Sleep() c'è una pausa sull'ulteriore elaborazione di questo stesso codice (tutti gli altri codici sono elaborati in thread paralleli INDIPENDENTI).

Bene, ecco qui... E questo è un "agguato". Se ho capito bene quello che sto dicendo. - Lasciatemi chiarire...

Se ho capito bene, Igor, gli Expert Advisors sono elaborati non in modo sequenziale (come ho fatto nei miei esperimenti), ma in parallelo? E, se è così, risulta che Arles ha ragione e si possono aprire 2 trade in parallelo se ogni segnale ha ricevuto le giuste condizioni?

Per questo è importante per me - mi aiuterà a organizzare correttamente il mio lavoro. Quando non si capisce cosa sta succedendo e come, si può fare un grosso errore.
 

Inoltre, a prima vista, Sleep() non funziona nel tester, è anche scritto da qualche parte nella documentazione...

L'inizio dell'EA è fatto nella funzione Start() con l'arrivo di ogni tick. Se hai una dozzina di EA, prova a gestire gli errori, dovrebbero comparire. Se fate molte richieste a società di intermediazione, molto probabilmente ci sarà un errore del tipo "Il flusso è occupato".

Per quanto riguarda la casella di controllo"Permettere all'EA di commerciare". Sì, l'Expert Advisor funziona, ma solo i trade sono proibiti, vedi il log, ti dirà tutto.

 

Ciao, puoi dirmi cos'è questo script?

//+------------------------------------------------------------------+
//|                                                        close.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
#property show_confirm

//+------------------------------------------------------------------+
//| script "close first market order if it is first in the list"     |
//+------------------------------------------------------------------+
int start()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alex12:

Ciao, puoi dirmi cos'è questo script?

Dice: "Chiudi il primo ordine di mercato se è il primo della lista".
 
alex12:

Ciao, potresti dirmi che tipo di script è questo?


Alex, questo è quello che dice qui:

script "close first market order if it is first in the list"

Uno script che chiude il primo ordine a mercato se è il primo ordine nella lista.

Cioè, come capisco dalla logica del codice, è più probabile che il primo ordine aperto si chiuda. Se avete, per esempio, 10 ordini aperti, l'ordine numero 1 si chiuderà. Cioè quello che è stato aperto per primo.

 
Chiripaha:

Beh, ecco qui... E questo è un "agguato". Se ho capito bene quello che sto dicendo. - Fatemi capire bene...

Se ho capito bene, Igor, gli Expert Advisors non vengono elaborati in modo sequenziale (come ho fatto nei miei esperimenti), ma in parallelo? Se è così, significa che Arles ha ragione e si possono aprire due trade in parallelo, se ogni segnale ha ricevuto le condizioni giuste?

Perché questo è importante per me - mi aiuterà a organizzare il lavoro in modo adeguato. Quando non si capisce cosa sta succedendo e come, si possono fare molti errori.

Sergiy, dove hai preso un postulato come "Tutti gli EA sono processati dal terminale in modo sequenziale"? - Nell'era del calcolo parallelo. ;)

Non ho fatto tali esperimenti (con la determinazione dell'ordine di elaborazione dei codici di Expert Advisors da parte del terminale) - la mia risposta è a livello di logica. Semplicemente (senza entrare nei dettagli del funzionamento del terminale) dispongo l'elaborazione consecutiva (forzata) di Expert Advisors durante le operazioni di trading. Ma la risposta più corretta è la mia esperienza personale. È vero, non bisogna dimenticare di considerare correttamente i parametri di input quando si imposta l'esperienza, al fine di elaborare correttamente i risultati ottenuti. :)

P.S. Ho letto da qualche parte (dallo sviluppatore), che l'attuale build di MT4 può elaborare fino a 8 (se ricordo bene) ordini commerciali in parallelo, anche se dal "mio punto di vista" non è chiaro cosa sia un terminale utente - è regolato dal server DC ("all'altro capo del filo"). ;)

 
Chiripaha:

...

Cioè, se capisco la logica del codice, è più probabile che il primo ordine aperto si chiuda. Se hai, per esempio, 10 ordini aperti, l'ordine numero 1 si chiuderà. Cioè, quello che è stato aperto per primo.


Sì, ma solo se questo primo ordine è un ordine a mercato. Se si tratta di un ordine in sospeso, non succederà nulla.
 
TarasBY:

Sergey, dove hai trovato il postulato che "Tutti gli EA sono processati dal terminale in modo sequenziale"? - Nell'era del calcolo parallelo. ;)

Non ho fatto tali esperimenti (con la determinazione dell'ordine di elaborazione dei codici di Expert Advisors da parte del terminale) - la mia risposta è a livello di logica. Semplicemente (senza entrare nei dettagli del funzionamento del terminale) dispongo l'elaborazione consecutiva (forzata) di Expert Advisors durante le operazioni di trading. Ma la risposta più corretta è la mia esperienza personale. È vero, non bisogna dimenticare di considerare correttamente i parametri di input quando si imposta l'esperienza, al fine di elaborare correttamente i risultati ottenuti. :)

Questo è il punto (per la correttezza della messa in scena dei parametri dell'esperimento). È per questo che faccio le domande, perché non sono sicuro delle mie capacità e quindi cerco di identificare - forse ho fatto qualcosa di sbagliato, se questi risultati divergono. Questo è più al punto di test - in momenti come questo, un programma apparentemente ben scritto fallisce e ti rendi conto che devi guardare da qualche parte.

Ho ottenuto questi "esperimenti" per caso. Anch'io ho scritto programmi per il lavoro in parallelo - ora ho rinunciato a questo metodo perché non ha aumentato l'efficienza (può essere realizzato in altri progetti). Il risultato era tale che finché il primo programma non veniva elaborato - non si ottenevano dati - il secondo non partiva (o, più precisamente, falliva). Questa sequenza dipendeva dalla finestra in cui avevo messo (cioè in che ordine) i blocchi EA. - Quindi, concludiamo che la sequenza delle finestre è importante, vale a dire che gli Expert Advisor sono elaborati in modo sequenziale, non in parallelo. E questa sequenza dipende dalla numerazione delle finestre nella lista del terminale.

Questa è l'essenza dell'esperienza.

Ma, di nuovo, forse questa è un'interpretazione errata dei miei risultati. È per questo che mi ostino a cercare di risolvere la questione ora, e non solo con il "lapsus".