Feedback su MQL5

 

Ho usato MQL4 per molto tempo ed ero molto felice di sentire che MQL5 introdurrà finalmente OOP, perché sarò in grado di scrivere più velocemente sistemi di analisi automatica più flessibili. Ma non riesco proprio a trovare le parole per quanto sono rimasto deluso. Ero inorridito dal fatto di non poter operare completamente con i puntatori e lavorare con gli oggetti in modo facile e veloce, il che è particolarmente vero per lo sviluppo di sistemi, che sono inutili per il 95% del tempo. Tutti noi scriviamo programmi in MQL per testare qualche teoria, eseguire qualche analisi automatica dei dati per verificare un'idea in seguito e ottimizzarla, e deve essere fatto molto rapidamente, perché l'idea deve essere ottimizzata molte volte. Anche se si astrae dal linguaggio, lo sviluppo di sistemi di trading o di analisi in questo contesto è un lavoro ingrato, perché si inizia a lavorare, sapendo che molto probabilmente sarà sub-ottimale o addirittura inutile. Che dire, se gli sviluppatori di MQL5 ci hanno dato, nelle loro parole, uno strumento super sicuro, in cui è impossibile spararsi, ma per l'attuazione di una semplice idea o in altre parole di un algoritmo elementare, è necessario lavorare per decine di ore.

Bene, sviluppatori MQL5, ho letto un paragrafo interessante nel libro di Straustrup, e mi sono subito ricordato del vostro "prodotto" in MQL5:

"La relazione tra il linguaggio in cui pensiamo (scrivere programmi) e i compiti (soluzioni) che possiamo immaginare è molto stretta. Per questo motivo, limitare le capacità del linguaggio per prevenire errori di programmazione è pericoloso nel migliore dei casi. Proprio come nel caso delle lingue naturali, è di grande utilità conoscere almeno due lingue. Un linguaggio fornisce al programmatore un insieme di strumenti concettuali. Se questi strumenti sono inadeguati al compito da svolgere, vengono semplicemente ignorati. Un design di qualità e senza errori non può essere garantito semplicemente dalla presenza o dall'assenza di caratteristiche specifiche in un linguaggio".

Quindi, in base al mio feedback di cui sopra, quello che avete programmato per il gusto di programmare è completamente inadatto agli scopi che MQL è destinato a servire. Grazie per avermi costretto a ignorare semplicemente uno strumento come l'OOP in MQL5.

 

Dovresti almeno fare degli esempi.

Cosa vuol dire che non si può operare completamente con i puntatori e lavorare con gli oggetti in modo facile e veloce? Non ho mai avuto alcun problema con questo quando sviluppavo schemi su larga scala.

 

Pochi linguaggi moderni, gestibili e sicuri permettono di operare con i puntatori "pienamente" (cioè pericolosamente). Soprattutto in MQL4/MQL5, dove la sicurezza e la controllabilità devono essere fondamentali.

Tutto il resto è presente e disponibile. E sono disponibili anche puntatori sicuri.

Molto probabilmente, non l'hai ancora capito, ma hai srotolato il tuo mucchio di pensieri. Non c'è altro modo di chiamare questo flusso non documentato.

 
Renat Fatkhullin:

Pochi linguaggi moderni, gestibili e sicuri permettono di operare con i puntatori "pienamente" (cioè pericolosamente). Soprattutto in MQL4/MQL5, dove la sicurezza e la gestibilità devono essere al primo posto.

Tutto il resto è presente e disponibile. E ci sono anche indicazioni sicure.

Molto probabilmente non l'hai capito, ma hai srotolato il tuo mucchio di pensieri. Non c'è altro modo di chiamare questo flusso non documentato.

Per favore:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

Nominate un linguaggio molto usato in cui non posso assegnare un indirizzo diverso a un puntatore? Nominate un linguaggio di uso comune in cui non posso assegnare un riferimento di un tipo a un oggetto diverso dello stesso tipo? Dove altro sarei costretto a descrivere un costruttore o una funzione di copia a causa di queste limitazioni del vostro linguaggio?

E se la controllabilità è fondamentale per voi, perché gli altri linguaggi controllati non impongono restrizioni simili?

Personalmente, per me, la cosa più importante non è la sicurezza e la controllabilità, ma la velocità con cui posso implementare l'idea, questo è estremamente giusto nel contesto delle idee di trading, coloro che non sono d'accordo con questo, o sopravvalutano il valore dei loro sistemi, o programmano per il gusto di programmare, non un risultato specifico.

 

Renat, tu stesso riconosci quello che ho scritto nel primo post e velare la perdita di flessibilità nella sicurezza facendone un vantaggio innegabile, anche se non è affatto vero.

Битый указатель (именно указатель как сущность и рабочая единица языка) контролируется системой и безопасно обрабатывается, выдавая при необходимости рантайм ошибку, указывая на ошибку автора. А вот "физическая" ссылка не может быть проконтролирована, да ее и нет в языке (не путайте с передачей параметра по ссылке, где это лишь контролируемый системой метод связи).

Rimuovere i collegamenti pericolosi è il primo passo per creare un linguaggio sicuro dal mostro che è il C++ oggi. Abbiamo volutamente e deliberatamente rimosso i riferimenti,perdendo deliberatamentela flessibilità sbarazzandoci dell'autoscatto.

Datemi la possibilità di darmi la zappa sui piedi, perché senza questa capacità sono costretto a controllare la programmazione, e io voglio controllare l'idea che voglio attuare.
 
urusov:

Per favore:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

Nominate un linguaggio di uso comune in cui non posso assegnare un indirizzo diverso a un puntatore? Nominate un altro linguaggio molto usato in cui non posso assegnare un riferimento dello stesso tipo a un oggetto diverso? Dove altro sarei costretto a descrivere un costruttore o una funzione di copia a causa di queste limitazioni del vostro linguaggio?

E se la controllabilità è fondamentale per voi, perché gli altri linguaggi controllati non impongono restrizioni simili?

Personalmente, per me, la cosa più importante non è la sicurezza e la controllabilità, ma la velocità con cui posso implementare l'idea, è estremamente giusto nel contesto delle idee di trading, coloro che non sono d'accordo con questo, o sopravvalutano il valore dei loro sistemi, o programmano per il gusto di programmare, piuttosto che un risultato specifico.

Compagno! Non spostate la vostra ignoranza della lingua nell'area di responsabilità degli sviluppatori. In MQL5 è possibile assegnare liberamente vari oggetti ai puntatori e passare questi oggetti come puntatori. Come in qualsiasi altro linguaggio moderno, come C# e Java, MQL5 ha un controllo di tipo esplicito, e la loro conversione può essere effettuata solo all'interno della stessa gerarchia di classi (ereditarietà). Di nuovo, esattamente lo stesso comportamento è implementato in altri linguaggi molto usati come C# e Java.

 
urusov:

Renate, tu stessa riconosci tutto quello che ho scritto nel primo post e velare la perdita di flessibilità nella sicurezza facendone un vantaggio innegabile, quando non è affatto così.

Datemi la possibilità di darmi la zappa sui piedi, perché senza questa capacità sono costretto a controllare la programmazione, e io voglio controllare l'idea che voglio attuare.
A giudicare dai tuoi post precedenti, hai imparato a darti la zappa sui piedi in modo magistrale. Ora non resta che imparare a programmare.
 
Mi piace il 5-Rka. Molto probabilmente lo starter non ha avuto abbastanza tempo per capirlo ed è saltato a una conclusione. All'inizio è un po' difficile, certo, ma ne vale la pena.
 
urusov:

Renate, tu stessa riconosci tutto quello che ho scritto nel primo post e velare la perdita di flessibilità nella sicurezza facendone un vantaggio innegabile, quando non è affatto così.

Datemi l'opportunità di spararmi nel piede, perché senza questa opportunità devo controllare la programmazione, e voglio controllare l'idea che voglio attuare.

Dovresti educarti e pensare di più alla sicurezza.

Non sto ammettendo nulla, ma ho giustificato nei link di cui sopra (che sono gettati anche senza chiaro riferimento a un luogo specifico), cosa, come e perché è stato fatto in MQL4/MQL5. L'esperienza pratica dal 2001 (quando è uscito MQL) nello sviluppo di linguaggi applicativi per piattaforme di trading ci permette di capire chiaramente cosa è necessario per ottenere un risultato globale.


Volete una velocità sfrenata? Scrivere in C++ e includere la DLL. Ma anche in MQL5 ci siamo messi al passo con i compilatori C++ nativi: test del nuovo compilatore MQL5 per piattaforme x64 - accelerazione da 2 a 10 volte!

 
urusov:

Nominate un linguaggio molto usato in cui non posso assegnare un indirizzo diverso a un puntatore? Nominate un altro linguaggio molto usato in cui non posso assegnare un riferimento dello stesso tipo a un altro oggetto? Dove altro sarei costretto a descrivere un costruttore o una funzione di copia a causa di queste limitazioni del vostro linguaggio?

Beh, almeno guardate nella libreria standard https://www.mql5.com/ru/docs/standardlibrary e vedete il codice (in MQL5\Include\*) che opera completamente con i riferimenti.

Ovviamente, non conoscete affatto la lingua.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Renat, per favore controlla questo thread

https://www.mql5.com/ru/forum/60581/page2

Куда пропала история сигнала?
Куда пропала история сигнала?
  • www.mql5.com
Помогите разобраться, пропала история торговли сигнала (доходность, сделки и прочее). - Страница 2 - Категория: общее обсуждение
Motivazione: