[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 381

 

Anche la sincronizzazione è un concetto relativo. Sincronizzazione di cosa con cosa? Sincronizzazione per l'accesso atomico? E chi costruirà la coda? Junko, forse la tua libreria costruisce la coda normalmente, se il codice è preso da MSDN, perché lì tutto è fatto correttamente. E tu l'hai semplicemente copiato senza capire cosa fa - come gli occhiali di una scimmia. O forse te lo stai solo inventando come fai sempre. Perché non capisci. Voi confondete la sincronizzazione per l'accesso atomico con l'accodamento.

 
Sepulca:
Ha comprato un sacco di core di processore. E ora quale fare la fila per)))))))))

No, questo vale anche per i processori single core, il multitasking è una funzione del sistema operativo.
 
Chiripaha:

Ho controllato con l'aumento di PauseBar e ho ottenuto solo questi stick sulle barre a 1 e 5 minuti. Ma non capisco come bypassarli correttamente. Capisco cosa deve essere scritto, probabilmente (ma non ovviamente) se il valore

в

il valore delle barre precedenti - qualcosa del genere:

Ma quando provo a farlo, tutto il mio indicatore si "muove" - perché non capisco la logica e non riesco a capire dove metterlo e in quali condizioni.


Questa variante funziona adeguatamente nel tester.
Ho lavorato in questo modo:

        if(FirstChanel) 
        { 
          if(Up[i-2]==0 && Down[i-2]==0)
          {
            Up[i-1]   = high;   
            Down[i-1] = low; 
          } 
          else
          {
            Up[i-1]   = Up[i-2];   
            Down[i-1] = Down[i-2]; 
          }  
        }

E ovunque ci fosse [i] spostato indietro di 1 barra

E qui:

   Comment("DrawChannel =",DrawChannel,"\n",
           "limit =",limit); // изначально значение было равно 1
  
   limit = Bars-IndicatorCounted()-1; 
   if(limit >= 1)                    limit = Bars-1; // и это условие не выполнялось, поставил >= и начало считать
File:
 
Buona giornata. Ho girovagato per il forum ma non ho trovato una risposta definitiva, è possibile per il mio Expert Advisor lavorare con diverse coppie di valute contemporaneamente? Penso che alcuni siti che vendono EAs abbiano tale possibilità nelle loro descrizioni, ma voglio essere sicuro. Ho già iniziato a lavorare con alcune coppie di forex e non so come iniziare a fare trading.
 
Trendy:

Ho girovagato per il forum ma non ho trovato una risposta definitiva, è possibile per un EA lavorare con diverse coppie di valute contemporaneamente?

Credo che alcuni siti che vendono EAs abbiano tale possibilità nelle loro descrizioni, ma voglio essere sicuro.

è possibile. il consulente è limitato solo dal numero di simboli della vostra società di intermediazione.

Se non avete trovato la risposta, perché la vostra domanda è stupida in sostanza.

Se puoi, per favore mandaci un link su come farlo

https://www.mql5.com/ru/code
 
Integer:


1. Devi avere problemi a capirlo. So di cosa stai parlando.

2. Grazie, ma non ho chiesto consigli. Soprattutto perché stiamo parlando di sincronizzazione di ciò che non è più nello stesso thread.

E qual è la scienza della sincronizzazione? Quale scienza? La tua stessa scienza? Un giorno lo capirete, ma non c'è niente di complicato. I linguaggi di programmazione e gli algoritmi non sono stati inventati e creati dagli sciocchi. Ma per qualche motivo sono dotati di mezzi di sincronizzazione e di accodamento.

4. molto sbagliato. Se corretto....Se ci fosse sincronicità. Ma in quel codice che hai citato qui un po' prima non c'è sincronicità, solo accesso atomico.

3. Secondo la scienza della programmazione dei sistemi. Leggi Richter. Vi illuminerà sulle code.

4. Cos'è la sincronizzazione? È un accesso atomico a una risorsa. Il mio codice lo fornisce. La coda è costruita dal sistema. I moduli sono eseguiti proporzionalmente al tempo della loro esecuzione. L'ordine di esecuzione non è importante. Tutto è fatto dal sistema. Questa non è un'invenzione degli sciocchi. Prova a dimostrare il contrario con un esempio concreto. Analizzare il registro. Vedrete che tutto viene eseguito correttamente, senza le vostre code speciali.

A proposito, MQL4, come linguaggio, ha una funzione con accesso atomico. Non ce ne sono in C++. Dovete scriverli voi stessi, come wrapper di funzioni WinAPI. È meglio implementarlo in una classe.

Intero:

Ancora una volta, per sicurezza, per coloro che sono in un sottomarino in un carro armato e indossano ancora un casco. Qui viene mostrato solo l'accesso atomico. L'ordine delle funzioni qui sarà come soffia il vento. Questo codice non prevede l'esecuzione uniforme delle funzioni. Ecco perché non c'è garanzia che una funzione non rimanga sullo scaffale per molto tempo. Affidarsi all'assistenza nella programmazione solo perché la frequenza del processore è alta è ridicolo, anche se la frequenza del processore è molto alta.

Ancora una volta per coloro che non sono nel serbatoio. Il sistema fornisce l'ordine di esecuzione. Cos'è l'esecuzione uniforme? Come si può fornire un'esecuzione uniforme di thread il cui tempo di esecuzione e numero sono sconosciuti? Perché preoccuparsene? Ci hanno già pensato per voi e l'hanno fatto. Si possono usare oggetti di sincronizzazione.
Naturalmente, non escludo i casi in cui avete bisogno di una coda speciale per eseguire i thread. Questa è una cosa molto difficile :-)) Dovreste evitare questo tipo di codice. Perché qui c'è un paradosso. Perché si dovrebbe eseguire un compito in diversi thread per farli entrare tutti in uno? Utilizzare l'esecuzione a thread singolo. Allora non avrete bisogno della sincronizzazione.

C'è un altro caso in cui avete bisogno di una coda. Ma non la coda di esecuzione dei thread, ma l'ordine di elaborazione dei dati ricevuti dai thread (risultati dei thread). Questo è il compito più frequente per le code.

Intero:

La sincronizzazione è anche una nozione relativa. Sincronizzazione di cosa con cosa? Sincronizzazione per l'accesso atomico? E chi costruirà la coda? Junko, forse la tua coda di librerie è costruita normalmente, se il codice è preso da MSDN, perché lì tutto è fatto correttamente. E tu l'hai semplicemente copiato senza capire cosa fa - come gli occhiali di una scimmia. O forse te lo stai solo inventando come fai sempre. Perché non capisci. Voi confondete la sincronizzazione per fornire un accesso atomico e l'accodamento.

E ancora, per coloro che... :-))

La sincronizzazione è fornire un accesso atomico a una risorsa. La coda è costruita dal sistema. L'esecuzione è garantita, l'ordine no. In MSDN, il codice è probabilmente corretto, ma scomodo. Scrivete la vostra classe per una comoda sincronizzazione. Ho scritto la mia classe seguendo il principio della classe di Andrei Postnikov. Mi ha gentilmente mostrato come sincronizzarlo correttamente. È vero, non è una classe sola. Ho una classe per ogni oggetto di sincronizzazione, un'altra classe di blocco per tutto e un namespace per le funzioni di attesa.
In realtà, ho già risposto a tutto quanto sopra.

 

Junko, sei senza speranza. Se ti è difficile pensare, non pensare, sputaci sopra del tutto, non fa per te...

Se qualcosa fosse indimostrato e non provato, non ne stareste discutendo. Il problema è che tu, Vadim, sei incapace di avere una conversazione costruttiva. Almeno si conferma che la sincronizzazione è solo per l'accesso atomico e non per l'accodamento. Tu, Vadim, ora stai discutendo con te stesso senza rendertene conto.

 
Integer:

Junko, sei senza speranza. Se ti è difficile pensare, non pensare, sputaci sopra del tutto, non fa per te...

Se qualcosa fosse indimostrato e non provato, non ne stareste discutendo. Il problema è che tu, Vadim, sei incapace di avere una conversazione costruttiva. Almeno si conferma che la sincronizzazione è solo per l'accesso atomico e non per l'accodamento.

Come posso... Non sono un programmatore, come alcune persone :-))
 
Zhunko:

La sincronizzazione è la fornitura di accesso atomico a una risorsa.
La coda è costruita dal sistema.


Un grande applauso! A proposito del codice da pagina 378. Anche se il terminale regola l'ordine della coda, non può sapere in quale caso la funzione è stata eseguita e in quale è stata rifiutata.
 
Inoltre, sulla regolamentazione del sistema. Se viene creato più di un flusso, sì, il sistema si regola. Ma se qualcuno è dalla parte di questi flussi, devi pensare a tutto da solo, non ci sarà nessun miracolo dal sistema.