Dmitry, che cos'è questo? Perché l'articolo ha la forma di un libro di riferimento e di tabelle di macro?
e dove sono gli esempi di codice, dov'è l'essenza dell'idea del programmatore?
I capitoli che spiegano il principio e l'identificazione - purtroppo non hanno fatto luce su ciò che sta accadendo.
una tale impressione che l'hanno scritto da soli per non dimenticare l'elenco delle macro possibili.
potete spiegare a tutti lo scopo di ciò che accade nel codice? (Non mi interessa l'applicazione, ma solo l'organizzazione degli algoritmi MQL).
Ahem...
Sembra un articolo "da un programmatore per programmatori". Solo che non è chiaro chi (a parte l'autore) lo userà. "Imparare mql5" vs "Imparare eIntepretar".
Ma il lavoro svolto è semplicemente colossale, è ammirevole.
Dmitry, che cos'è questo? Perché l'articolo ha la forma di un libro di riferimento e di tabelle di macro?
e dove sono gli esempi di codice, dov'è l'essenza dell'idea del programmatore?
I capitoli che spiegano il principio e l'identificazione - purtroppo non hanno fatto luce su ciò che sta accadendo.
una tale impressione che l'hanno scritto da soli per non dimenticare l'elenco delle macro possibili.
potete spiegare a tutti lo scopo di ciò che accade nel codice? (Non mi interessa l'applicazione, ma solo l'organizzazione degli algoritmi MQL).
Ci sono 3 o 4 tabelle di riferimento. Il resto sono macro con commenti. L'articolo è molto ricco di informazioni, dovreste leggerlo senza saltare una sola parola, senza passare alla successiva, se c'è anche un solo pensiero poco chiaro (naturalmente, se necessario e se volete). Una sola lettura probabilmente non servirà. Se cercate di individuare l'idea centrale, non è così grande e complicata: qualsiasi strategia sugli ordini dovrebbe essere scomposta in tutte le possibili fasi di stato, ma questo è un processo creativo personale, non formalizzato. Sebbene, se lo si desidera, sia possibile formalizzarlo, ma sarà necessario scrivere molto.
L'idea del programmatore... è vecchia come il computer stesso: un programma in linguaggio umano, con cui funziona una macchina di ferro.
Esempi di codice. Le funzioni StringFind() e StringSubstr(). In generale, può essere utile studiare le funzioni di stringa in PHP: può davvero espandere la vostra creatività...
Se si cercasse di mettere insieme l'intera quantità di informazioni presentate nell'articolo in un altro modo, potrebbe essere 5-10 volte più voluminoso...
Cosa succede nel codice... Leggiamo il file riga per riga, separiamo i commenti con il segno "#", dividiamo i campi fase e azione con il segno "|", dividiamo i comandi con il segno ";". Quindi si cercano le sottostringhe <, >, <=, <=, ecc. nelle espressioni di confronto. Se ne troviamo una, ne annotiamo l'indice e l'espressione viene divisa in due parti, una a destra e una a sinistra. Rimane l'espressione aritmetica. Se inizia con + o -, rientriamo di un carattere e cerchiamo + o - prima dei quali non c'è il segno *. Dividiamo + o - in sottostringhe e dividiamo queste due sottostringhe con il segno *. Successivamente abbiamo quattro argomenti (e uno in più sul lato sinistro dell'espressione). Questi argomenti possono essere comandi. Controlliamo se si tratta di un numero, o di un numero con p alla fine, o di una variabile utente o di una variabile utente con p alla fine; in tal caso, la sostituiamo con un numero. In caso contrario, si tratta di un comando. Separiamo il comando stesso e i suoi argomenti con il segno (.
La cosa più interessante è il calcolo delle espressioni. Ci sono strutture, cinque strutture con valori in ogni struttura, la struttura del valore specifica se il valore è direttamente numerico o un comando. Per ogni struttura con un valore, viene chiamata una funzione per calcolare il valore. Se il valore è numerico, la funzione non fa nulla, se è un comando, viene richiamata la funzione appropriata (selezionata tramite switch). Dopo aver compilato i valori, viene calcolata l'espressione aritmetica, dove nella struttura sono specificati i segni dei valori e dell'azione aritmetica.... Solo che tutto è specificato da numeri (indici), e l'azione necessaria è selezionata tramite switch.
Il processo stesso di interpretazione del lavoro è a due livelli di switch: un comando e un nodo per l'identificatore dei dati ricevuti sul comando. Se siete interessati, cercate nel codice della funzione OnTick(), non c'è molto codice. La maggior quantità di codice proviene dalla funzione OnInit(), ma non è così interessante, può essere fatto come è più conveniente per qualcuno - solo le funzioni StringFind() e StrSubstr().

- www.mql5.com
Io sostengo, ho bisogno di un esempio di come programmare un semplice TS, almeno per fare trading sugli incroci delle MA lente e veloci.
Khe... Prima di tutto dovresti leggere l'articolo per intero.
...per essere un progettista visivo di strategie.....
Questa è una buona idea, che eliminerebbe un problema... ma minore: si dovrebbe comunque pensare alla strategia, analizzarla, suddividerla in fasi.
Ahem...
Sembra un articolo "da un programmatore per programmatori". Solo che non è chiaro chi (a parte l'autore) lo userà. "Imparare mql5" vs "Imparare eIntepretar".
E il lavoro svolto è semplicemente colossale, è ammirevole.
Beh, un po' c'è, alla maniera di "Scienziato pazzo"..... Come premio di consolazione, c'è una descrizione di diverse strategie di ordine, anche se non molto dettagliata, ma con immagini.... Qualcuno, forse, almeno questo sarà utile...
Если постараться изложить весь объем информации представленный в статье как-то иначе, она бы могла поучиться раз в 5-10 объемней...
Potreste inserire le tabelle di riferimento in un dock e allegarle all'articolo.
Ho riletto l'articolo e ho anche deciso di formulare una tesi per me stesso per capire di cosa parla l'articolo. Probabilmente sono vicino alla comprensione.
Dimitri, correggimi se sbaglio.
Quindi, il compito dell'esperto sarà quello di controllare gli Stati. Tutti. Punto per punto.
E se uno degli stati è rilevante al momento - allora facciamo ciò che la macro prescrive per questo stato.
Il compito non è quello di creare contraddizioni - di fare in modo che più macro gestiscano lo stesso stato, o di evitare conflitti tra due macro (per esempio, una si chiude e la seconda si apre immediatamente, e ci sarà una "lotta")
Cioè, il compito dell'esperto è quello di eseguire costantemente un ciclo e controllare TUTTE le macro specificate (ciò che abbiamo scritto nel file o qualcos'altro) e fare ciò che esse prescrivono quando soddisfano la loro condizione.
Ad esempio, supponiamo di avere una semplice strategia (anche una strategia con indicatore).
Dobbiamo aprire un ordine quando la MA incrocia. Poi spenderlo. E chiuderlo forzatamente a un certo prefisso.
Cosa fa un programmatore in questo caso.
Scrive TRE funzioni (come le macro nel vostro caso)
- la funzione di controllo dell'indicatore e di apertura di un ordine, se l'indicatore ha dato l'OK e non c'è una posa.
- la funzione di strascico, se c'è una posa
- la funzione di chiusura, se c'è un ordine e c'è un profitto
L'ordine di chiamata di queste funzioni può essere qualsiasi. È sufficiente posizionarle sul controllo in OnTick, per esempio
OnTick()
{
OpenOrder()
TralPos()
CloseProfit()
}
Cioè, le funzioni sono indipendenti da sole.
Significa che TralPos è indipendente da sola e la presenza di altre due funzioni non influisce in alcun modo sul suo lavoro. In essa vengono eseguiti tutti i controlli necessari (ricerca di una posa, modifica di uno stop, ecc.)
Analogamente, CloseProfit è indipendente.
Quindi avete scritto diverse decine di funzioni di questo tipo, che sono indipendenti ed eseguono operazioni atomiche dell'algoritmo.
E avete creato un modo per impostarle attraverso un file di prova con parametri, in modo da poter cambiare i parametri delle funzioni (e quindi dell'Expert Advisor) senza ricompilarlo.
in questo modo?
Sarebbe possibile inserire le tabelle di riferimento in un documento e allegarle all'articolo.
È una questione di gusti, ma se sono all'interno dell'articolo non si perdono.
Ho riletto l'articolo, ho anche deciso di fare una tesi per me stesso per capire di cosa parla l'articolo, e probabilmente sono vicino a capirlo.
Dimitri, correggimi se sbaglio.
Quindi, il compito dell'esperto sarà quello di controllare gli Stati. Tutti. Punto per punto.
Sì. A ogni spunta, tutte le fasi vengono controllate per verificarne la rilevanza.
E se uno degli stati è rilevante in quel momento, allora facciamo ciò che la macro prescrive per questo stato.
Sì, ma ci sono alcune sfumature. Se viene eseguita un'azione di mercato, questa deve essere una e deve arrivare per prima. Se si imposta un ordine pendente, l'Expert Advisor ne verifica l'esistenza prima di impostarlo.
Il compito è quello di non creare contraddizioni: diverse macro devono elaborare lo stesso stato, oppure due macro non devono entrare in conflitto (ad esempio, una si chiude e la seconda si apre immediatamente, e ci sarà una "lotta").
Non dovrebbero esserci conflitti. Ma possono esserci più macro per la stessa fase, se è più conveniente. Ad esempio, una fase è la presenza di una posizione di mercato, in una parte ci può essere un ordine Limit e nell'altra un ordine Stop, oppure si possono scrivere sia un ordine Stop che un ordine Limit in un'unica riga.
In altre parole, il compito dell'Expert Advisor è quello di eseguire costantemente il ciclo e controllare TUTTE le macro specificate (che abbiamo scritto nel file o in altro modo) e fare ciò che prescrivono quando la loro condizione è soddisfatta.
Sì.
Per esempio, diciamo che abbiamo una strategia semplice (anche una strategia con indicatore).
Dobbiamo aprire un ordine quando la MA si incrocia. Poi spendere. E poi chiuderlo forzatamente a un certo prefisso.
Sì.
Cosa fa un programmatore in questo caso.
Scrive TRE funzioni (come le macro nel vostro caso)
- la funzione di controllo dell'indicatore e di apertura di un ordine se l'indicatore ha dato un segnale e non ci sono posizioni.
Questa è una fase: c'è un segnale dell'indicatore, ma non ci sono posizioni. In questo caso, la sua azione è quella di aprire una posizione.
- funzione di traino, se c'è una posa.
Questa può essere registrata come una fase separata. Identificazione della fase - presenza di una posizione di mercato. L'azione corrispondente è la chiamata della funzione di trawl.
- funzione di chiusura, se c'è un ordine e l'ordine ha un profitto.
Questa è la terza fase. Esiste una posizione e il suo profitto è superiore al valore specificato. L'azione consiste nel chiudere la posizione.
L'ordine di chiamata di queste funzioni può essere qualsiasi. È sufficiente inserirle nel controllo di OnTick, ad esempio.
E nel file con il metaprogramma si possono inserire le righe in ordine diverso.
OnTick()
{
OpenOrder()
TralPos()
CloseProfit()
}
In altre parole, le funzioni stesse sono indipendenti.
Si scopre che anche le righe del file con il metaprogramma sono indipendenti.
Ciò significa che TralPos è indipendente da sola e la presenza di altre due funzioni non influisce sul suo lavoro. In essa vengono eseguiti tutti i controlli necessari (ricerca della posa, modifica dello stop, ecc.).
Anche una riga del metaprogramma è autosufficiente.
Allo stesso modo, CloseProfit è autosufficiente.
Quindi avete scritto diverse decine di funzioni di questo tipo che sono indipendenti ed eseguono operazioni atomiche dell'algoritmo.
E avete creato un modo per impostarle attraverso un file di prova con parametri, in modo da poter cambiare i parametri delle funzioni (e quindi dell'Expert Advisor) senza ricompilarlo.
Queste funzioni possono essere combinate. La fase può essere determinata non solo dalla presenza di una posizione di mercato... ma da molte varianti, comandi nella tabella dei comandi di accesso.
così?
Una cosa che può causare malintesi. Nell'articolo ho in qualche modo offuscato la differenza tra azione e stato. Se un'azione di mercato deve essere intrapresa quando si identifica una fase, dovrebbe essere chiamata azione. Quando invece è necessario impostare ordini pendenti, è più probabile che si parli di descrizione di stato. Una fase è identificata principalmente da un commento in una posizione di mercato, e questa fase corrisponde a un'azione (apertura/chiusura di una posizione di mercato) o a uno stato (presenza di alcuni ordini pendenti). Se si tratta di un'azione di mercato, si presume che dopo la sua esecuzione ci sarà una transizione a un'altra fase. È importante contrassegnare correttamente gli ordini. Tuttavia, in una fase possono essere presenti sia un'azione di mercato che l'impostazione di ordini. Se l'azione di mercato non ha successo, tutto ciò che segue non verrà eseguito. Se invece l'azione di mercato ha successo, verrà eseguita, nel caso in cui si cerchi di fare il più possibile in un solo tick. Occorre tenere presente che gli ordini possono non essere impostati, ma l'azione di mercato è completata, ossia si passa a un'altra fase.

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Strategie d'Ordine. Expert Advisor Multiuso è stato pubblicato:
Questo articolo è incentrato sulle strategie che utilizzano attivamente gli ordini in sospeso, un metalinguaggio che può essere creato per descrivere formalmente tali strategie e l'uso di un Expert Advisor multiuso il cui funzionamento si basa su tali descrizioni
Inoltre, le strategie possono richiedere un altro tipo di analisi. La chiameremo analisi della situazione di trading attuale. Comprende l'analisi dello stato della posizione di trading e l'analisi di eventuali ordini in sospeso disponibili/mancanti (se presenti in una strategia). I risultati di tale analisi ci portano a decidere se determinate azioni con posizioni o ordini devono essere eseguite, ad esempio chiusura, spostamento di Stop Loss, inserimento o eliminazione di ordini in sospeso, ecc. In altre parole, tale analisi include lo studio della nostra attività di mercato, le azioni in base alla situazione che noi (o un Expert Advisor) abbiamo creato e le regole della strategia in uso.
Un Trailing Stop comunemente noto può essere considerato in una certa misura il secondo tipo di elemento in una strategia di trading. Considera la seguente analisi: se c'è una posizione aperta con il profitto superiore al valore impostato, mentre lo Stop Loss non è impostato o è più lontano della distanza dal prezzo corrente come specificato nelle impostazioni, lo Stop Loss verrà spostato.
Trailing Stop è una funzione abbastanza semplice per essere di particolare interesse. Inoltre, può essere classificato come una categoria totalmente diversa di elementi di strategia di trading, essendo una funzione di gestione della posizione. Pertanto, una strategia di trading può essere composta da tre categorie di elementi:
Analisi di mercato e azioni basate su di essa.
Analisi della situazione di trading e azioni basate su di essa.
Gestione della posizione.
Questo articolo è incentrato sulle strategie che utilizzano attivamente gli ordini in sospeso (le chiameremo in breve strategie sugli ordini), un metalinguaggio che può essere creato per descrivere tali strategie e lo sviluppo e l'uso di uno strumento multiuso (Expert Advisor) il cui funzionamento si basa su quelle descrizioni.
Autore: Dmitry Fedoseev