Auguri per MQL5 - pagina 3

 
alexnau:
wellx:
L'ho già scritto prima, ma lo dirò di nuovo:
- funzioni di callback per lavorare con il terminale stesso
- Interruzione/ripristino della connessione
- gestire la coda di diversi EA (mutex, sezioni critiche....)
- debugger (qualsiasi)
- supporto diretto alla numerazione delle barre (dalla più vecchia alla più recente) con messaggistica sui cambiamenti del numero di barre
- creare dll dalle funzioni MQL (aiuterà a creare librerie, cosa che ridurrà il codice complessivo con un gran numero di indicatori)


Risolvere i problemi con l'incertezza, è improbabile che migliori il MQL aggiornato. Perché abbiamo bisogno di alcuni avvisi per calcolare il numero della barra corrente (barra zero)?

Nonostante il "conto alla rovescia", la logica per determinare la barra necessaria è chiara e semplice, secondo me.

Non sto chiedendo di cambiare la variante attuale, ma solo di aggiungere un supporto. Ciò che questo farà è non ricalcolare la storia ad ogni nuova barra, basta controllare il cambiamento del numero di barre. Di conseguenza, il carico sul terminale è ridotto e il paging in non è così frequente.
 
Il numero di barre può ancora essere controllato. Ecco a cosa serve Bars.
 
alexnau:
wellx:
- supporto per la numerazione diretta delle barre (dalla più vecchia alla più recente) con notifica del cambiamento del numero di barre


per risolvere i problemi di incertezza, è improbabile che migliori il MQL aggiornato. Perché abbiamo bisogno di avvisi per calcolare il numero della barra attuale (barra zero) dopo?

Nonostante il "conto alla rovescia", la logica della determinazione della barra necessaria è chiara e semplice, secondo me.


Questo ridurrebbe il problema di trovare la barra giusta nella storia a specificare il suo indice "all'indietro" e sarebbe molto più economico.

Eh, l'entusiasmo e l'ottimismo di un tempo sono spariti :), ma aggiungo i miei 5 copechi:

Nel tester, al posto della modalità "punti di controllo" aggiungete il parametro "tutti i tick" "numero di partenze di Expert Advisor per barra". La modalità "per prezzi aperti" non dovrebbe essere cancellata comunque, dato che per essa si usa un fxt più compatto. Comunque, no, è meglio sostituirla con la modalità "a prezzi vicini" :)

E ancora:

-Aggiungere il binding delle variabili globali alle variabili di programma in init.

-Per fare un file exe per il tester.

-Per aggiungere ai buffer degli indicatori ( per ogni tipo di variabili) - per un efficace scambio di dati con Expert Advisor.

 
Inoltre: aggiungere la possibilità di testare un dato file fxt con un nome arbitrario. Perché l'attuale relazione rigida tra nome del file fxt e carattere?
 
Ecco i miei desideri per il nuovo sistema finora che mi vengono in mente (in ordine decrescente):

Lingua
----

Convertire doppio in stringa con la massima precisione (> 8)

Compilazione condizionale (#ifdef, #ifndef, #define, #undefine)

Possibilità di sostituire le parole chiave con #define (per la compilazione condizionale). Il valore può essere vuoto.
esempio:
//#define EXTERN extern // normale
#define EXTERN // concorso
EXTERN int opt = 0;

Commenti annidati /* */.
Non ANSI, ma implementato quasi ovunque (e disabilitato). Permette di commentare rapidamente un grosso pezzo di codice con normali commenti di testo.

Strutture (promesse)

Array multidimensionali, migliore gestione dei din.

Debugger (promesso?)

Eventi

Eccezioni

API

Puntatori o simili, per liste, mazzi, ...

Interfaccia con il database (SQL o ODBC). Il database non deve essere un server.

Funzioni in linea

Sovraccarico di funzioni

Offuscante (difficile da decompilare).
Crittografia di stringhe con decrittografia singola all'inizializzazione di EA, modifica del flusso di codice, miscelazione del codice, non eliminare il codice inutilizzato,
aggiungere codice spazzatura e dati...
Controllando tutto questo con #pragma.


Terminale
--------
Nelle impostazioni, specificare il programma o lo script MQL con opzioni (e meta variabili) da chiamare prima (e dopo?) la compilazione (per la pre-elaborazione personalizzata).


Editore
--------
Operazioni di commento/discommento (tramite pulsante e/o tasto di scelta rapida)
 
1. Fate il tester in un programma separato (come MQL editor e terminale).
2. Fare un algoritmo genetico più potente (per essere in grado di testare un numero di varianti 10 alla 20° potenza).
3. Accelerare il processo di test. (Difficilmente aspetterò 15-30 ore, e sarà un compito micidiale!
4. Introdurre la funzione di inversione di posizione (cioè se avete una posizione di acquisto con 5 lotti, potete convertirla in vendita di 5 lotti).
Questo è tutto per ora.
 

Un altro desiderio per l'altalena. Sarebbe bello se oltre al periodo di ottimizzazione si potesse specificare il periodo di controllo incrociato per i parametri trovati. Questa caratteristica permette di risparmiare un po' dalla riqualificazione del sistema di trading (o dalla riqualificazione del NS).

 
Voglio una funzione. I dati di input sono i dati di ottimizzazione più una gamma di valori restituiti. L'output è, ovviamente, i valori ottimizzati.
 
klot:

Un altro desiderio per l'altalena. Sarebbe bello se oltre al periodo di ottimizzazione si potesse specificare il periodo di controllo incrociato per i parametri trovati. Questa caratteristica permette di risparmiare un po' dalla riqualificazione del sistema di trading (o dalla riqualificazione del NS).

Questo è ciò di cui abbiamo davvero bisogno.
 
Integer:
drknn:
Beh, ho un modesto suggerimento. Propongo di introdurre nel linguaggio una funzione che restituisca il numero di celle dell'array in cui si trova il valore dato (o in caso di fallimento restituisca meno uno), altrimenti dobbiamo organizzare un ciclo ogni volta. La funzione ArrayBsearch() non è adatta - restituisce il valore sbagliato.

Il valore restituito da questa funzione sarà ancora controllato per l'uguaglianza -1, quindi possiamo controllare il valore con indice restituito da ArrayBsearch per l'uguaglianza al valore desiderato. Non una grande differenza

Per citare il riferimento.

int ArrayBsearch(...)
Restituisce l'indice del primo elemento trovato nella prima dimensione dell'array.
Se non c'è nessun elemento con il valore specificato nella matrice, la funzione restituisce l'indice dell'elemento più vicino (per valore).

Bene, quando si cerca l'indice non solo di un numero nell'array, ma di un biglietto dell'ordine, questa funzione non si adatta affatto - perché ho bisogno dell'indice del biglietto simile più vicino, quando ho bisogno esattamente di questo biglietto, e se è assente, l'ordine non è tra quelli del mercato - è chiuso e dovremmo trovarlo nella storia! Quando si lavora con gli array spostati in modo sincrono, l'indice è una cosa molto importante, e deve essere preciso o non disponibile.