Richiesta non valida - ho appena iniziato e non riesco a capire... - pagina 6

 
-Alexey-:

Perché, ne ho scritto uno per me, ma per quattro.

Quindi, hai scritto personalmente una libreria universale, staccata dalla logica di business dell'EA e che può essere utilizzata in qualsiasi EA?

Non credo nemmeno in questo. Naturalmente il codice del gestore della risposta del server era lì, ma tutto all'interno della logica di business, non come una libreria universale.

 
Renat:

Quindi hai scritto personalmente una libreria universale, staccata dalla logica di business dell'EA e che può essere utilizzata in qualsiasi EA?

Non credo nemmeno in questo. Naturalmente il codice del gestore della risposta del server era lì, ma tutto all'interno della logica di business, non come una libreria universale.

Sì, posso provarlo. Per una certa somma di denaro, ovviamente.
 
-Alexey-:
Sì, posso provarlo. Per un prezzo, ovviamente.

Insomma, non c'è nemmeno una libreria per MT4.

Non era così difficile da dimostrare.

 
Renat:

Cioè, non c'è nemmeno una libreria per MT4.

Non era così difficile da dimostrare.

Cioè, esiste. Dopo il trasferimento di denaro sarà fornito a voi in questo momento. Ma non ce l'avete né per il 4 né per il 5.
 
Renat:

Renat, ho la sensazione che l'uso della libreria standard cada sotto il coro: "OOP o non OOP".

Altrimenti non riesco a capire perché la gente ha forti convinzioni che un wrapper OOP, che semplifica le operazioni di trading, non dovrebbe essere usato.

Alcuni sostengono che un wrapper faccia tutta la logica, gestisca gli errori, ripeta le query, ecc. E allo stesso tempo il suo uso è presumibilmente pericoloso e c'è un errore in ogni riga...

 
-Alexey-:
Cioè è lì.

Non ce l'hai. tutti gli errori sono gestiti dalla logica di business.
Tu usi la proprietà di sincronia in MT4, che semplifica l'elaborazione in una certa misura, ma i tuoi metodi non garantiscono il 100% di tutti i casi. Probabilmente il 95% e questa è puramente la tua bibbia su cui si basa l'intero processo di trading.
Ma MT5 è molto più complesso in termini di gestione dei codici di ritorno + asincronia.

Stai chiedendo l'impossibile a un involucro. La libreria standard non è la logica di business. È un wrapper "sopra" le funzioni del terminale. Un involucro sopra il ripieno di una barretta di cioccolato.
Si tratta di un'interfaccia user-friendly che prende il controllo di una parte della routine. Riprendendo lo stesso tipo di codice. Non si mangia un involucro di carta e ci si lamenta perché non è commestibile. :)

Ma l'involucro non può garantire nulla, dato che sei tu a fare da garante. La vostra logica di business. :)
Proprio come la funzione di stampa non può garantire lo spazio libero su disco e gli errori di registrazione. Dovete usare altre funzioni per la gestione degli errori e sono specifiche del caso.


-Alexey-, chiacchieriamo di difetti specifici e tu dai voce a difetti specifici che vorresti correggere.

Se volete, potete passare attraverso ogni codice di ritorno e guardare le principali situazioni possibili.

 
papaklass:


Rispondi alle domande:
- perché dovrei trascinarmi dietro tutti questi 61 metodi? È razionale?

La domanda va sul piano della necessità o meno della programmazione OOP. Non posso rispondere in modo univoco.
Nella mia pratica uso OOP per i modelli di alto livello.
Naturalmente, ne uso molto nella mia base solo nelle funzioni.

Allo stesso modo, quando uso una classe OOP, essa contiene un sacco di cose inutili per qualche compito particolare, come la funzionalità della libreria di disegno kanvas. Ci sono linee, quadrati e testo. Ma non c'è niente su cui discutere: se questa classe debba avere un quadrato o meno. È proprio lì. Per un compito particolare.


Ci sono troppi problemi che cercano di risolvere in una sola classe.

vi sbagliate. Non stanno risolvendo alcun problema. si sono avvolti intorno a RUTINA. è difficile da capire.


Di conseguenza, la gestione degli errori dovrebbe essere per tutti i problemi da risolvere.

Non può essere lì. Poiché la Bibbia non risolve alcun problema. Semplifica la RUTINE, tutto qui. Non può fare di più e non ha bisogno di essere complicato.

La soluzione è abbastanza semplice: dividere una classe ingombrante in diverse classi più piccole, a seconda dei problemi da risolvere:
In questo caso, coinvolgerò solo le classi che si adattano alla mia strategia e niente di superfluo. E sarà molto più facile implementare la gestione degli errori di quanto non lo sia ora.

Beh, non è una routine avvolgente. È già un risolutore di problemi con la logica specifica del TUO esperto.
Non si può prevedere la gestione degli errori nemmeno in una singola funzione - apertura o chiusura. Si trovano sempre 1001 casi in cui gli errori previsti non vanno bene e bisogna fare qualcos'altro.

Se conoscete una funzione universale per tutte le situazioni, per favore mostratela. Non riesco nemmeno a immaginare come sia possibile prevedere in anticipo tutta la possibile gestione degli errori, senza conoscere la logica di un particolare EA.
Anche se faccio una tale funzione - contraddice tutte le tue parole più alte - "hai fatto di nuovo troppo rumore".

E se applichi il tuo metodo di scrivere codice attraverso macro con direzione (ORDER_TYPE_BUY / ORDER_TYPE_SELL), allora le classi saranno abbastanza compatte.
Dov'è tutto questo?

Ma le macro non hanno nemmeno la gestione degli errori, che sono gestiti dalla logica di business di un particolare Expert Advisor in un particolare errore. Non è difficile capire che non ci sono situazioni universali.

Se Renat imparasse ad ascoltare i suggerimenti del forum e cercasse di cogliere il significato di questi suggerimenti, MT5 sarebbe molto più avanti di dove si trova oggi in questa fase di sviluppo.

Renat continua a ripetere: siamo su un forum tecnico, non possiamo parlare di cose astratte.

Quindi, per favore, dacci qualche dettaglio. Consideriamo i termini di riferimento, le funzioni di trading di cui ha bisogno e i possibili errori e come gestirli. ok?

 
papaklass:

Rispondi alle domande:

- se ho solo bisogno di piazzare un ordine a mercato, o un ordine pendente, perché dovrei trascinarmi dietro tutti quei 61 metodi? È razionale?

- Se ho una posizione aperta e ho solo bisogno di impostare degli stop, perché dovrei trascinare tutta quella funzionalità con 61 metodi? È razionale?

- Se ho una posizione aperta con degli stop che si attivano quando il prezzo raggiunge il loro livello, perché dovrei trascinare tutti questi 61 metodi? È razionale?

Nessuno te lo proibisce:

  1. Non usate soluzioni già pronte sotto forma di librerie già scritte da qualcun altro, ma scrivete il vostro codice da zero.
  2. Riscrivere una libreria già preparata sotto forma di classi modificate, eliminando da essa i metodi che secondo voi sono "superflui".
  3. Sovrascrivere i metodi di una libreria out-of-the-box, ereditando
 
papaklass:

Che senso ha "separare le operazioni per gli scambi in classi diverse".

È come se avessi diversi EA per l'apertura, la chiusura e la modifica. Sembra essere possibile, ma nessuno lo fa (con rare eccezioni, compiti speciali).

E mi piace molto la frase "se ho solo bisogno di piazzare un ordine a mercato o un ordine pendente, perché dovrei trascinarmi dietro tutti quei 61 metodi? È razionale?"

Beh, ci saranno circa 100kb di overhead di memoria per Expert Advisor. Accidenti...


A proposito, ecco un sondaggio Usate la libreria standard per le operazioni di trading?

 
papaklass:

Francamente, non avrei dovuto uscire con il mio post.

Non per niente, ho capito che non sono l'unico ad essere anticonvenzionale :) Nel sondaggio - ho pagato i miei omaggi