Sergio55 voleva sapere dove effettuare dele modifiche per migliorarlo.
Tutto è modificabile e migliorabile (almeno in teoria). Io non l'ho provato (intendo live demo per un certo periodo), ho solo dato un'occhiata al codice. Per migliorarlo bisognerebbe averlo provato per un po' e aver notato quali sono i punti deboli. I backtest e le ottimizzazioni in questo caso servono a poco. Una volta capito il meccanismo con cui entra a mercato e con cui esce, non resta che provarlo e osservarne l'operatività. E' il comportamento durante la gestione del trade che può fare la differenza.
Seguendo un suggerimento di Matteo, ho prepatato un Expert, analogo a quello segnalato da Marcellina (Indicatori MT4) per "misurare" in qualche modo le prestazioni del proprio broker in fase di invio ordini. La misurazione lascia un po' il tempo che trova perché non sempre le prestazioni dipendono esclusivamente dal server a cui si inviano ordini (tempi di latenza, matching della controparte, o ritardi indotti) ma possono essere influenzate, e non poco, dallo stato della propria connessione internet. Pertanto, la misurazione è quella che è: semplicemente il tempo trascorso tra l'invio e la conferma dell'ordine. Ciascuno deve farsi il proprio esame di coscienza (o meglio, della propria linea ADSL) e prendere quel dato con le pinze.
L'Expert misura il tempo di invio, modifica e cancellazione degli ordini, oltre a calcolarne il tempo medio e a riportare alcune informazioni utili sul broker che si sta utilizzando: spread, dimensione minima del contratto e incremento minimo (alcune volte, queste due ultime grandezze non coincidono).
L'expert invia ordini BUY_STOP e SELL_STOP a una distanza di 500 pip dal prezzo corrente e immediatamente dopo li cancella. Pertanto non c'è alcun rischio (diciamo che è tendente allo 0) che l'ordine venga intercettato ed eseguito: può essere perciò usato anche in real in tutta tranquillità. (Non fate caso agli ordini BUY presenti sul grafico, derivano da un altro EA che stavo testando )
Per utilizzare l'expert,
scaricate lo zip e decomprimetelo in un cartella temporanea (o sul desktop)
copiate il file CheckMyBroker.mq4 nella cartella \expert della vostra piattaforma MT4
copiate il file InfoPanel.mq4 nella cartella \expert\indicators della vostra piattaforma MT4
riavviate Metatrader
aprite un chart piuttosto vispo (EURUSD, GBPUSD) e trascinate l'expert sul chart.
Dovreste ottenere un risultato simile all'immagine in allegato.
La cosa interessante sono invece alcune soluzioni che ho adottato per la visualizzazione delle informazioni durante il funzionamento dell'expert. Ma di questo ne parlerò più diffusamente in un prossimo post.
Solitamente gli Expert riportano nell'angolo in alto a sinistra alcune informazioni di base (ultimo segnale elaborato, guadagno o perdita accumulata, dimensione del contratto in essere, ecc. ecc.), informazioni insomma che consento di avere sott'occhio lo stato di avanzamento dell'Expert senza per questo dover spulciare lo storico, fare conteggi strani o controllare gli ordini aperti. (Vedi immagine allegata)
Di solito queste informazioni vengono gestite tramite la funzione Comment() che permette di stampare a video una stringa di caratteri. La funzione è semplice ma ha alcune limitazioni: stampa solo nell'angolo in alto a sinistra del chart corrente, non è possibile modificare il colore del testo o il font utilizzato, si sovrappone spesso al grafico rendendo illegibile il testo e, buon ultimo, se si usa un'altra istruzione Comment(), per esempio per stampare un messaggio di errore, il nuovo testo sostituisce il precedente.
Per questo motivo, la segnalazione di eventuali errori intercettati e gestiti da programma, di solito viene gestita mediante la funzione Print() che, analogamente alla Comment(), permette di stampare una stringa di caratteri. Peccato che la stampa avvenga nella finestra Consiglieri e la scritta si confonda con tutte le altre scritte e segnalazioni generate autonomamente da Metatrader, rendendo così difficile rendersi conto immediatamente se c'è qualcosa che non va.
Lo scopo che mi sono prefisso era quindi quello di avere sempre sott'occhio e immediatamente leggibili due tipi di informazioni: quelle relative ai parametri generali di funzionamento dell'expert e quelle sugli errori o sui messaggi generati dall'EA. Il tutto in un pannello ben visibile, di facile lettura e costantemente aggiornato.
Il problema principale era creare un pannello. MT4 non dispone di funzioni adeguate: tutti gli oggetti grafici (rettangolo, etichetta, testo) non hanno sfondo e pertanto le scritte si sarebbero comunque sovrapposte al chart. (Quello sfondo che si vede nell'immagine allegata, è un trucco che, se volete, vi spiegherò). Soluzione scartata.
Mi sono però ricordato di un articolo letto tempo fa su Data Function - Creation of a Normal Program - MQL4 Tutorial, e ho cercato di implementare i suggerimenti proposti, apportando però alcune modifiche perché non tutto ciò che c'è scritto nell'articolo funziona (per lo meno, con me non ha funzionato).
In sostanza, l'articolo suggeriva di usare un indicatore ad hoc, completamente vuoto, il cui unico scopo era quello di aprire una finestra secondaria in cui, poi, l'expert, tramite una funzione opportuna, avrebbe scritto i vari messaggi. Il codice suggerito per l'indicatore era:
Code:
//--------------------------------------------------------------------
// Inform.mq4
// The code should be used for educational purpose only.
//--------------------------------------------------------------------
#property indicator_separate_window // Separate indicator window
//--------------------------------------------------------------------
int start() // Special function start()
{
}
//--------------------------------------------------------------------
In questo codice, l'unica istruzione utile è la direttiva
#property indicator_separate_window
Come senz'altro sapete, gli indicatori possono essere tracciati direttamente sul grafico (le medie mobili o le bande di Bollinger, ad asempio) oppure in una finestra secondaria (lo Stocastico o il MACD, ad esempio). Il questo caso, la direttiva serve per aprire una finestra secondaria nella finestra del chart per tracciare l'eventuale l'indicatore calcolato dalla funzione Start(). Ma poiché, in questo caso, la funzione Start() è vuota (e quindi non esegue alcun calcolo) l'unico risultato pratico dell'indicatore è l'apertura di una finestra secondaria.
Per default, questa finestra secondaria ha lo stesso nome dell'indicatore (in questo caso "Inform") e la funzione proposta nel prosieguo dall'articolo citato poc'anzi, usava questo nome per ritrovarne l-----le (ogni finestra o sottofiniestra grafica è identificata da un numero univoco, l-----le, appunto) e crearvi degli oggetti grafici (label) a cui associare poi un testo. L-----le è necessario perche la funzione CreateObject() lo utilizza per sapere in quale finestra dovrà collocare gli oggetti.
Fatta questa necessaria premessa, nel prossimo post illustrerò il codice dell'indicatore da me modificato, spiegherò i motivi che mi hanno spinto a farlo, e farò vedere come viene usato poi dall'Expert.
Grazie Skipper per l'elevata qualità del lavoro da te proposto.
A mio avviso a Metaquotes dovrebbero farti un contratto di consulenza... e ascoltare i tuoi suggerimenti...in particolare per la MT5...
Paradossalmente mi dispiace rispondere perchè non volevo sporcare i tuoi post, magari dopo lo sposto, ma i miei complimenti te li meriti davvero.
A presto.
PS: le operazioni effettuate sono realizzate in un ambiente demo, a scopi prettamente educativi.
L'utilizzo di CheckMyBroker perde di significato nell'ambiente demo, in quanto non sono replicabili tutte le condizioni dell'ambiente reale.
Il suo utilizzo è invece di grande utilità per affinare nel reale il proprio EA.
Per esempio, dalla posizione fisica di dove risiede il pc,
dalla bontà della connessione e
dal modo di elaborare gli ordini del trading system,
si può andare a lavorare sul proprio sistema per creare le condizioni di massima efficenza operativa del sistema.
PS: le operazioni effettuate sono realizzate in un ambiente demo, a scopi prettamente educativi.
Sono d'accordo con chi dice che tutto dipenda dal momento preciso della gestione del trade. Alla fine giocare in borsa è una questione di prontezza e rapidità. Paradossalmente uno può essere un grandissimo esperto ma se la piattaforma ti abbandona, tutto il lavoro svanisce.
Da qualche tempo, è uscita la versione MT4 mobile per Android (parlo della versione ufficiale di Metaquotes). L'ultima build (la 433) finalmente consente di ricevere dei messaggi di notifica inviati da MT4 desktop.
Cosa intendo? A patto di aver configurato le relative opzioni, un EA funzionante su MT4 desktop poteva, tramite la funzione SendMail(), inviare un messaggio di posta elettronica che informava dell'avverarsi di un certo evento (incrocio di due medie, superamento di un livello di ipercomprato/venduto, apertura/chiusura di una posizione, e chi più ne ha più ne metta). Ricevuta la mail (per quanto rapida, ci sono sempre di mezzo i tempi di notifica dei server - mittente e destinatario - di posta) si apriva la piattaforma mobile e si controllava cosa era successo e/o si agiva di conseguenza.
Con la nuova versione per mobile, è stata introdotta in MT4 deskop una nuova funzione SendNotification() che svolge la stessa funzione della SendMail(), ma sfrutta la rete del gestore di telefonia per inviare un messaggio in broadcasting.
La pagina di configurazione è quella riportata in figura. Occorre solo inserire il Metaquotes ID che corrisponde al proprio telefono e attivare l'opzione Enable Push Notifications
Ovviamente, occore installare la versione di MT4 per Android o iPhone di Metaquotes (io l'ho scaricata da PlayStore, ex Android Market e quindi, non possedendo un iPhone, parlerò solo di questa) e configurarla per ricevere i messaggi in broadcasting.
È un passaggio in due fasi
per prima cosa occorre configurare il proprio telefono
Selezionare l'icona Messaggi
Richiamare il menu e selezionare Impostazioni
scorrere l'elenco fino a trovare la sezione Impostazioni CB e attivare l'opzione Attivazione CB (CB sta per Cell Broadcasting)
configurare MT4 mobile
Scorrere l'elenco delle applicazioni fino a trovare MT4 e avviarla
Richiamare il menu e selezionare Impostazioni
Scorrere le opzioni fino a trovare Metaquotes ID e verificare che sia riportata una stringa alfanumerica (la mia è di 8 caratteri)
Prendere nota di questa stringa e riportarla in MT4 desktop nella pagina di configurazione vista in precedenza.
Impostare l'opzione Melodia della notifica
Se è tutto a posto, facendo clic sul pulsante Test nella pagina di configurazione di MT4 desktop si dovrebbe sentire la suoneria impostata e vedere apparire un messaggio di notifica generico nella parte alta del cellulare.
Per provare dal vivo questa nuova funzione, ho preparato un piccolo EA che fa la scansione di 19 cross e ad ogni nuova candela controlla se il valore del CCI ha superato al rialzo o al ribasso il livello -100 o + 100, segnalando così un potenziale ingresso.
Aprire un chart piuttosto vispo (EURUSD, tanto per non fare nomi), selezionare il timeframe desiderato e collocarci l'EA. Ad ogni nuova candela, l'EA controllerà se la condizione imposta si è verificata su uno dei seguenti cross,
Per attivare anche l'opzione per l'invio di e-mail, occorre configurare la relativa pagina delle opzioni di MT4. Ovviamente a mercati fermi non ho potuto fare test (l'EA eseguito nel Tester Strategia non è in grado di inviare mail o notifiche) ma lunedì lo verificherò.
L'EA allegato al post precedente funziona. Le notifiche vengono inviate regolarmente. Va da sé, che i segnali inviati sono solo un test per verificare la funzionalità della SendNotification().
Seguendo un suggerimento di Matteo, ho prepatato un Expert, analogo a quello segnalato da Marcellina (Indicatori MT4) per "misurare" in qualche modo le prestazioni del proprio broker in fase di invio ordini. La misurazione lascia un po' il tempo che trova perché non sempre le prestazioni dipendono esclusivamente dal server a cui si inviano ordini (tempi di latenza, matching della controparte, o ritardi indotti) ma possono essere influenzate, e non poco, dallo stato della propria connessione internet. Pertanto, la misurazione è quella che è: semplicemente il tempo trascorso tra l'invio e la conferma dell'ordine. Ciascuno deve farsi il proprio esame di coscienza (o meglio, della propria linea ADSL) e prendere quel dato con le pinze.
L'Expert misura il tempo di invio, modifica e cancellazione degli ordini, oltre a calcolarne il tempo medio e a riportare alcune informazioni utili sul broker che si sta utilizzando: spread, dimensione minima del contratto e incremento minimo (alcune volte, queste due ultime grandezze non coincidono).
L'expert invia ordini BUY_STOP e SELL_STOP a una distanza di 500 pip dal prezzo corrente e immediatamente dopo li cancella. Pertanto non c'è alcun rischio (diciamo che è tendente allo 0) che l'ordine venga intercettato ed eseguito: può essere perciò usato anche in real in tutta tranquillità. (Non fate caso agli ordini BUY presenti sul grafico, derivano da un altro EA che stavo testando )
Per utilizzare l'expert,
scaricate lo zip e decomprimetelo in un cartella temporanea (o sul desktop)
copiate il file CheckMyBroker.mq4 nella cartella \expert della vostra piattaforma MT4
copiate il file InfoPanel.mq4 nella cartella \expert\indicators della vostra piattaforma MT4
riavviate Metatrader
aprite un chart piuttosto vispo (EURUSD, GBPUSD) e trascinate l'expert sul chart.
Dovreste ottenere un risultato simile all'immagine in allegato.
La cosa interessante sono invece alcune soluzioni che ho adottato per la visualizzazione delle informazioni durante il funzionamento dell'expert. Ma di questo ne parlerò più diffusamente in un prossimo post.
skipper4x
(segue....)
Matteo ... è di questo che mi parlavi quando parlavamo di connessione internet lenta ??
Disclaimer: Trading foreign exchange on margin carries a high level of risk, and may not be suitable for all investors. The high degree of leverage can work against you as well as for you. Before deciding to trade foreign exchange you should carefully consider your investment objectives, level of experience, and risk appetite. The possibility exists that you could sustain a loss of some or all of your initial investment and therefore you should not invest money that you cannot afford to lose. You should be aware of all the risks associated with foreign exchange trading, and seek advice from an independent financial advisor if you have any doubts. Any opinions, news, research, analyses, prices, or other information contained on this website is provided as general market commentary and does not constitute investment advice. Forex Capital Markets LLC. will not accept liability for any loss or damage, including without limitation to, any loss of profit, which may arise directly or indirectly from use of or reliance on such information.