inizializzazione globale fallita!!!!!!! - pagina 6

 
SDC:

Si usa int OnCalculate() al posto di int start(). Viene eseguito su ogni tick come start(). Un prima e un dopo avrebbero un aspetto simile a questo,

I parametri formali di OnCalculate lo rendono più autonomo, il programmatore non deve fare affidamento sulla chiamata di tutti i tipi di globali che apparentemente nei circoli oop è un cattivo programmatore, uno schiaffo sul polso. In pratica non c'è molta differenza tra l'uso di entrambi. Inoltre OnCalculate è lo stesso di mql5 quindi avete la possibilità di scrivere codice compatabie.


Grazie, SDC. Penso di aver capito dove vuoi arrivare. Non sono sicuro che mi piaccia la direzione che MetaQuotes sta prendendo con questo. Stanno facendo la stessa cosa che ha fatto Microsoft. Può rendere più facile la codifica, ma riduce seriamente il bisogno del programmatore di capire cosa sta realmente succedendo "sotto il cofano", per così dire. Questo è un problema enorme, secondo me, perché riduce l'abilità e la comprensione dei programmatori. Se vuoi essere un maestro in quello che fai, devi capirlo dal livello più elementare ai concetti più alti. Ho iniziato a programmare nel 1978. Scrivevamo in codice binario e ottale. La maggior parte delle persone ora non ne avrebbe la minima idea. Microsoft ha spinto i linguaggi di programmazione ad un livello che separa completamente il programmatore dal sapere cosa sta realmente accadendo sotto il cofano per molti anni e non è per il nostro beneficio. Il loro intento è quello di fare in modo che solo i loro programmatori sappiano cosa sta realmente accadendo a bassi livelli e tutti gli altri devono fare affidamento su di loro.

Un esempio di ciò di cui sto parlando è l'evoluzione da C++ a C#. Apparentemente, C# ha lo scopo di rendere la vita del programmatore più facile facendo l'"impianto idraulico" di basso livello per loro, liberandolo dal bisogno di sapere come farlo da solo e accelerando il tempo di sviluppo nel processo. Certo, ha ottenuto questo, ma a quale costo? Noi "vecchietti" capiamo perfettamente l'accesso diretto alla memoria e come usarlo. Sappiamo cosa succede "sotto il cofano". Ho spesso avuto bisogno di allocare specificamente una certa quantità di memoria o di manipolare la memoria byte per byte o anche bitwise. Qualcuno che conosce solo la "nuvola" di alto livello di C# ha un'idea? No. Chiama Microsoft.

So che mi sono messo a sproloquiare qui, ma penso che MetaQuotes si stia muovendo nella stessa direzione e questa non è una buona cosa. Sicuramente non è una buona cosa quando si parla di scrivere applicazioni che hanno a che fare con dati in tempo reale. Nella nostra arena un errore potrebbe costare a qualcuno un sacco di soldi. Posso conviverci se faccio casino su un'app che intendo solo per il mio uso personale. Se faccio casino su un'app che sto vendendo non è accettabile.

BTW, non credo che i globali usati in OOP e i globali usati in MQL siano lo stesso concetto. MQL è ancora un bambino in termini di essere un vero linguaggio orientato agli oggetti. Infatti, "globale" non significa nulla in OOP. Si chiama variabile "statica" ed è disponibile per tutti gli oggetti creati dalla stessa classe e per tutte le classi in una gerarchia derivata. È disapprovata per ragioni di incapsulamento dei dati e per essere un incubo di manutenzione, specialmente quando è usata in una classe di livello molto alto da cui dipende tutto in un'applicazione.

 

Fondamentalmente se volete ottenere i numeri dal conto, dovete solo usare AccountBalance()

Quindi, se volete davvero sapere come viene derivato esattamente il saldo, non ne avete idea. Solo gli sviluppatori lo sanno.

 
ProfessorMetal:


Grazie, SDC. Penso di aver capito dove vuoi arrivare. Non sono sicuro che mi piaccia la direzione che MetaQuotes sta prendendo con questo. Stanno facendo la stessa cosa che ha fatto Microsoft. Può rendere più facile la codifica, ma riduce seriamente il bisogno del programmatore di capire cosa sta realmente succedendo "sotto il cofano", per così dire. Questo è un problema enorme, secondo me, perché riduce l'abilità e la comprensione dei programmatori. Se vuoi essere un maestro in quello che fai, devi capirlo dal livello più elementare ai concetti più alti. Ho iniziato a programmare nel 1978. Scrivevamo in codice binario e ottale. La maggior parte delle persone ora non ne avrebbe la minima idea. Microsoft ha spinto i linguaggi di programmazione ad un livello che separa completamente il programmatore dal sapere cosa sta realmente accadendo sotto il cofano per molti anni e non è per il nostro beneficio. Il loro intento è quello di fare in modo che solo i loro programmatori sappiano cosa sta realmente accadendo a bassi livelli e tutti gli altri devono fare affidamento su di loro.

Un esempio di ciò di cui sto parlando è l'evoluzione da C++ a C#. Apparentemente, C# ha lo scopo di rendere la vita del programmatore più facile facendo l'"impianto idraulico" di basso livello per loro, liberandolo dal bisogno di sapere come farlo da solo e accelerando il tempo di sviluppo nel processo. Certo, ha ottenuto questo, ma a quale costo? Noi "vecchietti" capiamo perfettamente l'accesso diretto alla memoria e come usarlo. Sappiamo cosa succede "sotto il cofano". Ho spesso avuto bisogno di allocare specificamente una certa quantità di memoria o di manipolare la memoria byte per byte o anche bitwise. Qualcuno che conosce solo la "nuvola" di alto livello di C# ha un'idea? No. Chiama Microsoft.

So che mi sono messo a sproloquiare qui, ma penso che MetaQuotes si stia muovendo nella stessa direzione e questa non è una buona cosa. Sicuramente non è una buona cosa quando si parla di scrivere applicazioni che hanno a che fare con dati in tempo reale. Nella nostra arena un errore potrebbe costare a qualcuno un sacco di soldi. Posso conviverci se faccio casino su un'app che intendo solo per il mio uso personale. Se faccio casino su un'app che sto vendendo non è accettabile.

BTW, non credo che i globali usati in OOP e i globali usati in MQL siano lo stesso concetto. MQL è ancora un bambino in termini di essere un vero linguaggio orientato agli oggetti. Infatti, "globale" non significa nulla in OOP. Si chiama variabile "statica" ed è disponibile per tutti gli oggetti creati dalla stessa classe e per tutte le classi in una gerarchia derivata. È disapprovata per ragioni di incapsulamento dei dati e per essere un incubo di manutenzione, specialmente quando è usata in una classe di livello molto alto da cui dipende tutto in un'applicazione.

Penso che la direzione di MQ sia quella di raggiungere la compatibilità tra mql4 e mql5, vedrete che stiamo già andando alla deriva nel territorio di mql5 con OnTick, OnTimer, OnCalculate, e una serie di funzioni di mql5 che sono ora disponibili per noi. Troverete che questo non rende le cose più facili. Se non altro la nuova versione è più dura per noi rispetto a prima, il vecchio mql4 ci permetteva di scrivere codice davvero molto sciatto e di farla franca, il nuovo si aspetta che siamo più precisi.
 

Questo è il motivo per cui il generatore di ea non può più essere usato. A meno che il codice non sia aggiornato, è davvero necessario codificare l'indi/ea da soli.

In pratica, la disciplina è la chiave per fare programmazione. È dura, ma si diventa più potenti nella codifica.

 
SDC:
Penso che la direzione di MQ sia quella di raggiungere la compatibilità tra mql4 e mql5, vedrete che stiamo già andando alla deriva nel territorio mql5 con OnTick, OnTimer, OnCalculate, e una serie di funzioni mql5 che sono ora disponibili per noi. Troverete che questo non rende le cose più facili. Se non altro la nuova versione è più dura per noi rispetto a prima, il vecchio mql4 ci permetteva di scrivere codice davvero molto sciatto e di farla franca, il nuovo si aspetta che siamo più precisi.


Ho capito di cosa stai parlando. Stavo guardando un po' di documentazione e mi sono reso conto che stavo fraintendendo l'uso dei nuovi metodi. OnStart() è per l'avvio degli script, OnCalculate() sostituisce il vecchio start() per gli indicatori e si suppone che sostituisca molte delle barre contate che tutti usavano nella vecchia incarnazione di MQL, oltre a dare il via all'esecuzione del codice dell'indicatore quando viene ricevuto un nuovo tick (sempre che non sia in esecuzione) e, infine, OnTick() sostituisce start() per gli EAs. Insieme a molti altri cambiamenti, hai ragione - non ci rende la vita più facile perché dobbiamo "re-imparare" e per coloro che lo fanno da un po' e hanno un certo numero di applicazioni messe insieme, causerà un sacco di reingegnerizzazione per mantenerle in funzione. Per quanto mi riguarda, stavo appena iniziando a prendere la mano su MQL e questo mi ha incrinato per bene. La maggior parte di ciò che avevo imparato ora devo "disimparare", per così dire.

Per quanto riguarda il fatto che le cose siano più rigide - è una buona cosa, secondo me. Può essere un dolore a cui abituarsi, ma ridurrà il potenziale di errori che potrebbero rivelarsi costosi per i nostri utenti e per noi stessi. Dal punto di vista di qualcuno che ha trascorso anni nel mondo aziendale lavorando su applicazioni in cui gli errori da parte nostra potrebbero costare ai nostri utenti enormi quantità di denaro (e a noi il nostro lavoro), sono un campione di precisione. Quello a cui stavo arrivando, però, è che facendo cose come l'introduzione di OnCalculate() che fa metà del lavoro per voi riduce la vostra comprensione di ciò che sta succedendo sotto il cofano. Parlo per esperienza quando parlo del passaggio da C++ a C#. Sei passato dal sapere "come funziona questo" a "schiaccio questo pulsante e succede questo". Forse sono della vecchia scuola, ma non credo che questo "dumbing down" sia una buona cosa. Questa reingegnerizzazione ha sia punti positivi che negativi.

 
deysmacro:

Questo è il motivo per cui il generatore di ea non può più essere usato. A meno che il codice non sia aggiornato, hai davvero bisogno di codificare l'indi/ea da solo.

In pratica, la disciplina è la chiave per fare programmazione. È dura, ma si diventa più potenti nella codifica.


Non c'è dubbio, amico. A dire il vero, non credo che i generatori EA avrebbero dovuto essere usati. Non hai la minima idea di cosa faccia realmente una "scatola nera". Per quanto riguarda la tua seconda affermazione, sono con te fino in fondo.
 
ProfessorMetal:

Sei passato dal sapere "come funziona questo" a "schiaccio questo pulsante e succede questo". Forse sono della vecchia scuola, ma non credo che l'ottundimento sia una buona cosa. Questa reingegnerizzazione ha sia punti positivi che negativi.

Guardala in questo modo: sarebbe un lavoro praticamente impossibile per qualsiasi persona o anche per una società organizzata di persone programmare qualcosa come MT4 completamente di codice binario da zero. Per non parlare dei moderni giochi per computer che sono in giro. Ci sarà un tempo in cui nessuna persona vivente avrà anche la minima idea di binario, ottale, esidecimale o anche Basic. Prima si costruiscono degli elementi, poi con il passare del tempo si ottengono dei blocchi, poi magari intere storie, interi libri. Non si fa altro che riassemblare le trame e finire con qualcosa di apparentemente nuovo, anche se è sempre la stessa vecchia merda. Il mondo cambia, non ci si può fossilizzare sullo stesso vecchio scenario! Bisogna sempre reimparare, leggere il manuale, prima. Poi ancora, e ancora, e ancora. Altrimenti si rimane indietro e si diventa un dinosauro.

 
Dadas:

Vedila così: sarebbe un lavoro praticamente impossibile per una sola persona o anche per una società organizzata di persone programmare da zero qualcosa come MT4 completamente di codice binario. Per non parlare dei moderni giochi per computer che ci sono in giro. Ci sarà un tempo in cui nessuna persona vivente avrà la minima idea di binario, ottale, esidecimale o anche Basic. Prima si costruiscono degli elementi, poi con il passare del tempo si ottengono dei blocchi, poi magari intere storie, interi libri. Non si fa altro che riassemblare le trame e finire con qualcosa di apparentemente nuovo, anche se è sempre la stessa vecchia merda. Il mondo cambia, non ci si può fossilizzare sullo stesso vecchio scenario! Bisogna sempre reimparare, leggere il manuale, prima. Poi ancora, e ancora, e ancora. Altrimenti si rimane indietro e si diventa un dinosauro.


Capisco il tuo punto di vista, Dadas. E sono d'accordo con te fino a un certo punto. Tuttavia, qualcuno dovrà SEMPRE conoscere l'argomento dalle fondamenta o l'intero castello di carte crollerà. Lasciate che vi dia un'illustrazione di quello che voglio dire. Ho passato il mio tempo come educatore professionale. Ho il grado di professore assistente di matematica e fisica. Ho insegnato in un college comunitario e il nostro dipartimento di fisica "permanente" era composto da me e dal capo del dipartimento.

All'epoca, il dipartimento di matematica era orientato verso la direzione di avere tutta l'istruzione fatta insegnando agli studenti la statistica, il calcolo, l'algebra lineare, ecc. utilizzando programmi per computer o calcolatrici. Non stavano insegnando loro nulla sulle materie effettive. Tutto ciò che si insegnava agli studenti era come usare i programmi. Questo non è imparare la matematica. Si tratta di premere il pulsante Start inserendo alcuni numeri e premendo il pulsante "Go". Ho avuto studenti che sono venuti a lamentarsi amaramente perché avevano seguito tutte le "istruzioni" e comunque avevano sbagliato il problema. La mia prima domanda è stata: "La risposta data dalla calcolatrice sembrava ragionevole?" La risposta? "Beh, non lo so". Perché non lo sapevano? Perché non sapevano un cazzo di matematica. Tutto quello che sapevano era premere questi pulsanti in questa sequenza e la calcolatrice avrebbe magicamente sputato la risposta. SBAGLIATO!

Ora, torniamo al mio punto originale. Il mio partner era tutto a favore di questo. La sua motivazione? "Beh, un giorno sarà fatto tutto così. Nessuno avrà bisogno di sapere come fare la matematica e la fisica come facciamo noi. I programmi faranno tutto" La mia risposta: "Sì, certo. E come faranno esattamente a sapere quando le "risposte che otterranno saranno completamente irrealistiche? E poi, chi diavolo scriverà e manterrà tutta questa roba quando le persone sono arrivate al punto che non sanno nemmeno fare la matematica di base perché sono state addestrate a lasciare che la macchina la faccia per loro? QUALCUNO dovrà sapere "come funziona" o, nelle parole di Jim Morrison - l'intera casa di merda sta andando in fiamme" E questo, amico mio, è dove entrano in gioco i dinosauri come me. Posso andare giù scalciando e urlando, ma andrò giù insegnando fino alla fine. Quando la casa di merda andrà in fiamme non sarà perché ho preso la via d'uscita più pigra :-)

 
ProfessorMetal:


Capisco il tuo punto di vista, Dadas. E sono d'accordo con te fino a un certo punto. Tuttavia, qualcuno dovrà SEMPRE conoscere l'argomento dalle fondamenta o tutto il castello di carte crollerà. Lasciate che vi dia un'illustrazione di quello che voglio dire. Ho passato il mio tempo come educatore professionale. Ho il grado di professore assistente di matematica e fisica. Ho insegnato in un college comunitario e il nostro dipartimento di fisica "permanente" era composto da me e dal capo del dipartimento.

All'epoca, il dipartimento di matematica era orientato verso la direzione di avere tutta l'istruzione fatta insegnando agli studenti la statistica, il calcolo, l'algebra lineare, ecc. utilizzando programmi per computer o calcolatrici. Non si insegnava loro nulla sulle materie vere e proprie. Tutto ciò che si insegnava agli studenti era come usare i programmi. Questo non è imparare la matematica. Si tratta di premere il pulsante Start inserendo alcuni numeri e premendo il pulsante "Go". Ho avuto studenti che sono venuti a lamentarsi amaramente perché avevano seguito tutte le "istruzioni" e comunque avevano sbagliato il problema. La mia prima domanda è stata: "La risposta data dalla calcolatrice sembrava ragionevole?" La risposta? "Beh, non lo so". Perché non lo sapevano? Perché non sapevano un cazzo di matematica. Tutto quello che sapevano era premere questi pulsanti in questa sequenza e la calcolatrice avrebbe magicamente sputato la risposta. SBAGLIATO!

Ora, torniamo al mio punto originale. Il mio partner era tutto a favore di questo. La sua motivazione? "Beh, un giorno sarà fatto tutto così. Nessuno avrà bisogno di sapere come fare la matematica e la fisica come facciamo noi. I programmi faranno tutto" La mia risposta: "Sì, certo. E come faranno esattamente a sapere quando le "risposte che otterranno saranno completamente irrealistiche? E poi, chi diavolo scriverà e manterrà tutta questa roba quando le persone sono arrivate al punto che non sanno nemmeno fare la matematica di base perché sono state addestrate a lasciare che la macchina la faccia per loro? QUALCUNO dovrà sapere "come funziona" o, nelle parole di Jim Morrison - l'intera casa di merda sta andando in fiamme" E questo, amico mio, è dove entrano in gioco i dinosauri come me. Posso andare giù scalciando e urlando, ma andrò giù insegnando fino alla fine. Quando la casa di merda andrà in fiamme non sarà perché ho preso la via d'uscita più pigra :-)


Bene, allora finirai come Don Kichote.

E, sì, non vivremo per vederlo, ma sarà così, prima o poi. Dopo tutto, nessuno sa un cazzo di come e perché tutto questo Universo funziona, eppure funziona. Sai se stai ricevendo le risposte corrette dall'Universo stesso? Come potrai mai saperlo? Capisco il modo di pensare dei matematici. Vogliono che le formule controllino tutto e vogliono sapere/capire da dove nascono le formule, c/z vogliono avere il controllo. 2+2=4, ma perché? È davvero la risposta corretta? La verità è che non si può mai avere il controllo.

E, dopo che tutto è stato detto e fatto, si ottiene "inizializzazione globale fallita" e nessuno sa davvero perché o come risolvere il problema.

 
Dadas:


Bene, allora finirete come Don Kichote.

E, sì, non vivremo per vederlo, ma sarà così, prima o poi. Dopo tutto, nessuno sa un cazzo di come e perché tutto questo Universo funziona, eppure funziona. Sai se stai ricevendo le risposte corrette dall'Universo stesso? Come potrai mai saperlo? Capisco il modo di pensare dei matematici. Vogliono che le formule controllino tutto e vogliono sapere/capire da dove nascono le formule, c/z vogliono avere il controllo. 2+2=4, ma perché? È davvero la risposta corretta? La verità è che non si può mai avere il controllo.

E, dopo che tutto è stato detto e fatto, si ottiene "inizializzazione globale fallita" e nessuno sa davvero perché o come risolvere il problema.


LOL Penso che tu intendessi Don Chisciotte. Comunque, il punto è che abbiamo davvero bisogno di capire con che cosa stiamo lavorando o andiamo dritti verso un eventuale fallimento.