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

 
Реter Konow:

Piuttosto, sono critico nei confronti del mio lavoro. Ecco perché sto migliorando continuamente.

Anatoly è bravo. Non c'è dubbio. La biblioteca è buona.

Ma anche la finestra che vi ho mostrato oggi può essere fatta con grande difficoltà. Per non parlare di molto altro.

Solo per interesse, puoi comporre e mostrare qui il codice che devi scrivere per ripetere la mia finestra e lo confronteremo con la mia versione.

Domanda da porre: puoi descrivere perché quella finestra è necessaria e come aiuta nel trading semi-automatico?

 
Реter Konow:

Perché hai scritto la libreria gui?

Lavorare con gli oggetti grafici in MT4 è anche quello che richiede più tempo. Non solo dovete creare un oggetto, ma anche impostare un mucchio di proprietà. Per semplificare il lavoro con gli oggetti grafici ho avuto diverse funzioni che permettono di creare rapidamente alcuni oggetti grafici. Quando apparve MT5, aveva ancora più proprietà per tutti gli oggetti grafici e il numero di parametri delle funzioni aumentò così tanto che sembravano stupide. Quindi è sorta una domanda - come semplificare il lavoro con gli oggetti grafici nelle nuove condizioni. Man mano che l'OOP appariva, le sue applicazioni venivano prese in considerazione. Come risultato, prima è stata creata una classe per il lavoro veloce con un oggetto grafico. Poi è emersa l'idea di creare diversi elementi composti. Mi è piaciuta l'idea e ho scritto il primo articolo - come creare i miei controlli. Tutto è andato così bene e in 2-3 settimane, facendo pratica per divertimento, avevo creato diversi controlli simili a quelli standard e creato una libreria, la cui descrizione è data nel secondo articolo. Il terzo articolo riguardava i moduli, ma era più una formalità per completare la biblioteca e per questo i moduli erano auspicabili. Ma è stato un peccato per le forme, non ho capito come migliorarle. Inoltre, non c'erano eventi di movimento del mouse allora, quindi le barre di scorrimento sono strane e la forma viene trascinata in un modo insolito. Per quanto riguarda le forme - invece di sollecitare, sono state anatemizzate. E non c'è molto lavoro perché la biblioteca sia molto utile. Ho anche dei pensieri per migliorarlo, rielaborare le barre di scorrimento, il modulo drag-and-drop, e fare il modulo stesso in un modo diverso, che non copi una classe vuota, e creare un oggetto e collegare i controlli ad esso.

 
Vitaly Muzichenko:

Domanda per domanda: puoi descrivere perché quella finestra è necessaria e come aiuta nel trading semi-automatico?

Il trading semi-automatico è la stessa "merda" incomprensibile e finanziariamente dannosa del trading completamente automatico o manuale.

Solo un altro tipo di trading che può interessare i commercianti.

 
Artyom Trishkin:

Consideratelo come lo ritenete opportuno. Puoi rileggere le discussioni degli articoli di Anatoly - ci sono i tuoi tentativi di competere. Ma Anatoly ha fatto tutto molto tempo fa, modestamente, qualitativamente, professionalmente, "senza rumore e polvere", e tu ti stai ancora lodando.

La domanda è: come usarlo? Bisogna leggere 50 articoli? Eppure si chiama "facile e veloce", che paradosso.

 
Dmitry Fedoseev:

La domanda è: come usarlo? Bisogna leggere 50 articoli?

In qualche modo l'ho capito velocemente - senza gli articoli. Li ho letti naturalmente - sono usciti, li ho letti dal mio cellulare. Per capire ciò che è descritto lì. Ma creare e lavorare con gli oggetti lì è più facile che da Peter. Crea il numero richiesto di oggetti con le descrizioni delle proprietà in OnInit() e usa i loro messaggi in OnChartEvent(). Il solito modello di evento.

Più tardi ho adattato la sua libreria per me - l'ho resa multipiattaforma, ho aggiunto il salvataggio dei valori di tutti gli oggetti creati, per evitare il ripristino del loro stato originale durante la reinizializzazione, ho aggiunto i suoni per molte interazioni con gli oggetti (impostati di default e individualmente, e disabilitati - in modo che non suonasse e tintinnasse costantemente), ho provato e abbandonato - ho le mie idee. La libreria di Anatoly non permette di creare oggetti al volo, per mezzo di nuovi dal programma, non permette di rendere attiva più di una finestra... In generale - ha molto da sviluppare. Ma questa è una domanda per lui. O a te stesso - per fare quello che ti serve per le tue esigenze e con tutti gli oggetti necessari e le possibilità del loro uso.

 
Artyom Trishkin:

In qualche modo l'ho capito velocemente - senza gli articoli. Li ho letti naturalmente - sono usciti, li ho letti dal mio cellulare. Per capire ciò che è descritto lì. Ma creare e lavorare con gli oggetti lì è più semplice che da Peter. Creare il numero richiesto di oggetti con le descrizioni delle proprietà in OnInit() e usare i loro messaggi in OnChartEvent(). È il solito modello di evento.

Ho poi digitalizzato la sua libreria per me - l'ho resa multipiattaforma, ho aggiunto il salvataggio dei valori di tutti gli oggetti creati, in modo che non vengano resettati al loro stato originale quando vengono reinizializzati, ho aggiunto i suoni per molte interazioni con gli oggetti (impostati di default e singolarmente, e disabilitati - in modo che non suonasse costantemente e si abbuffasse), ho giocato in giro e ho rinunciato - ho le mie idee. La libreria di Anatoly non permette di creare oggetti al volo, per mezzo di nuovi dal programma, non permette di rendere attiva più di una finestra... In generale - ha molto da sviluppare. Ma questa è una domanda per lui. O a te stesso - per fare quello che ti serve per le tue esigenze e con tutti gli oggetti necessari e le possibilità del loro uso.

Penso che sia possibile creare oggetti tramite new. E la creazione dei moduli è lo stesso muto del mio, e nella libreria standard è lo stesso - devi copiare il modello del modulo. È interessante che sono stato criticato così tanto, quasi anatemizzato per le mie forme, ma non sono andati avanti da quel punto.

 

questo è il ritmo... questa è la velocità!

Mentre mi sono spostato a 60 km, 15 pagine sono state gettate nell'argomento. Totale di 1 pagina per 4(!) km ;-)

Peter non ha tempo per spostare il nucleo e il motore del kernel.

 
Dmitry Fedoseev:

Gli oggetti possono probabilmente essere creati con il nuovo, non può essere impossibile, o è davvero impossibile? E la creazione di moduli è stupida come la mia, ed è lo stesso nella libreria standard - devi copiare il modello del modulo. È interessante che sono stato criticato così tanto, sono stato quasi anatemizzato per le mie forme, ma non sono andati avanti da quel punto.

Sì, devo ripetere lo stesso codice cento volte per cento finestre, ma con parametri diversi. Per ogni controllo ho creato un metodo universale per la sua creazione - dovevo solo inserire i parametri necessari per ogni elemento. Pertanto, è stato molto facile per me creare - avevo bisogno di una finestra - CreateWindow(iniziale, individuale, parametri), ecc. E poi, se l'elemento viene creato, è possibile aggiungervi dei gingilli, o lasciarlo come standard di default.

Cioè, approssimativamente (strutturalmente) così:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Bene, ed è già abbastanza avere una finestra con due pulsanti e una bomba atomica :)

Ma ho rielaborato la libreria di Anatoly. È più complicato, come mi sembra.

Per quanto riguarda la creazione su nuovo - se la mia memoria non cambia - non guardo il codice da molto tempo - ha un oggetto a livello globale, e da esso parte già il lavoro per creare e controllare tutti gli elementi.

Naturalmente, si può provare a fare una lista con diverse librerie, create da nuovo, e poi nel timer e negli eventi per visualizzare queste liste e ciò che accade in esse. Ma ho provato una volta e ogni oggetto di questo tipo reagisce alle azioni degli oggetti vicini - se muovi una finestra, anche le altre si agitano. Così ho rinunciato a cercare di capirlo - non c'è tempo.

 
Artyom Trishkin:

Sì, dovete ripetere lo stesso codice cento volte per cento finestre, ma con i vostri parametri. Mi sono liberato di questo - per ogni controllo ho fatto un metodo universale per la sua creazione - basta digitare i parametri giusti per ogni elemento. Pertanto, è stato molto facile per me creare - avevo bisogno di una finestra - CreateWindow(iniziale, individuale, parametri), ecc. E poi, se l'elemento viene creato, è possibile aggiungervi dei gingilli, o lasciarlo come standard di default.

Cioè, approssimativamente (strutturalmente) così:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Bene, ed è già abbastanza avere una finestra con due pulsanti e una bomba atomica :)

Ma ho rielaborato la libreria di Anatoly. È più complicato, come mi sembra.

Per quanto riguarda la creazione su nuovo - se la mia memoria non cambia - non guardo il codice da molto tempo - ha un oggetto a livello globale, e da esso parte già il lavoro per creare e controllare tutti gli elementi.

Naturalmente, si può provare a fare una lista con diverse librerie, create da nuovo, e poi nel timer e negli eventi per visualizzare queste liste e ciò che accade in esse. Ma una volta che l'ho provato, ogni oggetto di questo tipo reagisce alle azioni degli oggetti vicini - si muove una finestra, e anche il resto si agita. Non ho tempo per capirlo.

Cos'è il parametro 0 per CreateWindow(0) e CreateButton()? Con CreateWindow(0), è un identificatore di finestra, mentre con CreateButton(), significa che i pulsanti saranno sul modulo 0. O no? È possibile un solo modulo e tutti i controlli saranno su di esso?

 
Dmitry Fedoseev:

Qual è il parametro 0 di CreateWindow(0) e CreateButton()? Con CreateWindow(0) questo è l'identificatore della finestra e con CreateButton() significa che i pulsanti saranno sul modulo 0. O no? È possibile un solo modulo e tutti i controlli saranno su di esso?

Ogni elemento può essere attaccato ad un altro. Hai capito bene, lo "0" è l'identificatore dell'elemento. Era una rappresentazione schematica del principio di progettazione della GUI. I pulsanti ce l'hanno, quindi saranno attaccati a questa finestra. Se non aggiungessi il window binding a nessun elemento, sarebbe attaccato al grafico. Credo che lì si faccia così - non ricordo esattamente.