Su un'applicazione dell'OOP

 

Sto scrivendo un EA a un cliente e la situazione è la seguente. Non c'è un TOR chiaro per tutti gli articoli, ma ci sono idee che vuole testare. Cioè, il lavoro è più vicino alla ricerca.

Dice: non so nemmeno cosa fare, ci sono delle varianti di input, voglio provarle, posso farlo? Dovrò scrivere diverse varianti dell'Expert Advisor? E gli ingressi per volume ovviamente non possono essere contenuti in una funzione e dovrebbero nascere dinamicamente dal mercato. In altre parole, ci può essere 1... N. Sto facendo una descrizione semplificata della situazione.

Creiamo una classe base dove tutto rimane invariato e da questa classe avremo dei discendenti con un comportamento cambiato.

- E cos'è una classe?

Il cliente capisce un po' di MQL, ma non è un programmatore. Ho iniziato a spiegare, ma non ha capito.

Ho trovato un'immagine su Internet della classificazione delle specie animali. Ho detto: semplifichiamo e supponiamo che tutti si siano evoluti l'uno dall'altro.

Io dico: la nostra classe di base sarebbe quella dei flagellati antichi. Ha funzionalità di base, solo l'essenziale. E da questo avremo Protozoi, Multicellulari, ecc. E ogni discendente conterrà tutte le funzionalità del suo genitore.

- Oh, capisco! E anche i Mammiferi avranno la funzionalità degli antichi flagellati, ho ragione?

- Sì, proprio così.

Ora sto pensando come questo caso sarebbe utilizzato in modo ottimale in un tester, la strategia non è scalper o ticking, per un tester è adatto. Anche negli enigmi spaventosi di chi sono i Suckers ))

classi

**

 
Alexey Volchanskiy:

...

Io dico: la nostra classe di base sarebbe quella dei flagellati antichi. Ha funzionalità di base, solo l'essenziale. E da esso nasceranno Protozoi, Multicellulari, ecc. Ogni discendente conterrà tutte le funzionalità del suo genitore.

...

Purtroppo, l'idea di eredità si è rivelata un bastone con due estremità. Potresti farti male involontariamente. Ecco perché è meglio usare l'ereditarietà in modo molto limitato.
 
Vasiliy Sokolov:
Purtroppo, l'idea dell'eredità si è rivelata un'arma a doppio taglio. Potresti accidentalmente metterti al tappeto. Ecco perché è meglio usare l'ereditarietà in modo molto limitato.

È probabile che questo EA non abbia più di due legami di eredità. L'immagine è solo per dimostrare l'ereditarietà. Io stesso non sono un seguace della complicazione ) Ma il Signore Dio... a cui piace divertirsi))).

Per quanto riguarda il "grumo" guarda la libreria standard, è piuttosto profondo lì, specialmente in Controls.

 
Alexey Volchanskiy:

È probabile che questo EA non abbia più di due legami di eredità. L'immagine è solo per dimostrare l'ereditarietà. Io stesso non sono un seguace della complicazione ) Ma il Signore Dio... a cui piace divertirsi))).

Per quanto riguarda il "leccare", guardate la libreria standard, è un livello abbastanza profondo lì, specialmente in Controls.

Purtroppo la libreria standard non è un punto di riferimento. Alcune lezioni sono semplicemente dei capolavori, altre sono scritte senza alcuna comprensione dell'argomento (probabilmente scritte da persone diverse).
 
Vasiliy Sokolov:
Purtroppo, l'idea di eredità è diventata un'arma a doppio taglio. Potresti farti male involontariamente. Ecco perché è meglio usare l'ereditarietà in modo molto limitato.

Posso fare un esempio di "zashib"?

Io, al contrario, cerco sempre di usare l'ereditarietà e il polimorfismo il più possibile. È molto comodo avere funzioni virtuali che vengono chiamate secondo necessità sugli oggetti creati...

Ci sono casi in cui tutti i discendenti portano la funzionalità della classe antenata di cui i discendenti non hanno più bisogno - ma non vedo nessun problema speciale qui. Non usarlo, tutto qui. Non parlo nemmeno dell'eredità protetta, quando gli utenti della classe - non possono già fare riferimento alle funzioni dell'antenato, e, qui si può molto semplicemente "rimuovere le funzionalità non necessarie".

 
George Merts:

Posso fare un esempio di "zashib"?

Io, al contrario, cerco sempre di usare l'ereditarietà e il polimorfismo il più possibile. È molto comodo avere funzioni virtuali che vengono chiamate secondo necessità sugli stessi oggetti che vengono creati...

Ci sono casi in cui tutti i discendenti portano funzionalità della classe antenata, di cui i discendenti non hanno più bisogno, ma non vedo alcun problema particolare qui. Non usarlo, tutto qui. Non sto nemmeno parlando dell'eredità protetta, quando gli utenti della classe - non possono più fare riferimento alle funzioni dell'antenato, e, qui, è molto facile "rimuovere le funzionalità inutili".

Ben scritto. Uso ampiamente le funzioni virtuali in questo progetto, molto utili. Le classi discendenti hanno "comportamenti" diversi, ma la stessa interfaccia. In MQL non c'è la nozione di interfaccia, ma non è difficile imitarla.

Ho già pensato di mettere le istanze di tutti i discendenti in un array ed eseguirle in un ciclo con chiamate di funzioni virtuali. E per selezionare in qualche modo i segnali di maggior successo, a cui non ho ancora pensato. Finora, non è chiaro come determinare se i segnali sono "fortunati" o no. Quindi, c'è l'opportunità di ottimizzare al volo adattandosi al mercato che cambia.

Penso che sia meglio farlo non nell'EA funzionante, ma nella sua piccola modifica che funziona in parallelo con la scrittura di informazioni almeno in un file, la velocità di scambio non è importante qui.

Che dire della"funzionalità della classe antenata, che non è più necessaria ai discendenti", non preoccupatevi, le funzioni esistono comunque in memoria come una singola copia. Naturalmente, la memoria dati sarà allocata per ogni istanza, ma al giorno d'oggi con gigabyte di RAM non è molto importante.

 
Faresti meglio a descrivere il ToR, perché non è chiaro cosa intendi e cosa c'entrano le classi.
 
Alexey Volchanskiy:

Sto scrivendo una consulenza a un cliente e la situazione è la seguente. Non c'è un TOR chiaro per tutti gli articoli, ma ci sono idee che vuole testare. Cioè, il lavoro è più vicino alla ricerca.

Dice: non so nemmeno cosa fare, ci sono delle varianti di input, voglio provarle, posso farlo? Dovrò scrivere diverse varianti dell'Expert Advisor? E gli ingressi per volume ovviamente non possono essere contenuti in una funzione e dovrebbero nascere dinamicamente dal mercato. In altre parole, ci può essere 1... N. Sto facendo una descrizione semplificata della situazione.

Creiamo una classe base dove tutto rimane invariato e da questa classe avremo dei discendenti con un comportamento cambiato.

- E cos'è una classe?

Il cliente capisce un po' di MQL, ma non è un programmatore. Ho iniziato a spiegare, ma non ha capito.

Ho trovato un'immagine su Internet della classificazione delle specie animali. Ho detto: semplifichiamo e supponiamo che tutti si siano evoluti l'uno dall'altro.

Io dico: la nostra classe di base sarebbe quella dei flagellati antichi. Ha funzionalità di base, solo l'essenziale. E da questo avremo Protozoi, Multicellulari, ecc. E ogni discendente conterrà tutte le funzionalità del suo genitore.

- Oh, capisco! E anche i Mammiferi avranno la funzionalità degli antichi flagellati, ho ragione?

- Sì, proprio così.

Ora sto pensando come questo caso sarebbe utilizzato in modo ottimale in un tester, la strategia non è scalper o ticking, per un tester è adatto. Anche negli enigmi spaventosi di chi sono i Suckers ))

**

Se non sapete cosa vogliono, potete chiedere loro di farlo manualmente. O lasciare che provino a mano quello che non sanno...
 
Alexey Volchanskiy:

Sto scrivendo un EA a un cliente e la situazione è la seguente. Non c'è un TOR chiaro per tutti gli articoli, ma ci sono idee che vuole testare. Cioè, il lavoro è più vicino alla ricerca.

Dice: non so nemmeno cosa fare, ci sono delle varianti di input, voglio provarle, posso farlo? Dovrò scrivere diverse varianti dell'Expert Advisor? E le entrate per volume ovviamente non possono rientrare in una funzione e dovrebbero nascere dinamicamente per mercato. In altre parole, ci può essere 1... N. Sto facendo una descrizione semplificata della situazione.

Creiamo una classe base dove tutto rimane invariato e da questa classe avremo dei discendenti con un comportamento cambiato.

- E cos'è una classe?

Il cliente capisce un po' di MQL, ma non è un programmatore. Ho iniziato a spiegare, ma non ha capito.

Ho trovato un'immagine su Internet della classificazione delle specie animali. Gli ho detto: "Semplifichiamo e supponiamo che tutti si siano evoluti l'uno dall'altro".

Io dico: la nostra classe di base sarebbe quella dei flagellati antichi. Ha funzionalità di base, solo l'essenziale. E da questo avremo Protozoi, Multicellulari, ecc. E ogni discendente conterrà tutte le funzionalità del suo genitore.

- Oh, capisco! E anche i Mammiferi avranno la funzionalità degli antichi flagellati, ho ragione?

- Sì, proprio così.

Ora sto pensando come questo caso sarebbe utilizzato in modo ottimale in un tester, la strategia non è scalper o ticking, per un tester è adatto. Anche negli enigmi spaventosi di chi sono i Suckers ))

**

La cosa principale è che è comodo da usare. Per provare diversi input, potete farlo in blocco per numero di set di input. Cioè c'è una collezione di insiemi di input. Se conveniente, come array di funzioni. I più semplici - acquisto o vendita incondizionata in base al mercato. O condizionale)). E poi eseguiamo l'ottimizzatore e guardiamo attraverso i diversi set di voci.
 
Alexey Busygin:
Faresti meglio a descrivere il tuo ToR, perché non è chiaro cosa intendi e cosa c'entrano le classi.

Quali sono i termini di riferimento - quello che mi è stato dato dal cliente? )) Pensi che sia politicamente corretto?

O è qualcosa di esotico per te? O è una specie di esotismo per te? Per me, è un normale strumento di lavoro.

 
Vladimir Pastushak:
Dovrebbero essere mandati a decidere prima cosa vogliono e poi chiederlo... O lasciare che provino a mano quello che non sanno...
Perché no, amo la ricerca, specialmente se è pagata)
Motivazione: