English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Come ordinare un Expert Advisor e ottenere il risultato desiderato

Come ordinare un Expert Advisor e ottenere il risultato desiderato

MetaTrader 5Trading | 11 gennaio 2022, 15:01
406 0
Andrey Khatimlianskii
Andrey Khatimlianskii


Introduzione

Il trading automatizzato sta guadagnando un nuovo slancio: il rilascio di MetaTrader 5, con il nuovo MQL5, è completo. Ha superato con successo l’ Automated Trading Championship 2010 e la nuova versione della piattaforma di trading viene attivamente promossa dai broker. Il predecessore di MetaTrader 5, - MetaTrader 4 - è ancora attivamente utilizzato da centinaia di broker e da milioni di trader nel mondo.

Nonostante tale popolarità (o meglio, a causa di ciò), il livello professionale del trader medio sta diventando più basso - come in qualsiasi altra area, la quantità raramente diventa qualità. Se consideriamo il trading automatizzato (la connessione tra trading e programmazione), la situazione è ancora peggiore - pochissimi trader hanno una laurea in programmazione informatica e, per la maggior parte delle persone, anche per chi ha una mente tecnica, la padronanza della programmazione può essere molto impegnativa. Inoltre, non dobbiamo dimenticare coloro che semplicemente non sono interessati alla programmazione. Dicono: "Dobbiamo fare ciò che sappiamo fare meglio" e non posso non essere d'accordo con loro.

Tutto ciò ci porta gradualmente all'argomento del nostro articolo. C'è domanda per i servizi di programmazione di MetaTrader e questa domanda continua a crescere. Dove c'è domanda, c'è offerta - questa è la legge del mercato. In effetti, ci sono abbastanza trader che vogliono automatizzare la loro strategia e programmatori che vogliono guadagnare i soldi. Ma, purtroppo, la loro comunicazione non sempre si traduce in un vantaggio reciproco - ci sono tantissimi clienti insoddisfatti, così come programmatori che sono stanchi di spiegare i concetti.

Questo articolo tratta i problemi che possono sorgere durante la comunicazione tra "Cliente - Programmatore". Innanzitutto, è destinato ai trader - a loro spesso manca l'esperienza nel trattare con persone di una diversa struttura mentale. Ma non c'è dubbio che per i programmatori questo articolo sarà molto utile - una relazione ha sempre due facce e il successo della joint venture dipende ugualmente da entrambi.


Contenuto

  1. Verifica dell'idea
  2. Sbarazzarsi delle illusioni
  3. Determinare gli obiettivi
  4. Sincronizzare i vocabolari
  5. Preparazione delle specifiche dei requisiti
  6. Selezione del Candidato/dello Sviluppatore
  7. Proteggiti dagli imbrogli
  8. Controllo dei risultati
  9. Feedback


1. Verifica dell'idea

Verifica dell'ideaLa maggiore causa comune di frustrazione del cliente è la perdita della sua strategia. Quando si tratta di un sistema di trading completo, piuttosto che di un Expert Advisor semiautomatico o indicatore, il trader si aspetta un'unica cosa dall'Expert Advisor - un trading di profitto.

E così ottiene la tanto attesa lettera dal programmatore, lanciata dal client terminal, inizia il test... e vede come la sua brillante idea porta alla perdita del deposito. Verifica nuovamente i parametri, aggiorna i dati cronologici... e ancora una volta assiste alla perdita di deposito. Alcuni trader iniziano subito a scrivere una lettera arrabbiata al programmatore (ovviamente è da biasimare!) e quelli più pazienti testano i risultati e cercano di capire qual è il problema. Ma questo non cambia i fatti: l'idea in cui credevano si è rivelata non redditizia.

Successivamente, ci sono una serie di diverse opzioni possibili. Alcuni incolpano il programmatore di essere maldestro e, senza pagare per il lavoro, iniziano a cercarne un altro. Altri iniziano febbrilmente a cercare di capire come risolvere la situazione e chiedono di apportare "alcune piccole modifiche" (ovviamente gratuitamente perché sono così piccole!). Giustamente, dovrei notare che ci sono anche clienti che accettano il loro errore come concesso e non spostare la responsabilità sul programmatore. Ma questo capitolo non è stato scritto per loro che hanno un buon senso di autocritica.

Queste sono solo le conseguenze, non ha senso smontarle, ha molto più senso trovare ed eliminare le cause del problema. Il problema è che il trader è troppo pigro per controllare la sua idea. Per farlo, è necessario scegliere un intervallo arbitrario di dati cronologici e attentamente, giorno dopo giorno, osservare come la strategia funzionerà e quale sarà il risultato. Si fa più facilmente e velocemente nella modalità visiva di test (sono sicuro che questo sarà presto disponibile su MetaTrader 5), ma il test può anche essere fatto in tempo reale - una settimana o due di lavoro su un conto demo .

In realtà, non tutte le strategie possono essere testate sui dati cronologici. Lo so per esperienza personale che il controllo di alcune idee può richiedere davvero molto tempo. Capisco che a volte è più facile pagare per un Expert Advisor che sedersi per ore con una matita sopra i grafici. Ma tieni presente che il risultato può essere una sorpresa molto spiacevole quando invii un'idea non testata per l'implementazione!

Ricorda! Il programmatore non è responsabile per la redditività della tua strategia, il suo compito è quello di scrivere un programma che funzionerà con l'algoritmo che hai approvato.

A volte il programmatore può dirti i punti deboli del tuo sistema (non sei il primo ad averlo fatto), ma si basa solo sulla sua buona volontà. Non è obbligato a proteggerti da errori o consultarti e, certamente, non è responsabile del controllo della tua idea gratuitamente. Quando ordini un EA, o devi avere piena fiducia nella tua strategia o capisci che questo è solo un tentativo ed è improbabile che il risultato ti stordisca con la sua esclusività.

Quindi, la nostra conclusione intermedia è che è meglio controllare la strategia per un certo numero di volte prima di ordinarne l'implementazione.


2. Sbarazzarsi delle illusioni

Il cubo impossibile di Escher Vediamo solo quello che vogliamo vedere. E vogliamo uno yacht, un'isola nel Pacifico e una valigia piena di soldi. Guardiamo i grafici e vediamo solo i segnali indicatori di successo. Chiudiamo gli occhi e contiamo mentalmente il numero di zeri nel saldo del nostro conto ... E il programma funziona solo in base all'algoritmo ed espone le nostre illusioni.

Le cause della seconda delusione più grande e più frequente sono la confusione e l’autoinganno. Se decidi di fare il primo passo e controlla re la tua idea, prendi il processo in modo critico. Molte delusioni possono essere evitate in questa fase: basta provare a rimuovere gli occhiali appannati e guardare la strategia in modo sensato.

Una situazione molto comune: hai letto su Internet (su un forum, blog, un libro online ) di una strategia e hai deciso di creare un Expert Advisor apposito. Hai guardato i grafici, stimato la correttezza dei calcoli e pensato - "Bene, finalmente, eccolo qui - il Graal!". La situazione è peggiorata dal download (o, Dio ce ne scampi, dall'acquisto) di questo super indicatore con cui funziona la strategia - ora hai l'illusione che il 90% del compito sia già stato completato e che ci sia poco da fare.

Se la metà di voi a questo punto si ponesse una semplice domanda: "Perché questa strategia si trova su un pubblico dominio?" (o, nel caso di un acquisto, "perché è l'autore a vendere invece di usarlo?"), avrei esattamente la metà del numero di clienti che ho adesso... Ma noi crediamo nei miracoli e non ci persuadiamo del contrario! Va bene, non lo farò. Ma cosa ti impedisce di controllare ciò cui stai spendendo i tuoi soldi?

Ecco alcune regole che ti aiuteranno a evitare di cadere nella trappola delle tue illusioni o delle cattive intenzioni di qualcun altro. Potrebbero non risolvere tutti i possibili problemi, ma ti risparmierà gli errori più comuni.

  1. Sii molto scettico sugli indicatori senza un codice sorgente!
    • Sarai solo in grado di capire leggermente come funzionano, e nessuno sarà in grado di garantire l'immutabilità del loro comportamento in futuro.
    • Possono contenere qualsiasi cosa, dagli errori di codifica che portano al ridisegno di vecchi segnali o il comportamento inappropriato quando si lavora su determinati strumenti o tipi di account a un inganno deliberato (disegno di già noti segnali di successo sui dati cronologici) o una semplice restrizione sul tempo di lavoro o numero di conto.

    Anche se non capisci assolutamente la programmazione, puoi sempre chiedere a un programmatore che conosci di "esaminare" il programma, solo per essere sicuro, o direttamente prima di ordinare l’Expert Advisor.

  2. Osserva il lavoro degli indicatori in tempo reale!
    • Senza sapere come funziona l'indicatore online, non ha senso considerare i suoi segnali nella cronologia: potrebbe semplicemente essere un’immagine carina (ma, sfortunatamente, inutile) .
    • Praticamente tutti gli indicatori possono modificare il valore sull'ultima (non incompleta) barra: questo è normale. Deve essere chiaro che sulla cronologia (sulle barre formate ), queste modifiche non sono visibili e i dati dell'indicatore sono tracciati alle barre completate. Significa che i segnali (frecce, crossover di linee di indicatore/prezzo) possono essere utilizzati nel sistema (per aprire una posizione) solo alla barra successiva dopo la sua comparsa. Se cerchiamo di utilizzare i segnali (senza attendere la chiusura della barra), durante il test dell'Expert Advisor si scoprirà che c'erano molte frecce e crossover (e quindi posizioni aperte), ma al momento della chiusura della barra, la maggior parte è scomparsa. Vedrai la posizione sul grafico, ma non il segnale corrispondente, visibile solo quando si traccia la formazione della barra.
    • Alcuni indicatori possono modificare il valore, non solo per l'ultimo, ma anche per diverse barre precedenti. A volte questo ha causato l'essenza dell'indicatore (ad esempio, per la formazione di un frattale ci devono essere 2 barre alla sua destra e l'ultima sezione dello ZigZag può essere ridisegnata a lungo, fino a quando non sono soddisfatte le condizioni di una nuova sezione), ma spesso tale comportamento è la prova di un inganno deliberato - molti indicatori sono creati solo per il bellissimo disegno sui dati cronologici (al fine di venderli ) ed è praticamente impossibile usarli nel trading.

      Se l'indicatore mostra nella cronologia i segnali di acquisto ai minimi più bassi e per vendere ai vertici, ciò non indica che questo sia un ottimo indicatore ma, al contrario, che stia "predicendo il passato".

    • Non è necessario sedersi e guardare per ore il grafico online - molti indicatori possono essere testati in modalità di test visivo. Ma comunque, il modo più affidabile di testare è eseguirlo su un account demo e monitorarlo. Puoi allegare l'indicatore al grafico, attendere un po 'e allegarlo di nuovo (con gli stessi parametri): se è "reale" (non utilizza il ridisegno dei valori precedenti), allora l'immagine su entrambe le copie dell'indicatore deve essere identica. Se la nuova copia dell'indicatore mostra segnali diversi, è inutile analizzare i suoi segnali sulla cronologia.

  3. Controlla la strategia su diversi intervalli della cronologia!
    • Capita spesso di scegliere inconsciamente un intervallo molto conveniente (per il proprio sistema) per i test. Che si tratti dell'ingresso dal segnale dell’ indicatore, una griglia di ordini o un riconoscitore di pattern, ci sarà sempre un intervallo su cui la strategia farà soldi. Ma quando testerai l'Expert Advisor su tutti i dati cronologici disponibili, vedrai subito il più infruttuoso degli intervalli. Cerca di trovarli tu stesso.
    • Seleziona alcuni intervalli casuali della cronologia. Ad esempio, prendi gennaio 2008, ottobre 2009 e agosto 2010 - scansionali con i tuoi occhi e calcola il rapporto di segnali redditizi e perdenti. Prova a guardare la qualità dei segnali su altri strumenti e intervalli. Se l'idea ha un nucleo, è molto probabile che funzionerà in altre condizioni (possibilmente con parametri dell'indicatore leggermente modificati o livelli di stop ).
    • Non modificare i parametri di sistema per un singolo controllo. Se guardando agosto utilizzerai determinati parametri indicatore e, dopo esserti spostato a settembre, prenderai altri parametri (che si adattano meglio), ti stai semplicemente ingannando. Il controllo deve essere fatto nelle stesse condizioni, altrimenti vedrai solo quello che vuoi vedere. Non sto dicendo che i parametri di sistema debbano rimanere sempre gli stessi, ma se vuoi cambiarli "al volo", devi pensare ai criteri per il loro cambiamento. È sempre semplice trarre conclusioni sulla storia, ma cosa succederà in futuro?
    • Trova l'intervallo più complicato della cronologia per la strategia e testa il sistema su di esso. Tattiche molto comuni: l'uso dei canali e l'attesa del movimento all'indietro, spesso sostenuto dal raddoppio del lotto all'apertura di posizioni successive, funziona alla grande per alcuni intervalli della cronologia. Ma il mercato ha movimenti a lungo termine nel canale e forti tendenze ed entrambi i sistemi portano periodicamente alla perdita del deposito. Trova l'intervallo che sarà più pericoloso per il tuo sistema (lungo e piatto per una tattica di guasto e un forte movimento a senso unico per le tattiche basate sul movimento all'indietro) e osserva i problemi quando fai trading su questo intervallo.

      E non dimenticare che in futuro potresti vederne uno ancora più lungo e piatto e un movimento di tendenza ancora più estremo perché il mercato è in continua evoluzione. Riserva sempre un "margine di sicurezza".

  4. Considera il costo degli overhead (spread, swap, commissioni, requisiti di margine, autorizzazioni minime per l'installazione degli ordini)!
    • Per la maggior parte delle strategie a lungo termine, tutte queste spese non sono importanti dal momento che un errore di alcuni punti è irrilevante per loro. Ma la tendenza di sviluppo del trading automatizzato ha dimostrato che sempre più strategie vengono sviluppate con piccoli profitti e un trading ad alta frequenza, mentre l'aumento dello spread di 2 punti o un livello di Stop di 10 punti possono diventare abbastanza evidenti.
    • Ricorda che tutti i grafici MetaTrader (la 4a e la 5a versione) vengono creati utilizzando il prezzo Bid, mentre l'apertura della posizione long e la chiusura delle posizioni short sono eseguite dal prezzo Ask. Quando fai trading nella tua mente, tenere in considerazione la diffusione è scomodo, ma possiamo sempre prendere il risultato totale del trading e sottrarre da esso il numero di operazioni moltiplicato per lo spread: ciò avvicinerà i risultati alla realtà.
    • Quando analizzi la cronologia, non dimenticare che anni fa le condizioni di trading erano molto diverse. Il grafico "soffice" del 1999 è ideale per le strategie di scalping se facciamo trading utilizzando lo spread corrente. Ma nel 1999 lo spread era 3-4 volte più grande! Dei profitti che hai praticamente guadagnato, non ci sarà più nulla se sottraiamo lo spread reale di quel periodo di tempo da ogni transazione. La situazione è analoga anche ad altre condizioni: qualche anno fa, la leva finanziaria maggiormente disponibile era di 1:100 e la distanza per piazzare un ordine in sospeso è stata misurata in decine di punti.
    • Ricorda che le condizioni di trading possono cambiare (ovviamente, in peggio) in base ai comunicati stampa e che l'esecuzione degli ordini può essere ritardata e avere slittamenti. Non inventare "un brillante sistema di notizie" sulla cronologia, prova a testarlo almeno sul conto micro-reale. La tua visione del sistema cambia notevolmente se stai stimando uno spread di 2 punti e un'esecuzione istantanea, ma la posizione viene aperta dopo 5 secondi con uno slittamento di 10 punti e lo spread si allarga così tanto che è difficile chiudere la posizione almeno senza perdere.
    • Abbi sempre un "margine di sicurezza" in relazione alle condizioni di trading. Se il tuo sistema si "guasterà" dalla minima variazione dello spread o per un ritardo dell'apertura di una posizione di pochi secondi, è improbabile che sopravviva nella "vera lotta".

      Ricorda che lo spread è la ragione per perdere il deposito per la maggior parte delle strategie, cioè la scelta della direzione dell'operazione con probabilità di correttezza vicina al 50%, quindi prova a migliorare la strategia il più possibile, così lo spread non influenzerà molto il risultato.

Se credi ancora fermamente nel tuo sistema dopo tutti i controlli e hai ancora il desiderio di automatizzarlo, allora possiamo andare oltre.


3. Determinare gli obiettivi

Determinare gli obiettivi Ti sei mai chiesto perché hai bisogno di un Expert Advisor? Vuoi solo controllare la tua idea nello Strategy Tester? O, forse, vuoi provare una strategia pronta su un conto micro-reale ? No, lo so - hai fatto trading sul tuo sistema per 2 anni e avvierai immediatamente l'Expert Advisor su un conto reale con un deposito di 100 000 $.

Queste domande apparentemente inutili sono poste molto raramente. In generale, è comprensibile che le risposte riguardino solo alcune piccole cose: i dettagli dei requisiti tecnici, la scelta del Richiedente/dello Sviluppatore e, forse, il costo del lavoro. Ma se ci pensi, la differenza tra i diversi approcci può essere molto sostanziale.

Nella maggior parte dei casi, al programmatore non importa se scrivere l'Expert Advisor per lo Strategy Tester (con un minimo di controlli e senza gestione delle eccezioni) o per il trading reale. Se scrive in MQL da molto tempo e non riceve nessuna lamentela sulla stabilità dei suoi programmi, allora avrà sicuramente una base per l'implementazione di qualsiasi algoritmo e non ci saranno differenze negli approcci alla scrittura della versione dello Strategy Tester o per un conto reale.

Ma anche se sei abbastanza fortunato da lavorare con una persona del genere, sentirai la differenza quando si redigono i requisiti tecnici.

Lascia che spieghi con un esempio:

  1. Situazione numero uno: devi semplicemente testare un'idea (che hai trovato / sentito / letto da qualche parte). Significa che:
    • Non abbiamo intenzione di eseguirla su un conto reale - tutti i tipi di controlli e la gestione delle eccezioni non sono necessarie.
    • L'Expert Advisor sarà attivamente testato e ottimizzato - abbiamo bisogno di raggiungere massime prestazioni (magari a scapito della robustezza).
    • Molto probabilmente, dopo aver controllato la prima versione, avrà bisogno di un perfezionamento - un Expert Advisor deve essere facilmente esteso ed espandibile.
    • I "colli di bottiglia" dell'algoritmo (impostazione degli ordini alle distanze minime consentite, la sequenza delle posizioni di apertura e chiusura, l'aggiramento delle limitazioni del lotto massimo, il riavvio del lavoro dopo le disconnessioni, ecc.) non devono essere elaborati, perché non sappiamo quali di essi manterranno la loro rilevanza nella versione finale.

  2. Situazione numero due: la strategia è pronta, hai bisogno di un valido Expert Advisor per il conto reale. Differirà dalla versione precedente nella seguente maniera:
    • Tutte le operazioni di trading devono essere il più corrette possibile, non solo i valori dei parametri definiti dall'utente devono essere testati, ma tutti i valori vengono calcolati durante il processo di lavorazione (dimensione del lotto, livelli di ordini stop, ecc.).

      La "qualità" delle richieste di trading influisce direttamente sulla "relazione" del server con il tuo account - se il server è bombardato da ordini di trading errati, potrebbe bloccare facilmente l'account e perderai il controllo della situazione.

      In caso di errore critico, è necessario farlo sapere all'utente (tramite un messaggio sullo schermo, un'email, Skype, ICQ o via SMS).
    • La robustezza del prodotto, al contrario della velocità delle sue prestazioni, è portata in primo piano - se qualche controllo aggiuntivo aiuterà a prevenire un possibile errore, dovrà essere incluso nell'Expert Advisor. Anche se rallenta il test e l’ottimizzazione (quando si lavora in tempo reale, la velocità di esecuzione è spesso non palpabile).
    • I miglioramenti futuri, anche se necessari, sono minori. Pertanto, non vengono specificati determinati requisiti per la facilità di estensibilità.
    • Tutti i "colli di bottiglia" dell'algoritmo devono essere pensati in modo esaustivo e accuratamente elaborati. Ci devono essere un minimo di situazioni in cui può verificarsi un errore (non saremo in grado di provvedere a tutti loro, purtroppo):
      • L'Expert Advisor deve essere in grado di ripristinare il suo normale lavoro dopo una disconnessione temporanea, una riconnessione all'account o un ripristino del client terminal.
      • Se non è possibile impostare gli ordini in sospeso o di stop, si devono tracciare virtualmente e, quando viene raggiunto il prezzo dei loro livelli, eseguirli sul prezzo di mercato.
      • Se non riesci ad aprire una posizione sui prezzi di mercato all'interno di N tentativi, il massimo slittamento consentito deve essere aumentato.
      • All'attivazione di un ordine in sospeso o di stop per un livello non fornito dall’algoritmo e con slippage (ad esempio, con un divario di prezzo), i livelli di tutti gli ordini dipendenti devono essere regolati (e, forse, anche i loro volumi).
      • Tutte le funzioni che operano sulla dimensione del deposito (ad esempio, il calcolo del lotto), devono normalmente accettare le operazioni non di trading con un saldo (saldo del prelievo).
      L'elenco può andare avanti a lungo. Ci sono una quantità infinita di sfumature e ogni strategia ha anche i suoi dettagli.
    • Inoltre, ci sono requisiti aggiuntivi: l'Expert Advisor deve lavorare bene con diversi broker, prendere in considerazione l'elenco degli strumenti disponibili, le loro specifiche e altre impostazioni del server (il numero massimo di ordini in sospeso, i livelli di Stop Out, la possibilità di aprire le posizioni/gli ordini in direzioni opposte [solo per MetaTrader 4] e così via).
  3. E la situazione numero tre: sei davvero pronto a lanciare l'Expert Advisor su un conto reale con un deposito di 100 000$. Cambierà qualcosa a confronto con le versioni precedenti per un conto reale? Tutto dipende dalla tua paranoia (scusa, intendevo dire dalla tua lungimiranza):
    • Non ci sarà assolutamente nulla di male nel creare più file di registro e nel salvare regolarmente le schermate dei grafici, anzi possono diventare molto utili nell'analisi di un problema o una controversia.
    • Se si prevede di eseguire un Expert Advisor sul server dedicato, è possibile prevedere la possibilità di controllo/correzione del proprio lavoro con un'altra copia (in esecuzione parallela). Ad esempio, è possibile eseguire contemporaneamente un Expert Advisor sul server dedicato e a casa, dove la copia "domestica" deve essere in grado di prendere il controllo della situazione in caso di disconnessione della copia "server" per 5 o più minuti.
    • Se non è possibile monitorare costantemente il lavoro dell'EA, è possibile implementare un rapporto orario (o giornaliero) sullo stato attuale del conto e sulla situazione di trading. Le notifiche di errori critici devono essere presenti in ogni caso.
    • Se vuoi essere in grado di controllare il processo di trading, anche quando hai solo un telefono, è possibile implementare un "feedback" - la possibilità di inviare all'Expert Advisor i comandi via SMS, email, Skype, ICQ o impostando ordini in sospeso (con descrizione dei comandi nei commenti).

Bene, noti la differenza? E questo è solo uno sguardo al metodo, ognuno di questi elementi può pensare fino in fondo ed estendersi all'infinito. E ci sono tanti dettagli che non abbiamo ancora menzionato!

Dopo aver esplorato i dettagli, diventa chiaro pensare che i dettagli dell'algoritmo dipendono in realtà dallo scopo dell'Expert Advisor e dalle esigenze del cliente.

Non ci si può aspettare dal programmatore una pari qualità di implementazione di tutte le sfumature: tali standard di qualità, purtroppo, non esistono ancora. Pertanto, determina a cosa serve l'Expert Advisor, pensa a come deve comportarsi in diverse situazioni e assicurati di menzionarlo nei requisiti tecnici.

La gestione standard di errori semplici verrà aggiunta (riquotazioni, arresti non validi, ecc.) da qualsiasi sviluppatore di EA che si rispetti. Ma non è garantito che questo " comportamento standard" sarà adatto alla tua strategia specifica.

Ad esempio, non è sempre il modo migliore per impostare il livello di Stop Loss alla minima distanza consentita se è impossibile impostarla al livello calcolato - gli altri ordini o la perdita massima della serie continua di posizioni può dipendere da questo. Quindi, ancora una volta, se sei sulla strada per creare un EA per un conto reale, considera una quantità massima di scenari nella fase di preparazione del tuo lavoro.

Puoi sempre chiedere al programmatore di preparare un elenco di possibili situazioni e di sviluppare un algoritmo della loro gestione. Ma non dimenticare che l'analisi e il perfezionamento della tua strategia, così come la creazione dell'algoritmo, non sono direttamente relativi alla scrittura dell'Expert Advisor. È una parte separata del lavoro e il suo risultato non è il codice dell’Expert Advisor, ma il testo dell'algoritmo. Alcuni possono tranquillamente e ragionevolmente richiedere un pagamento extra per questo lavoro, dal momento che si sta investendo il proprio tempo e tu stai comunque ottenendo, anche se intermedio, un risultato e puoi rivolgerti a un altro programmatore con questo algoritmo.

E non dimenticare che non tutti i programmatori hanno esperienza con il lavoro su conti reali di trading. Fondamentalmente, potrebbero semplicemente non essere consapevoli di tutte le possibili sorprese. Beh, probabilmente non c'è una sola persona che abbia lavorato con tutte le società, con tutti i tipi di conti, con tutti gli strumenti possibili e in tutte le diverse condizioni di mercato. Condividi le tue esperienze (se presenti), chiedi al programmatore di condividere la sua esperienza, ma non pensare di essere assicurato contro tutte le sorprese. Questo, purtroppo, non è realistico.

Ci siamo avvicinati alla parte più critica: la preparazione dei requisiti, ma non prima di fare una piccola deviazione.


4. Sincronizzare i vocabolari

Prima di iniziare un dialogo, cerca di capire con chi comunicherai. "Dall'altra parte" c'è una persona completamente diversa e la sua conoscenza potrebbe essere molto diverso dalla tua.

Fino a quando non "sincronizzi i vocabolari" (trovare un linguaggio comune, definire i termini), il movimento verso un obiettivo comune può essere spiacevole e difficile. Le cose secondo te elementari possono causare tanta confusione che lo sviluppo di un semplice Expert Advisor può facilmente trasformarsi in molti giorni (o addirittura settimane) di accertamento della relazione.

Facciamo una piccola deviazione.

Immagina di dover cambiare il rubinetto. Chiami un idraulico e dici: "Mi si è rotta una cosa con cui mi lavo la faccia! Ne voglio una nuova che posso girare con una mano". Sembra sciocco, vero? Ma, credetemi, alcuni dei compiti inviati dai trader sembrano ancora più sciocchi!

Ora prova a metterti al posto di questo idraulico. Sì, ha capito approssimativamente cosa sta succedendo, ma non può fare nulla per questo "compito". E solo un telepatico capirà davvero che tipo di rubinetto vuoi.

Proviamo in modo diverso. Chiami e dici: "Ho bisogno di un nuovo rubinetto nel mio bagno. Il diametro dei tubi per l'acqua calda e fredda è di 13 mm, la distanza del tubo alla base del lavandino è di 20 cm. La regolazione della pressione e della temperatura dell’acqua deve essere possibile attraverso una maniglia. È preferibile poter scegliere tra diversi modelli."

Bingo! Ora l'idraulico sa che: a) hai bisogno di una maniglia del rubinetto; b) deve avere due valvole e una maniglia singola; c) dovrà collegare un tubo con una lunghezza di 20-25 cm e un diametro di 13 mm. Quando arriverà a casa tua, sarà in grado di fornirti alcune soluzioni tra cui scegliere e svolgere rapidamente il suo lavoro.

Molti programmatori che scrivono in MQL, sono davvero esperti nel trading - più comunicano con i clienti e programmano Expert Advisor, meglio capiscono la diversità degli approcci all'analisi. Inoltre, molti di loro sviluppano strategie per se stessi, e così hanno anche studiato letteratura di trading e partecipato ai forum tematici.

Ma non pretendere troppo da loro! La frase "allungare la fibo-griglia sugli ultimi 2 frattali" che usi nella vita di tutti i giorni può portare un tecnico inesperto a una situazione di stallo. Finiscilo con la frase comunemente usata "dopo l’attivazione del lock..." o "all'apertura di Londra, imposta le fermate al livello break-even" e il cliente è pronto - ti saranno garantite lunghe ore di domande e chiarimenti.

Non sto dicendo che il comune "MA" deve essere chiamato "indicatore tecnico con una media mobile con un periodo di levigatura di 36". Non è richiesto alcun fanatismo! Ma cerca sempre di ricordare che la persona con cui stai parlando ha un bagaglio di conoscenze e una visione diverse.

Come risultato intermedio, alcuni suggerimenti:

  1. Spiegati con parole semplici e comprensibili, senza usare abbreviazioni e gergo.
  2. Utilizza una terminologia comune. Se non sai come chiamare uno strumento o un evento, non esitare a utilizzare la formulazione di un riferimento o di un libro di testo.
  3. Spiega le cose in modo approfondito e dettagliato. Parla anche di ciò che consideri ovvio. Molto spesso, si scopre che è ovvio solo per te!
  4. Infine, assicurati che l'altra persona ti capisca. Poni domande tendenziose o chiedigli di formulare il compito con parole sue - assicurati di star parlando delle stesse cose.

Cari colleghi e scrittori di EA! Se avete erroneamente pensato che quanto sopra si riferisca solo ai trader, mi affretterò a deludervi! Noi, in quanto persone tecnicamente competenti, siamo responsabili della correttezza dell'intero processo di lavoro. E noi, in misura maggiore, siamo responsabili del suo successo.

Pochissimi trader sono in grado di formulare il compito in modo accurato e corretto - questo è un dato di fatto. Nei sei anni della mia esperienza di scrittura EA, ricordo solo due clienti i cui compiti erano davvero sbalorditivi: si trattava si programmi già pronti che semplicemente dovevano essere trasferiti in MQL. Molte altre persone sono state etichettate come "capiscono ciò che vogliono" e "sono in grado di esprimere i loro pensieri" - dopo aver letto i loro algoritmi, ho capito chiaramente come avrebbero funzionato i programmi futuri. Ma la maggior parte dei clienti è fatta di trader principianti, spaventati non solo dalla necessità di descrivere chiaramente le azioni dell'EA, ma della parola "algoritmo".

Sii un po' uno psicologo: determina il livello del tuo partner e usa il corrispondente dei suoi termini e concetti (al suo livello). Non buttargli addosso il tuo intelletto , sii indulgente. Se possibile, sbarazzati di tutte le sfumature di programmazione durante la discussione: la persona non ha assolutamente bisogno di sapere cos'è un ciclo, dove inizia la numerazione delle barre e in quali condizioni la funzione che salva le informazioni di ordinazione nel file viene eseguita.

Questo non significa che si deve parlare al cliente come a un bambino e che al minimo segno di disaccordo l'EA deve essere riscritto. Assolutamente no! Ma cerca di diventare per lui non solo un buon tecnico, ma anche un piacevole conversatore - sicuramente lo apprezzerà.

Abbiamo finalmente raggiunto la parte più critica: la realizzazione dell'algoritmo. Bene, iniziamo!


5. Preparazione delle specifiche dei requisiti

Preparazione del compito

Tuo cugino, che non ha nulla a che fare con il trading, sarà in grado di fare trading sul tuo sistema solo con il tuo algoritmo già preparato.

Questa frase classica, modificata solo un po', dimostra molto chiaramente le qualità principali delle buone specifiche tecniche:

  1. Questo compito dovrebbe essere completamente autosufficiente (comprensibile a una persona che sconosce totalmente il tuo sistema).
  2. Il compito deve essere il più dettagliato possibile (comprensibile anche a un inesperto in materia di trading).

Quanto è categorica ed esagerata la frase "non ha nulla a che fare con il trading". In effetti, sarà difficile spiegare a una persona le basi del trading e l'utilizzo del terminale di trading, oltre all'essenza del sistema. Mi permetterò di passare ancora una volta a una frase classica:

Tuo cugino, che ha installato MetaTrader solo due mesi fa e che ha fatto trading solo su conti demo per tutto questo tempo .... il resto lo sappiamo.

Ma questo non cambia l'essenza! Se dai il tuo algoritmo a dieci diversi persone e chiedi loro di fare trading sul tuo sistema, devono ottenere assolutamente risultati identici . Quanti di voi possono vantarsi di tale esperienza?


5.1. Da dove cominciamo?

Partiremo dall'inizio. Descrivi l'idea generale, racconta cos'è che vuoi ottenere. Non dimenticare i tuoi obiettivi e requisiti per il programma: possono essere formulati ora.

Avendo un'idea generale su di te e sul tuo sistema, il programmatore può valutare la serietà delle tue intenzioni e ere la quantità approssimativa del lavoro.

Alcuni esempi:

Abbiamo bisogno di un indicatore per MetaTrader 4. Il compito - disegnare un grafico invertito di una coppia di valute arbitraria nella sotto-finestra del grafico principale. L'indicatore deve funzionare su virgolette a 4 e 5 cifre e con nomi di simboli non standard (ad esempio, EURUSDFXF).

Abbiamo bisogno di un Expert Advisor per MetaTrader 5. Facendo trading su una valuta unica, la voce segnale si basa sull'indicatore personalizzato (il codice è allegato). Chiusura delle posizioni - da SL, TP e da un segnale inverso. Tutte le posizioni sono accompagnate da uno stop trailing basato su un altro indicatore (è disponibile anche il codice). Il lotto è calcolato in percentuale del saldo.
E' necessario finalizzare l'Expert Advisor (MetaTrader 4) per lavorare su un vero e proprio account - effettuare tutti i controlli necessari, ripristinare il normale funzionamento dopo una connessione fallimentare, aggiungere alcuni tentativi per aprire una posizione con un errore e forse qualcos’altro - a tua discrezione.
Abbiamo bisogno di un EA per testare una strategia per violare un canale. Determina i bordi del canale dall'indicatore; l'ingresso sul mercato da parte degli ordini in sospeso, dopo un’operazione fallimentare - un aumento del lotto con coefficienti specificati. Dovresti specificare anche l'orario di lavoro durante il giorno, quando l'impostazione dei primi ordini è consentita. E così otteniamo il codice per MetaTrader 4.

Questa parte del compito è la meno difficile. Ma, sfortunatamente, spesso questa parte è dove tutto finisce... Non dimenticarlo - è solo un'introduzione, una descrizione dell'idea generale. Per scrivere un programma abbiamo bisogno di molto di più.


5.2. Come formuliamo il compito?

In effetti, l'algoritmo è la parte più importante. È molto difficile da formulare (soprattutto per un non programmatore), e richiede davvero tanto duro lavoro.

Prova a dividere immediatamente l'algoritmo in sottosezioni logiche, non provare a trasmettere tutte le sottigliezze del sistema in una singola frase illeggibile.

Quando si tratta di scrivere l'Expert Advisor, possiamo distinguere le seguenti sezioni logiche (il loro numero e contenuto può variare a seconda della strategia):

  1. Le condizioni generali: l'orario di lavoro (entro quanti giorni, in determinati giorni della settimana), l'ordine di esecuzione (ad esempio, l'inizio del trading con la pressione del pulsante), tutto il necessario per l'analisi della profondità della cronologia e altre condizioni, tutto ciò che è relativo all'intero compito in generale (non ai suoi singoli punti).

  2. Il segnale di ingresso sul mercato (l'apertura della prima posizione o l'impostazione dei primi ordini) si basa su indicatori, determinati modelli di prezzo, semplicemente in tempo o su comando dell'utente. Ciò può includere anche limitazioni al primo ingresso (filtri) - dal tempo, da un altro indicatore, dopo una serie troppo lunga di perdite, durante condizioni di trading inaccettabili, (spread troppo grandi o uno Stop Level), o durante una mancanza di disponibilità di fondi. Il metodo di calcolo del lotto e il livello di Stop Loss e Take Profit devono essere specificati separatamente (se le regole per il calcolo per tutte le posizioni sono uguali, possiamo separarli in una clausola indipendente).

  3. L'elaborazione dell'attivazione dell'ordine in sospeso o SL / TP di una posizione (se necessario). Ad esempio, rimuovendo un ordine Sell Stop quando viene attivato l'ordine Buy Stop, l'impostazione di un ordine Sell Limit aggiuntivo, quando è stato attivato un ordine Sell Limit precedentemente impostato, l'apertura di una posizione per vendere un volume raddoppiato dopo l'attivazione dello Stop Loss, e così via.

  4. I segnali per l'apertura di posizioni aggiuntive (se ci sono posizioni aperte) o per l'impostazione di ordini aggiuntivi (se necessario). Ad esempio, si può fare dal segnale di altri indicatori o al raggiungimento di un determinato profitto di perdita della posizione aperta. Qui, ci devono essere anche le regole di calcolo del lotto, di Stop Loss e Take Profit (se differiscono da quelli sopra descritti).

  5. Il trailing di posizioni e ordini (separatamente - il primo della serie, separatamente - quelli aggiuntivi, o tutti insieme, se le regole sono le stesse). Per esempio, il pulling up di un ordine di stop in sospeso nel mercato (se il movimento dei prezzi va nella direzione opposta), un Trailing Stop della posizione (convenzionale, dall'indicatore o altro), la chiusura parziale della posizione quando si raggiunge un certo profitto, e così via.

  6. Segnali per la chiusura (completa, parziale) o un'inversione di posizione. Le regole per la rimozione degli ordini in sospeso .

  7. Le condizioni generali, come quelle associate allo stato dell'account - la chiusura di tutte le posizioni e l’arresto del lavoro quando è specificato il drawdown, una riduzione dell'uso percentuale del deposito, con l'aumento del saldo a un certo livello e simili. Queste condizioni si applicano al primo punto, ma è più facile da descrivere alla fine (come nell'ordine di utilizzo).

  8. E alla fine, forse sono necessarie alcune informazioni aggiuntive sul grafico, il disegno delle frecce dei livelli di prezzo di apertura/chiusura della posizione, le informazioni dettagliate nel journal, l'invio di email quando si attivano ordini in sospeso e tutto il resto che non è legato al trading, ma è correlato all'interfaccia.

Se stiamo parlando di un indicatore, da un lato tutto è molto più facile - la logica è più primitiva e meno complessa, ma d'altra parte ci sono alcune sottigliezze.

Il compendio è qualcosa del genere:

  1. I dati richiesti: un elenco degli strumenti analizzati (se diversi), la profondità della cronologia di tutti gli strumenti utilizzati e dei tempi, il fuso orario del server di trading.
  2. Il tipo di disegno (linee, frecce di segnale, grafico a candele, sezioni come nello ZigZag, figure di forma geometrica, ecc.).
  3. L'algoritmo per il calcolo del primo valore (il valore sulla barra di sinistra), se è diverso dall'algoritmo principale.
  4. L'algoritmo di base per il calcolo di una singola barra o la descrizione del processo di calcolo, se è difficile ricavare una formula per una barra individuale (come nel caso di uno Zig-Zag, per esempio).
  5. E le cose piacevolmente confortevoli, se necessario: segnali audio, salvataggio di schermate, invio di notifiche all'email, ecc.


Proviamo a passare dalla teoria alla pratica e a ultimare alcuni dei nostri compiti di esempio:

Abbiamo bisogno di un indicatore per MetaTrader 4. Il compito: disegnare un grafico invertito di una coppia di valute arbitraria nella finestra principale del grafico. L'indicatore deve funzionare su virgolette a 4 e 5 cifre e con nomi di simboli non standard (ad esempio, EURUSDFXF).

  1. Nelle impostazioni, specifica il nome dello strumento (il parametro delsimbolo  ), che deve essere visualizzato (ad esempio, "GBPUSD_m"). Se il nome non è specificato, utilizzare il simbolo del grafico su cui è allegato l'indicatore. Se non c'è un simbolo tale nella finestra "Market Watch", è necessario visualizzare una finestra con un messaggio di errore.
  2. L'indicatore deve essere tracciato come delle candele giapponesi. I colori delle candele in crescita e in calo e le ombre (separatamente - la parte superiore e quella inferiore) devono essere progettati come parametri di input.
  3. Il calcolo dei valori OHLC per ogni barra è costituito dalle formule:
    • Open (indicator) = 1 / Open (symbol );
    • Close (indicator) = 1 / Close (symbol);
    • Low (indicator) = 1 / High (symbol);
    • High (indicator) = 1 / Low (symbol).
  4. A tutti i livelli di prezzo "tondi" (1.3200, 1.3300, 1.3400, 1.3500, ...), ovvero i livelli che hanno un multiplo a 4 cifre di 100 punti, è necessario disegnare una linea (stile e colore devono essere progettati come parametri di input).
Questo sarà un po' più difficile con l'Expert Advisor:

Ho bisogno di un Expert Advisor per MetaTrader 5. Facendo trading su una valuta unica, il segnale di ingresso del mercato si basa su un indicatore personalizzato (il codice è allegato). Chiusura delle posizioni - da SL, TP e da un segnale inverso. Tutte le posizioni sono accompagnate da uno stop trailing basato su un altro indicatore (è disponibile anche il codice). Il lotto è calcolato in percentuale del saldo.

  1. Segnale per aprire una posizione - la freccia dell'indicatore iSignalArrow (tutti i parametri dell'indicatore devono essere regolabili):
    • Viene aperta una posizione long se la freccia dell'indicatore punta in alto (sotto il grafico) sull'ultima barra chiusa;
    • Viene aperta una posizione short se la freccia dell'indicatore punta verso il basso (sopra il grafico) sull'ultima barra chiusa;
    • Le frecce sulla barra corrente (non completata) vengono ignorate e solo le barre completate vengono analizzate.
  2. Il volume della posizione è calcolato in percentuale del saldo corrente: Lotto = Saldo/Margine Richiesta * LottoPercento / 100  dove:
    • Saldo — saldo del conto corrente;
    • Margine Richiesto  - il margine necessario per aprire una posizione con una dimensione di 1 lotto;
    • LottoPercento - un parametro di input (la percentuale per il calcolo del lotto).
      Ad esempio, quando il LottoPercento = 5, con una leva 1:100, il lotto per EURUSD (al prezzo corrente di 1,3900) sarà: 10 000 / 1 390 * 5 / 100 = 0.3597
      Il risultato ottenuto è arrotondato dalle solite regole al valore corretto più vicino (fino a 0,36 - se il DC consente lotti con una precisione fino a 0,01 o fino a 0,4 - se il passo del lotto = 0,1).
  3. StopLoss (SL) e TakeProfit (TP) - sono fissi, regolabili in base ai parametri StopLosse TakeProfit:
    • I livelli sono specificati in punti di quotazioni a 4 cifre;
    • I livelli sono calcolati in relazione al prezzo della posizione aperta (il prezzo Ask - per le posizioni long e il prezzo Bid - per le posizioni short);
    • Se il valore è troppo basso, l'arresto deve essere impostato a una distanza minima consentita;
    • Se i valori 0 sono specificati, gli stop non vengono utilizzati.
  4. Tutte le posizioni aperte sono accompagnate dal trailing stop dell’indicatore iTrailingLine (tutti i parametri dell'indicatore devono essere regolabili):
    • Se viene aperta una posizione long e la linea dell'indicatore è sotto il prezzo corrente, lo stop viene spostato al livello della linea dell’indicatore;
    • Se viene aperta una posizione short e la linea dell'indicatore è sopra il prezzo corrente, lo stop viene spostato al livello della linea dell’indicatore;
    • I valori dell'indicatore sono presi dalla barra completata (formata), la barra corrente (incompleta) non viene utilizzata. Ovvero, la modifica non deve avvenire più frequentemente di una volta a barra;
    • Si può spostare l’SL solo nella direzione del profitto della posizione - fino alla posizione long e sotto per la posizione short;
    • Se non è possibile impostare l'SL al livello della linea, deve essere impostato alla minima distanza consentita (ma solo se conforme alla precedente regola di spostamento nella direzione del profitto);
    • La funzione di trailing stop deve essere configurabile (AllowTrailing = true/false parameter).
  5. Se c'è una posizione aperta e c'è un segnale opposto, la posizione aperta deve essere chiusa e ne deve essere aperta una nuova (nella direzione opposta).
    Il calcolo del lotto per una nuova posizione deve essere richiamato dopo la chiusura della posizione aperta.
  6. Varie:
    • Quando si esegue un Expert Advisor, è necessario allegare gli indicatori utilizzati con i parametri specificati;
    • Le informazioni sull'apertura/chiusura delle posizioni e delle modifiche dell’ SL deve essere memorizzato nel Journal;
    • Se ci sono errori, deve stampare un messaggio che descriva l'errore.

In questa forma, l'algoritmo può essere inviato al programmatore - contiene abbastanza dettagli sul sistema e può essere facilmente "tradotto" in MQL. Ma non avere fretta con l’ordine, pensaci fino alla fine.


5.3. Cosa non va dimenticato?

Cosa non va dimenticato? Un programma scritto sulla base di uno di questi algoritmi funzionerà bene in condizioni ideali - in un client terminal separato, con un unico accesso all'account, senza l’intervento dell'utente o di altri programmi.

Un esempio di ambiente simile - uno Strategy tester, non ci sono errori di connessioni perse, posizioni chiuse accidentalmente e altri Expert Advisor di trading. Ma nella vita di tutti i giorni, tali condizioni sono estremamente rare e molto probabilmente il programma opererà con il "mondo esterno".

Dovrai eseguire più copie del programma su simboli diversi o con impostazioni diverse, riavvierai il terminale, farai trading manualmente sul conto o con altri Expert Advisor, connettendoti a diversi account da un unico terminale - tutto ciò può influire sul programma, se l'elaborazione di queste situazioni è chiaramente non fornita dall'algoritmo.

Se il tuo obiettivo ha una scala più ampia del semplice test del programma nello Strategy Tester, descrivi subito le regole di interazione con il mondo esterno:

  1. Come dovrebbe reagire l'Expert Advisor alle posizioni aperte manualmente o ad altri Expert Advisor?
    Di solito le persone scelgono una delle tre opzioni:
    • Ignorare completamente tutte le "altre" posizioni. Se il sistema è autosufficiente, le azioni di trading di altri Expert Advisor o dell'utente non lo influenzeranno .
    • Lavorare solo con posizioni "manuali". Se l'Expert Advisor è progettato per accompagnare le posizioni aperte manualmente, non deve interferire con le posizioni di altri Expert Advisor e, di solito, non apre una posizione propria. Il suo compito è quello di aiutare con il trading manuale (spostare lo Stop Loss, chiudere la posizione con il segnale e così via).
    • Una soluzione più universale è quella di dare all'utente una scelta: lavorare solo con le sue posizioni o accompagnare posizioni che soddisfano condizioni specifiche (per un particolare simbolo o con uno specifico Magic Number).

    Su MetaTrader 5, la separazione delle negoziazioni in "proprie" e "altre" è particolarmente rilevante - il terminale visualizza solo la posizione totale del simbolo, anche se è stato "raccolto" dalle offerte di diversi Expert Advisor. L'implementazione di una contabilità completa delle operazioni (per il normale funzionamento di più EA su un singolo simbolo) è più difficile nella sua implementazione, e quindi può essere più cara. Verifica con il Candidato/lo Sviluppatore, se l'Expert Advisor lavorerà normalmente con altri Expert Advisor, lavorando sullo stesso simbolo.

  2. Come dovrebbe rispondere l'Expert Advisor a una connessione a un altro conto di trading? C'è bisogno in qualche procedura speciale di eseguirlo sul conto reale?
    Penso che molti trader possano "vantarsi" delle loro perdite, causate da una semplice mancanza di attenzione - connessione accidentale a un account reale, avvio di un terminale con un Expert Advisor in esecuzione o una modifica dei parametri di un Expert Advisor in presenza di posizioni aperte. Queste assurdità possono essere evitate semplicemente considerandole nell'algoritmo.
    Per esempio:
    • Quando esegui l'EA su un account reale, dovrebbe creare un pulsante sul grafico, il quale consente il trading. Il lavoro deve iniziare solo dopo che l'utente ha fatto clic su di esso.
    • Quando cambi un account, l'EA deve avvisare l'utente e interrompere il suo lavoro fino a quando non viene eseguito un nuovo lancio (un'alternativa è chiedere all'utente se deve continuare il suo lavoro).
    • Se ci sono posizioni aperte dall'EA (o ordini impostati), quando c'è un cambiamento nei parametri esterni, l'EA deve modificare le posizioni (ordini) in conformità con gli algoritmi progettati - ad esempio, se c'è una modifica del valore Stop Loss, dobbiamo modificare lo Stop Loss di tutte le posizioni aperte, ma solo se non è ancora stato spostato dal trailing stop. Qui è impossibile dare una ricetta universale, ogni parametro deve essere descritto separatamente. In aggiunta, per diverse strategie ci possono essere diverse reazioni ai cambiamenti nello stesso parametro.
  3. È necessario eseguire diverse copie del programma con parametri simili (o identici)?
    Se un Expert Advisor inserisce l'oggetto grafico nel grafico eseguendo più copie dell'indicatore e modificando il valore di un solo parametro e poi di tutti gli oggetti creati con esso, deve avere nomi contenenti il valore di questo parametro, altrimenti ogni corsa successiva distorcerà i risultati delle precedenti.
    Nel caso dell'Expert Advisor, di solito viene aggiunto un parametro speciale - ExpertId o MagicNumber, che consente di eseguire qualsiasi numero di copie dell'EA con qualsiasi insieme di altri parametri. Specifica nell'attività per quali impostazioni e per quali combinazioni si ha la capacità di eseguire contemporaneamente il programma. Non tutte le situazioni saranno fornite dal programmatore.
  4. In che modo si può implementare la migrazione dell'EA in un altro terminale collegato allo stesso account? L'Expert Advisor può memorizzare alcuni dati nei file o nelle variabili globali del terminale?
    Per la maggior parte dei programmi non è assolutamente necessario memorizzare informazioni intermedie, i loro algoritmi si basano sui dati cronologici delle coppie di valute e sulla cronologia di trading degli account (questi dati possono essere ottenuti da qualsiasi terminale collegato al tuo account). Ma è spesso necessario memorizzare alcune informazioni in un file e recuperarlo al prossimo lancio - a volte questo consente di accelerare la velocità di esecuzione e a volte è semplicemente impossibile creare un programma praticabile senza di esso. Notifica il programmatore su eventuali requisiti speciali per il processo di trasferimento dell'EA o semplicemente chiedigli di descrivere questo processo specificamente per il tuo caso.

Tutte le sottigliezze, sfortunatamente, sono impossibili da fornire. Per esempio, se non c'è abbastanza margine per aprire una posizione (a causa delle posizioni aperte da altri EA) calcolati nel lotto degli EA, dovrai saltare il segnale o aprire con un volume più piccolo.

Se altri EA occupano il contesto di trading (solo su MetaTrader 4), il tuo EA non sarà in grado di fare trading. E se c'è un limite al numero massimo di ordini in sospeso, non sarà possibile impostare un nuovo ordine. Tuttavia, a causa del fatto che la maggior parte di queste istanze sono previste nel tuo algoritmo, non peggiorerà la situazione. Acquisisci esperienza e ogni nuova versione di EA sarà migliore e più affidabile.


5.4. Come possiamo semplificare la comprensione?

Le informazioni vengono digerite molto più facilmente se sono ben illustrate.

Per comprendere una strategia semplice è sufficiente avere una descrizione testuale, ma se il tuo sistema è insolito e complicato, compi alcuni passi per aiutare il programmatore:

  1. Allega all'attività alcuni screenshot illustrando i diversi punti dell'algoritmo (il tempo del verificarsi di un segnale, una dimostrazione del lavoro di un trailing stop, la sequenza di impostazione degli ordini in sospeso, ecc.). Non esitare a fornire ai grafici brevi commenti, anche se parzialmente duplicati nel testo dell'algoritmo.
  2. Formatta il testo dell'attività con gusto: utilizza colori diversi per le posizioni long e short, evidenzia le variabili esterne (i parametri che si desidera essere in grado di configurare), segna i punti e le formule importanti. Oltre al fatto che il testo sarà più facile da leggere, sarà molto più facile da navigare .
  3. Fornisci degli esempi. Qualsiasi formula illustrata da numeri concreti diventa molto più chiara.
  4. Numera i paragrafi e i sottoparagrafi dell'algoritmo in modo che possano essere sempre citati durante la discussione. "Errore in una posizione 2.1.4" è molto più breve e più accurato di "un errore nel luogo in cui il livello di Stop Loss viene calcolato per la seconda posizione long della serie".


5.5. Testo, voce o video?

Testo, voce o video? Io trovo sempre esilarante quando un cliente, invece di inviarmi l'attività, mi invia un link a una discussione di 120 pagine della strategia su un forum, un libro di 70 pagine o una video lezione di un’ora e mezza. In effetti, i programmatori hanno tutto il tempo del mondo, niente di cui prendersi cura - si prenderanno il tempo di studiare questo argomento... Il fatto che la parte utile di queste informazioni si adatti a un algoritmo di mezza pagina o il fatto che sia semplicemente impossibile formalizzare questa descrizione non sembra riguardare nessuno.

Se hai già studiato questo materiale, se capisci di cosa si tratta, se hai una buona idea di come funzionerà la strategia, basta formalizzare l'algoritmo! Rimuovi i "rifiuti" (che di solito compongono l'80% delle informazioni), le pause imbarazzanti, le discussioni che distraggono, le storie sul futuro luminoso, le osservazioni dei risultati dei test e il Candidato/lo Sviluppatore riceverà solo ciò di cui realmente ha bisogno per scrivere il programma.

Ma se ancora non sai di cosa tratta il libro o la lezione, se non sei sicuro che questo sia sufficiente per creare un sistema di trading completamente automatizzato, allora formula una domanda diversa! Puoi chiedere "quanto costerà scrivere un Expert Advisor basato su questa strategia?" solo quando hai una strategia.

E nel nostro caso c'è solo una certa quantità di informazioni. La qualità (se è suscettibile di formalizzazione, abbastanza dettagliata, ecc.) è ancora sconosciuta. Quindi sentiti libero di chiedere se il programmatore è interessato a studiare questo materiale "per l'idea" e, in caso contrario, quanto impiegherà per scrivere regole a tutti gli effetti per un sistema di trading fuori da questa "lunga discussione". Credetemi, anche la forma della domanda stessa evidenzierà la tua relazione con il Candidato/lo Sviluppatore.

Non tutti i programmatori sono interessati a leggere documenti o discussioni di più pagine su qualche strategia: hanno già abbastanza idee che sono in attesa di verifica e le nuove informazioni semplicemente non sono necessarie.

Non tutti vorranno guardare un docente parlare della costruzione delle linee di tendenza e il loro ruolo nel suo sistema invece del loro film preferito. Ciò è spesso abbastanza noioso e, quel che è peggio, difficile da formalizzare. Alcuni momenti dovranno essere letteralmente inventati da te (trova la spiegazione più logica), alcune cose dovranno essere indovinate o selezionate attraverso la sperimentazione, per alcune questioni avrai la necessità di cercare e ricercare ulteriori informazioni. In generale, il processo è abbastanza laborioso e creativo, non sottovalutarlo.

Voglio menzionare separatamente coloro che amano comunicare via Skype o telefono. Più spesso, il desiderio di descrivere oralmente la propria strategia è dovuto non solo alla riluttanza di eseguire azioni extra (digitare sulla tastiera), ma quel che è peggio, la mancanza di comprensione della strategia da parte dell'autore.

È impossibile costruire un insieme di regole di trading se si basano su ipotesi e intuizioni dell'autore ed è molto difficile strutturare una storia emotiva e disordinata. E, come nel caso della lunga video lezione, il programmatore non è sempre interessato ad ascoltare queste "rivelazioni" poiché, per poter scrivere il programma, ha bisogno di un algoritmo e qualcuno dovrà ancora scriverlo.

È difficile sopravvalutare l'importanza delle moderne tecnologie: è molto più facile trovare una lingua comune quando si comunica a voce o tramite video, mostrando un'immagine dal tuo monitor all’altro. Ma la conversazione sarà molto più produttiva se c'è qualcosa da discutere - formula i tuoi pensieri su carta e potrai preparare un compito a tutti gli effetti adeguato nel corso della discussione, apportando semplicemente piccole precisazioni ad un testo già preparato.

Le conclusioni che dovresti trarre da quanto sopra sono:

Se riesci a disegnare un algoritmo di strategia chiaro sin dalla descrizione, disegnalo tu stesso e invia al programmatore solo le informazioni necessarie.
Se il processo di formalizzazione è molto complesso e richiede molto lavoro, non aspettarti che il programmatore lo faccia gratuitamente.

Spero che ora tu abbia capito cosa sia un compito. Adesso possiamo parlare della scelta di un particolare esecutore.


6. Selezione del Candidato/ dello Sviluppatore

Selezione dell'esecutoreLa questione della scelta di un programmatore diventa vitale sin da subito. Ogni cliente vuole pagare il meno possibile e ottenere risultati di massima qualità . Idealmente, il software deve essere scritto dai migliori professionisti e, a allo stesso tempo, essere gratuito. Questo è un ideale per cui lottare, passando da professionisti costosi ai principianti.

Quando selezioni lo sviluppatore per l'implementazione del tuo primo lavoro, ti consiglio di valutare questi criteri:

  1. Esperienza di scrittura di programmi pubblici in MQL4/MQL5.
    Se lo sviluppatore EA è entrato nel mercato una settimana fa, potrebbe anche andarsene tra una settimana. Un "professionista" con due anni di esperienza, ovviamente, può anche scomparire improvvisamente, ma la probabilità è molto più bassa. Perdere la comunicazione con lo sviluppatore minaccia non solo la capacità di fare un nuovo ordine, ma anche:
    • La mancanza di supporto (non c'è nessun software senza errori, ci sono solo programmi mal testati );
    • La complessità di apportare miglioramenti anche minimi (è sempre più difficile lavorare con il codice di altre persone, quindi un altro sviluppatore potrebbe richiedere un importo decente anche per modifiche minori.)

  2. Feedback dei clienti reali.
    La pratica è il criterio della verità. Se una persona ha scritto programmi che sono utilizzati da persone reali, significa che funzionano. Altrimenti, ti imbatteresti sempre in feedback che evidenziano la sua mancanza di professionalità.
    Se hai amici trader che hanno già utilizzato i servizi di un programmatore, chiedi loro consiglio - almeno otterrai il risultato atteso.

  3. Disponibilità online.
    A nessuno piace aspettare una risposta a una lettera per un certo numero di giorni. E per alcuni anche 2 ore sono troppo lunghe.
    Osserva la persona - se è spesso "online", indipendentemente dal fatto che sia veloce o meno a rispondere ai messaggi. In futuro, questo può farti risparmiare un'enorme quantità di tempo.

  4. Metodi di comunicazione.
    Oggi ci sono una varietà di modi per comunicare via Internet: email, sistemi di messaggistica, programmi per chat vocali e video, messaggi privati per risorse Internet. Qualcuno è abituato a un metodo, mentre altri a un altro. Per una buona comunicazione, dovrai selezionare un metodo che sia comodo per entrambi. Non c'è problema nell'installare un altro programma, ma alcune persone potrebbero non volerlo fare perché non ne vedono la necessità.
    Se hai bisogno di una comunicazione dal vivo (ad esempio tramite Skype), verifica se il tuo sviluppatore è pronto. Soprattutto, organizza in anticipo se desideri parlare al telefono o incontrarvi di persona - non tutti accetteranno di svolgere il proprio lavoro "off-line".

  5. Termini di cooperazione.
    Prima di effettuare un ordine è necessario scoprire tutte le condizioni per la cooperazione:
    • E' possibile lavorare attraverso il servizio "Lavori"? Una risposta positiva a questa domanda annullerà la maggior parte delle altre.
    • È richiesto il pagamento anticipato e, in caso affermativo, quanto costa?
    • Come verrà controllato il programma? Otterrai una versione demo?
    • Otterrai il codice sorgente del programma e, in tal caso, quando? Dopo il completamento del pagamento o subito?
    • Chi sarà il proprietario dei diritti per la distribuzione del programma?
      È improbabile che il controllo dell'integrità del programmatore abbia successo, ma comunque vale la pena chiarire formalmente questo punto: se è ripetutamente sospettato di vendere ai clienti EA o algoritmi, la sua reputazione arriverà prima di lui.
    • Quanto durerà il supporto tecnico e a quali condizioni? La correzione degli errori (discrepanze dall'algoritmo) verrà eseguita gratuitamente? Quanto costeranno i piccoli miglioramenti ?
    Tutte queste sfumature devono essere chiarite prima dell'inizio della relazione finanziaria, dal momento che sarà più difficile in seguito.

  6. Metodi di pagamento.
    Quali sistemi di pagamento elettronico utilizza lo sviluppatore? Il pagamento può essere effettuato tramite bonifico bancario o carta di credito?
    Assicurati di controllare i requisiti per la valuta di pagamento - Internet è internazionale e quindi non tutti avranno bisogno dei rubli russi.

  7. Caratteristiche.
    Se non stai cercando una singola cooperazione, ma un partner costante prova a scoprire se andate bene l’uno all’altro. Socializza, indica le tue esigenze dall'altra parte, descrivi la tua visione del mondo, i tuoi principi e debolezze (nella misura in cui la tua autocritica lo permetterà).
    Un'alternativa: prova a fare un ordine con la tua prima scelta e sistema tutto durante il processo. Ma può accadere che il partner giusto venga trovato molto dopo il primo tentativo.

  8. Costo del lavoro.
    Ultimo, ma non meno importante. Non mi fiderei di far scrivere un programma serio a un uomo che vende il suo lavoro a 10 $, ma non sono nemmeno disposto a pagare 1000 $, quindi devo scegliere una via di mezzo. Il prezzo, da un lato, indica la professionalità dell'esecutore e, dall'altro, dipende dal suo interesse e dal suo carico di lavoro. Non aspettarti di ottenere una "Mercedes" per 5 $, ma non pagare più del dovuto per una "Buick".


Abbiamo ripetutamente sollevato il tema dell’"elenco di programmatori", un elenco di alcuni specialisti pronti al lavoro con le loro informazioni di contatto e le recensioni dei clienti. Ci sono stati diversi tentativi di creare una lista simile, da me stesso in "An Expert Advisor Made to Order. Manual for a Trader", un articolo su mql4.com, da utenti indipendenti del forum e da persone indifferenti a questo argomento. E potrebbe facilitare davvero la selezione per il primo ordine.

Ma proprio come qualche anno fa, non esiste una lista completa e costantemente aggiornata . Possiamo lavorare insieme per fare un altro tentativo di crearla, ma penso che la discussione di questa idea esula dallo scopo di questo articolo.


7. Proteggiti dagli imbrogli

Ci sono persone diverse e ci sono situazioni diverse. Anche il più affidabile degli sviluppatori EA può scomparire senza completare il lavoro e anche le persone più responsabili possono violare i termini dell'accordo sotto la pressione delle circostanze. Non correre rischi laddove non sono necessari - utilizza il servizio "Lavori"!

Seguendo costantemente lo sviluppo della strategia di trading automatizzato, a metà del 2010 la MetaQuotes Software Corp. ha rilasciato un nuovo servizio il cui scopo principale è l'organizzazione delle relazioni tra il cliente e lo sviluppatore. Anche ora, dopo soli sei mesi, il servizio è meritatamente popolare ed è quotidianamente utilizzato da molti trader e programmatori.

Ulteriori informazioni su questo servizio possono essere ottenute dall’ annuncio ufficiale sul forum e dall’ articolo sul suo utilizzo:

La principale differenza tra il servizio "Lavori" su MQL5.community e la maggior parte delle risorse e dei servizi simili su altri siti web è la sicurezza. Il cliente e il programmatore sono protetti reciprocamente da azioni negligenti durante tutto il periodo di lavoro congiunto. In caso di controversia, la MetaQuotes Software Corp. è pronta ad assumere il ruolo di arbitro.

Nonostante tutta la completezza e la formalità del servizio, sorgono ancora problemi quando lo si utilizza. La maggior parte di essi può essere evitata seguendo alcune semplici regole:

  1. Prima di elaborare un nuovo ordine (se sei il trader) o di fare proposte sull’ implementazione (se sei il programmatore), assicurati di rivedere i termini del servizio. Molte controversie sorgono a causa di una disattenta lettura o mancanza di comprensione delle regole. Se alcuni punti non sono chiari o se secondo te si possono interpretare in modo ambiguo, allora fai alcune domande per chiarezza sull’ambito specifico - forse la tua la domanda farà sì che le regole siano più semplici e dirette.

  2. Quando ordini un Expert Advisor, prepara un algoritmo chiaro.
    Ci sono diversi capitoli dell’articolo dedicati a questo aspetto, quindi non mi ripeterò.

  3. Scegli un Candidato/uno Sviluppatore adeguato con un prezzo adeguato e un adeguato tempismo per il compito, non essere tentato da "lavori gratuiti": non esiste nulla del genere.
    Guarda il portfolio dello sviluppatore e leggi i feedback dei suoi lavori completati. Assicurati che non sia troppo occupato con altri lavori: forse questo gli impedirà di finire l'ordine in tempo.
    E ricorda che il tempo di implementazione viene conteggiato dopo il completamento del secondo passaggio (Negoziazione dei Requisiti) - i dettagli del processo non sono regolamentati e la pianificazione del lavoro dipende solo da te e dal programmatore.

  4. Conserva tutte le discussioni, utilizzando i messaggi nel servizio "Lavori" - solo allora possono essere utilizzati in casi di arbitraggio.
    Anche se stai comunicando tramite ICQ o Skype, prova a "documentare" tutti i momenti chiave nei commenti del servizio Lavori.

  5. Tieni traccia degli aggiornamenti dei lavori che sono correlati (non importa se come cliente o come esecutore): guarda regolarmente i tuoi messaggi personali, consenti l'invio di notifiche alla tua email o aggiungi il tuo numero di cellulare al tuo profilo per ricevere notifiche via SMS.
    Se non tieni traccia del flusso di lavoro, potrebbe essere completato senza di te e non a tuo favore - alla data di scadenza può essere chiuso forzatamente dall'altra parte.

Altrimenti, l'uso del servizio non è diverso dal lavoro senza intermediari, tranne per il fatto che lo Sviluppatore pagherà una piccola commissione al servizio "Lavori" per l'organizzazione del processo.


8. Controlla i risultati

L'ultima tappa del nostro viaggio è controllare il lavoro completato. Per assicurarti che il programma funzioni secondo l'algoritmo approvato è necessario testarlo con attenzione e accuratamente .

  1. Provalo in diverse condizioni: su diversi tipi di conti, coppie di valuta, intervalli di tempo, con diverse combinazioni di parametri - il programma deve lavorare allo stesso modo e correttamente in ogni situazione (se l'"indulgenza" non è chiaramente specificata nell'algoritmo).

  2. Controlla il programma non solo nello Strategy Tester, ma su un conto demo. Lo Strategy Tester ti aiuterà a trovare rapidamente gli errori evidenti e ti consentirà di controllare la strategia a diversi intervalli di cronologia, mentre il test online mostrerà come funziona il programma in condizioni vicine a quelle reali. È possibile creare "distrazioni" per il programma - riavviare il client terminal, connettersi a diversi account, eseguire altri Expert Advisor o indicatori, modificare le impostazioni durante il lavoro - è meglio conoscere le caratteristiche del suo comportamento in diverse situazioni durante questa fase.

  3. Confronta il lavoro dell'Expert Advisor con l'algoritmo approvato, piuttosto che con le tue aspettative di redditività del sistema. Se si scopre che l’algoritmo contiene un errore durante il processo di controllo, apporta le modifiche necessarie e chiedi allo sviluppatore di modificare l’Expert Advisor. Ma non aspettarti che lo farà gratuitamente (soprattutto se il miglioramento è significativo): questo errore non è colpa sua.

Se trovi un problema, segnalalo al Candidato/allo Sviluppatore.

  1. Indica la parte dell'algoritmo che viene elaborata dal programma in modo errato (o in cui iniziano le azioni errate).
    Se è difficile trovare il luogo specifico in cui viene violata la logica, allora spiega il problema a parole tue, ma cerca comunque di non deviare troppo dall'algoritmo.

  2. Descrivi le condizioni in cui è stato eseguito il test:
    • Allega un set-file con i parametri del programma (il pulsante "Salva" nella finestra "Opzioni" dell'Expert Advisor);
    • Specifica la coppia di valute utilizzata e l'intervallo di tempo del grafico;
    • Specifica l'indirizzo del server a cui era connesso il terminale e il tipo di conto (demo, reale, contest o altro);
    • Specifica la versione di compilazione del client terminal (menu "Aiuto" - "Informazioni");
    • Se è stato controllato nello Strategy Tester, specifica le impostazioni dello Strategy Tester (periodo di prova, tipo e modalità di esecuzione, deposito iniziale, leva finanziaria).

  3. Allega uno screenshot che illustri il problema.

  4. Se il problema è legato all'apertura o alla chiusura di una posizione, copia l'estratto dal rapporto dello Strategy Tester o poche righe della cronologia dell'account.

  5. Allega i file di registro dell’Expert Advisor (seleziona "Apri" nel menu di scelta rapida della scheda "Experts" del client terminal o nella scheda "Journal" dello Strategy Tester).

Più informazioni ha il programmatore, più facile sarà trovare e correggere il problema. Spero che dopo tutte queste descrizioni dei passaggi otterrai esattamente cosa volevi. Ma non affrettarti a tornare ai giorni feriali affollati di un trader, condividi le tue esperienze con gli altri.


9. Feedback

Feedback

MQL è una comunità in crescita e tu ne fai parte .

Ricorda come hai scelto un programmatore e preparato le specifiche della tua prima attività - cosa potrebbe averti aiutato nel processo? Condividi le tue esperienze!

Scrivi un algoritmo chiaro e lascia che ci sia un esempio da seguire. Aiuta i neofiti a formalizzare le loro strategie o dimostrare che è impossibile - salva un altro cercatore di Graal da un crollo delle speranze.

Racconta le tue esperienze con i programmatori, indica i loro punti di forza e di debolezza, descrivi cosa ti è piaciuto di più e cosa è stato un problema. Questo ti prenderà 10 minuti, ma farà risparmiare un sacco di nervi e denaro ai tuoi colleghi trader.

Ho un atteggiamento positivo nei confronti di qualsiasi commento costruttivo e sarei grato per qualsiasi critica a questo articolo. Se ritieni che alcune sezioni debbano essere riviste, che mancava qualcosa o, al contrario, se c'è qualcosa in più, dimmelo!

Questo articolo è stato concepito come uno strumento per scrivere una descrizione del lavoro, ma in realtà, ha coperto molti argomenti correlati. Mi piacerebbe davvero che fosse facile da leggere, che rivelasse tutto il necessario e che fosse davvero utile. Se hai già letto fino a questo punto, per favore dedica pochi minuti per lasciare il tuo feedback. Grazie ai tuoi commenti questo articolo potrà migliorare ancora.

Anticipando un po' di scetticismo da parte dei miei colleghi sviluppatori di Expert Advisor, voglio informarti che questo articolo è stato scritto su richiesta di MetaQuotes Software Corp.  Il suo scopo non è quello di pubblicizzare i miei servizi, ma aiutare la relazione tra il cliente e il programmatore.

Spero che tu, da vero professionista, sosterrai questa iniziativa e contribuirai a portare il nostro business complessivo al livello successivo. Aspetto i tuoi commenti e le tue osservazioni .


Conclusione

Il trading automatizzato continua a guadagnare nuovo slancio. Come e dove si muoverà dipende da noi.

Creiamo adesso una cultura delle relazioni e, molto presto, raccoglierai i frutti sotto forma di Expert Advisor di alta qualità.

Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/235

Crea il tuo Expert Advisor nel Wizard MQL5 Crea il tuo Expert Advisor nel Wizard MQL5
La conoscenza dei linguaggi di programmazione non è più un prerequisito per la creazione di robot di trading. La precedente mancanza di competenze di programmazione era un ostacolo invalicabile all'implementazione delle proprie strategie di trading ma, con l'emergere del Wizard MQL5, la situazione è cambiata radicalmente. I trader alle prime armi possono smettere di preoccuparsi della mancanza di esperienza di programmazione: con il nuovo Wizard, il quale consente di generare il codice Expert Advisor, non è necessario.
Analisi Tecnica: Come analizziamo? Analisi Tecnica: Come analizziamo?
Questo articolo descrive brevemente l'opinione dell'autore sul ridisegno di indicatori, indicatori multi-timeframe e visualizzazione di quotazioni con candele giapponesi. L'articolo non contiene specifiche di programmazione ed è di carattere generale.
Diminuzione del consumo di memoria tramite indicatori ausiliari Diminuzione del consumo di memoria tramite indicatori ausiliari
Se un indicatore utilizza i valori di molti altri indicatori per i suoi calcoli, consuma molta memoria. L'articolo descrive diversi metodi per ridurre il consumo di memoria quando si utilizzano indicatori ausiliari. La memoria salvata consente di aumentare il numero di coppie di valute, indicatori e strategie utilizzate contemporaneamente nel terminale del cliente. Aumenta l'affidabilità del portafoglio. Una così semplice cura delle risorse tecniche del tuo computer può trasformarsi in risorse monetarie sul tuo deposito.
Analisi Tecnica: Cosa analizziamo? Analisi Tecnica: Cosa analizziamo?
Questo articolo cerca di analizzare alcune peculiarità di rappresentazione delle quotazioni disponibili nel client terminal MetaTrader. L'articolo è generale, non riguarda la programmazione.