Il mio approccio. Il nucleo è il motore. - pagina 61

 
Dmitry Fedoseev:

Puoi fare qualcosa del genere: in una dll, un array o due array, uno per il nome dell'oggetto e l'altro per il tipo di evento.

qui!

Non ho ancora controllato, ma se gli sviluppatori hanno un supporto avanzato per C#.Net, allora forse funziona lo scambio di tipi di dati complessi tra MT5 e .dll, cioè strutture.

Se lo scambio di strutture funziona, il compito diventa ancora più semplice e primitivo.

riempiamo la struttura con OrderProfit,OrderTicket,OrderStoploss.... sul tick ...e inviare questa struttura a una .dll e ricevere una struttura di risposta dall'utente... Poi il modulo ruota le informazioni visive da solo, il terminale stesso.


Tag Konow:

E poi creare una memoria TOTALE all'interno della .dll.

Con l'aumento del numero di elementi del modulo e la crescente complessità del programma MT5, questa interazione diventa MOLTO impegnativa e complessa.

Hmmm, cosa c'è di complicato in questo? Si separa la visualizzazione = .dll, separatamente il lavoro MT

difficile da spiegare, avete un'idea della velocità di scambio di dati attraverso la memoria? - Non stiamo parlando di centomila byte al secondo, nemmeno di milioni, ma di diversi miliardi di byte al secondo, e stai parlando della complessità dello scambio )))))

 
Реter Konow:

OK.

Quindi è necessario:

  1. Creare una DLL.
  2. Collegare la DLL all'applicazione Windows con un modulo.
  3. Scrivere metodi che traducono gli eventi di pressione dei pulsanti e delle caselle di controllo in dll.
  4. Scrivere metodi per cambiare lo stato di pulsanti e caselle di controllo nell'applicazione widow.
  5. Crea la memoria condivisa nella dll. In modo che quando si accede da MT5 il flag di cambiamento di stato per i pulsanti e le caselle di controllo sia impostato. Poi l'applicazione Windows accede alla memoria condivisa, legge i flag e li usa per conoscere lo stato di uno o un altro elemento del modulo da cambiare.
  6. Scrivere il riferimento ciclico alla DLL dal timer in MT5 per leggere i flag delle chiamate di funzione o inserire il testo nei campi.

    E se ci sono centinaia di elementi?

    Come organizzare la memoria condivisa?

    Cosa succede se è necessario cambiare non solo lo stato premuto/rilasciato degli elementi in un modulo, ma anche il loro colore (per esempio, per i pulsanti)?

    Cosa succede se è necessario cambiare il testo nei campi di inserimento di un modulo programmaticamente da МТ5?


    1. Qual è il problema? Sta selezionando il tipo di progetto quando lo si crea.

    2. Come si vede nell'esempio mostrato da Igor, la connessione è fatta in una riga, non c'è nemmeno bisogno di descrivere l'importazione.

    3. Un metodo viene scritto una volta, salvato in un file, e poi viene usato in tutti i progetti senza alcuna modifica.

    4. Probabilmente è necessario, ma sono semplici. Non tutti saranno probabilmente necessari, l'interazione tra gli elementi di controllo in c# sarà diversa, e potrebbe essere necessario inserire un solo evento, e ci saranno 100 pulsanti sul modulo.

    5. Questo è legato al punto 3.

    6. Anche una linea con il giusto approccio al punto 3.

    7 - Hai tutta la potenza di C# nelle tue mani, la cui scala sembra non avere idea è enorme.

     
    Реter Konow:

    Senza offesa, ma scusate l'off-topic.

    Stai prendendo l'esempio più semplice ed estrapolando da esso, pensando che la complessità non aumenterà. Questo è un errore.

    Anche l'esempio più semplice che hai fatto è sbagliato. Perché oltre al modulo creato, è necessario creare anche una DLL. E poi creare una memoria TOTALE all'interno della DLL.

    Man mano che il numero di elementi del modulo cresce e la funzionalità del programma su MT5 diventa più complessa, questa interazione diventa MOLTO impegnata e complicata.

    Ho testato tutto questo nella pratica.

    La conclusione è completamente sbagliata.

     

    Il problema è che ho fatto DAVVERO quello di cui sto parlando. E conosco la complessità di organizzare l'interazione tra un complesso programma di MT e un complesso programma di terzi.

    E l'approccio del profano è di solito quello di dire "È facile... Qual è il problema? È così, è così...".

    Datemi un esempio di collegamento tra un complesso programma MT e un complesso modulo Windows, dove il programma può:

    1. Cambia gli stati degli elementi e il testo in uscita nei campi di input.
    2. Dove il programma può accettare del testo dai campi del modulo e cambiare i colori degli elementi.
    3. Dove il programma può controllare i fenomeni delle finestre dei moduli (aprirne alcune e chiuderne altre).
    Posso fornire un esempio di questo che funziona completamente su MT.

     
    Реter Konow:

    Il problema è che ho fatto DAVVERO quello di cui sto parlando. E conosco la complessità di organizzare l'interazione tra un complesso programma di MT e un complesso programma di terzi.

    E l'approccio del profano è di solito quello di dire "È facile... Qual è il problema? È così, è così...".

    Datemi un esempio di collegamento tra un complesso programma MT e un complesso modulo Windows, dove il programma può:

    1. Cambia gli stati degli elementi e il testo in uscita nei campi di input.
    2. Dove il programma può accettare del testo dai campi del modulo e cambiare i colori degli elementi.
    3. Dove il programma può controllare i fenomeni delle finestre dei moduli (aprirne alcune e chiuderne altre).
    Posso fornire un esempio di questo che funziona completamente su MT.

    Se lo faceste, non fareste domande come quella di oggi. Impara il C# e fallo da solo. Come collegare la dll e chiamare i metodi che Igor ha mostrato ieri.

     
    Dmitry Fedoseev:

    1. Qual è il problema? È la scelta del tipo di progetto quando lo si crea.

    2. Come si vede nell'esempio mostrato da Igor, la connessione è fatta in una riga, anche l'importazione non è descritta.

    3. Un metodo viene scritto una volta, salvato in un file, e poi viene usato in tutti i progetti senza alcuna modifica.

    4. Probabilmente è necessario, ma sono semplici. Non tutti saranno probabilmente necessari, l'interazione tra gli elementi di controllo in c# sarà diversa, e potrebbe essere necessario inserire un solo evento, e ci saranno 100 pulsanti sul modulo.

    5. Questo è legato al punto 3.

    6. Anche una linea con il giusto approccio al punto 3.

    7 - Nelle tue mani tutta la potenza di C#, la cui scala sembra non avere idea, è enorme.

    Dmitry, usa l'enorme potenza di C# e fai un'applicazione non molto complessa con un modulo, che interagisce con l'applicazione MT ed esegue questi elementi:

    1. Cambia gli stati degli elementi e invia il testo aicampi di input.
    2. Prende il testo dai campi di input del modulo e cambia i colori degli elementi.
    3. Controlla il fenomeno delle finestre dei moduli (ne apre alcune e ne chiude altre).
    Igor e voi affermate che è molto facile. Così riuscirete a gestirlo rapidamente. Fornirò un analogo completamente in MT. E confronteremo la qualità dell'esecuzione e la complessità.
     
    Реter Konow:

    Dimitri, usa la GRANDE potenza di C# e fai un'applicazione non molto complessa con un modulo che interagisce con l'applicazione MT ed esegue questi elementi:

    1. Cambia gli stati degli elementi e invia il testo aicampi di input.
    2. Prende il testo dai campi di input del modulo e cambia i colori degli elementi.
    3. Controlla il fenomeno delle finestre dei moduli (ne apre alcune e ne chiude altre).
    Igor e voi affermate che è molto facile. Così riuscirete a gestirlo rapidamente. Fornirò un analogo completamente in MT. E confronteremo la qualità dell'esecuzione e la complessità.

    Ho molto da fare. Ma potete continuare nelle vostre illusioni.

     

    E oh sì, un miracolo mai visto nella programmazione: per fare qualcosa, bisogna scrivere una funzione per farlo.

     
    Dmitry Fedoseev:

    Ho delle cose da fare. ...

    OK, forse Igor lo farà allora...

     
    Реter Konow:

    OK, forse Igor lo farà allora...

    Igor ha già mostrato troppo. E ho detto troppo.

    Motivazione: