Saturday 11 November 2017

Semplice Mobile Media Ea Mq4


MetaTrader 4 - Gli esperti media mobile - esperto per MetaTrader 4 Il Moving Average esperto per la formazione di segnali di commercio utilizza una media mobile. Apertura e chiusura di posizioni vengono eseguiti quando la media mobile incontra il prezzo al bar di recente formazione (indice bar è uguale a 1). Il lotto verrà ottimizzato secondo un particolare algoritmo. Il consulente esperto analizza concorso della media mobile e il grafico dei prezzi di mercato. Il controllo viene eseguito dalla funzione CheckForOpen (). Se la media mobile incontra la barra in modo tale che il primo è superiore al prezzo aperta ma inferiore Chiudi prezzo, si apre la posizione di acquisto. Se la media mobile incontra la barra in modo tale che il primo è inferiore al prezzo aperta ma superiore Chiudi prezzo, verrà aperta la posizione SELL. Money Management utilizzato nella esperto è molto semplice, ma efficace: il controllo su ogni volume posizione viene eseguita a seconda delle operazioni precedenti risultati. Questo algoritmo è implementato dalla funzione LotsOptimized (). Le dimensioni di base molto è calcolata sulla base del rischio massimo ammissibile: Il parametro MaximumRisk visualizza la percentuale di rischio di base per ogni transazione. Di solito possiede un valore compreso tra 0,01 (1) e 1 (100). Ad esempio, se il margine libero (AccountFreeMargin) è uguale a 20.500 e le regole di gestione del capitale prescrive di usare rischio di 2, le dimensioni di base molto farà 20500 0,02 1.000 0,41. E 'molto importante controllare il accuratezza dimensione del lotto e per normalizzare il risultato con i valori consentiti. Normalmente, un sacco frazionari con passo di 0,1 sono ammessi. Una transazione avente volume di 0.41 non verrà eseguita. Per normalizzare la funzione NormalizeDouble () viene usato con precisione fino a 1 carattere dopo il punto. Ciò comporta il sacco base di 0,4. Il calcolo sacco di base sulla base del margine libero permette di aumentare dei volumi di funzionamento a seconda di trading successo riscosso, cioè al commercio con reinvestire. Questo è il meccanismo di base con la gestione del capitale obbligatorio per aumentare del trading effetiveness. DecreaseFactor è la misura in cui la dimensione del lotto sarà ridotto dopo il commercio non redditizie. I valori normali sono 2,3,4,5. Se le transazioni precedenti erano inutili, i volumi successivi diminuirà di un fattore di DecreaseFactor al fine di attendere per tutto il periodo non redditizie. Questo è il fattore principale nella algoritmo di gestione del capitale. L'idea è molto semplice: se il commercio è in aumento con successo, l'esperto lavora con il lotto di base facendo il massimo profitto. Dopo la prima operazione inutile, l'esperto ridurrà la velocità fino a quando viene effettuata una nuova transazione positiva. L'algoritmo permette di disabilitare la riduzione della velocità, per farlo, si deve specificare DecreaseFactor 0. L'ammontare degli ultimi successive operazioni redditizie è calcolato nella storia del commercio. Il lotto base sarà ricalcolato su questa base: Così, l'algoritmo permette di ridurre efficacemente il rischio che si verificano a seguito di una serie di dimensioni transactions. The lotto inutile è obbligatoriamente controllato per la dimensione minima consentita lotto al fine della funzione perché i calcoli effettuati in precedenza possono causare molto 0: l'esperto è destinato principalmente per lavorare con periodo giornaliero, e in modalità di test - per fare a prezzi vicini. Sarà solo il commercio in apertura di un nuovo bar, che è il motivo per cui non sono necessari i modi di ogni tick-modellazione. risultati dei test sono rappresentati nel report. Typically, due medie mobili possono essere utilizzati per creare una strategia di forex (EA per MT4), con queste regole: comprare quando il breve periodo media mobile è sopra il lungo periodo in movimento Sell media quando il periodo di tempo in movimento media è al di sopra della media breve periodo Sul seguente grafico da MetaTrader Terminal in movimento, la linea gialla è il breve periodo media mobile (Period9) e la linea rossa è il lungo periodo di media mobile (Period18). Analizzando il grafico, si potrebbe riscrivere le regole di negoziazione o segnali forex come: Comprare quando la linea gialla è al di sopra della linea di vendita rosso quando la linea gialla è al di sotto della linea rossa Invece di spendere molto tempo di codifica questa strategia forex, con Molanis Strategy Builder è possibile creare un diagramma di trading che rappresenta la strategia di media mobile in pochi minuti. Basta trascinare e rilasciare due blocchi l'analisi tecnica, uno Acquisto blocco e un blocco di vendita. li Collegare e impostare i parametri dei blocchi per ottenere uno schema come il seguente: Questo diagramma trading ha due percorsi di trading. Quello di sinistra è evidenziato. Si va dal blocco START per il blocco END. Si potrebbe leggere come: Acquista 1 sacco di EURCAD (con un 100 pip Take Profit e 50 pip Stop Loss) quando il breve periodo media mobile (9) è sopra il lungo periodo di media mobile (18). Ricordare di leggere il diagramma di negoziazione in direzione opposta al flusso negoziazione. Il percorso di scambio dei diritti potrebbe essere letto come: Vendi 1 sacco di EURCAD (con un 100 pip Take Profit e 50 pip Stop Loss) quando il lungo periodo di media mobile (18) è al di sopra della media mobile di breve periodo (9). Generazione del codice MQL per MetaTrader con un solo fare clic sul menu Trading Diagramma, cliccare su Genera codice MQL4 per ottenere la finestra del codice MQL4. Molanis Strategy Builder consente di aprire il vostro consulente esperto direttamente con MetaTrader o per salvare come file MQ4. Non perdere il nostro video tutorial onSimple Expert Advisor Problema 29. Creare un trading Expert Advisor. Argomenti preliminari Prima di iniziare a programmare una negoziazione Expert Advisor, è necessario definire i principi generali di un programma futuro. Non ci sono rigoroso programma la creazione di regole. Tuttavia, una volta creato un programma, un programmatore di solito continua a migliorarla. Per essere in grado di comprendere facilmente il programma in futuro, deve essere creato secondo un ben pensato e facile da capire schema (è particolarmente importante se il programma sarà ulteriormente migliorato da un altro programmatore). Il programma più conveniente è quella che consiste di blocchi funzionali, ciascuno dei quali è responsabile di una parte dei calcoli propria. Per creare un algoritmo di un trading Expert Advisor, consente di analizzare ciò che un programma di funzionamento dovrebbe fare. Uno dei dati più importanti nella formazione di ordini commerciali è l'informazione sugli ordini già esistenti in un terminale del cliente. Alcune delle strategie di trading consentono solo un ordine unidirezionale. Generalmente, se una strategia di trading permette, parecchi ordini possono essere aperti in un terminale, allo stesso tempo, se il loro numero dovrebbe essere ragionevolmente limitato. Quando si utilizza qualsiasi strategia, decisioni commerciali devono essere effettuate tenendo conto della situazione attuale. Prima di una decisione commerciale è in un programma, è necessario sapere quali ordini di negoziazione sono già stati aperti o immesse. Innanzitutto un programma deve contenere un blocco di ordini contabile che è tra i primi ad essere eseguito. Durante un EA decisioni esecuzione di trading devono essere effettuate, la cui attuazione porta alla esecuzione delle operazioni commerciali. parte del codice responsabile della formazione degli ordini commerciali, è meglio scritto in un blocco separato. Un Expert Advisor può formare una richiesta di commercio per aprire un nuovo ordine in corso o di mercato, chiudere o modificare qualsiasi di ordini esistenti o eseguire alcuna operazione. Un EA deve anche calcolare i prezzi di ordine a seconda di una utenti desiderano. decisioni commerciali devono essere effettuate in un programma sulle basi di criteri del commercio. Il successo di tutto il programma dipende dalla correttezza di rilevare criteri commerciali nel programma. Quando si calcola criteri del commercio un programma può (e deve) tener conto di tutte le informazioni che possono essere utili. Ad esempio, un consulente esperto in grado di analizzare combinazione di valori degli indicatori tecnici, tempo di importanti comunicati stampa, ora corrente, i valori di alcuni livelli di prezzo, ecc Per comodità, la parte di programma responsabile per il calcolo dei criteri di trading dovrebbe essere scritto in un separato bloccare. Una negoziazione Expert Advisor deve necessariamente contenere errori blocco di elaborazione. Analizzando errori che possono verificarsi nell'esecuzione di operazione di commercio permette, da un lato, per ripetere una richiesta commercio e, dall'altro, per informare un utente di una possibile situazione di conflitto. Struttura di un semplice consulente esperto seguito è uno schema strutturale di un semplice consulente esperto costruito sulla base di diversi blocchi funzionali, in ciascun blocco una certa parte staccata di calcoli. Il successivo stadio di sviluppo di EA non vi è ancora il codice del programma. Allo stesso tempo, l'algoritmo di un programma è in gran parte formata. Come l'EA costruito sulle basi del regime offerto opererà può essere facilmente comprensibile semplicemente a guardare il programma e orientare su nomi di blocchi e array di relazioni (il controllo di passaggio) tra di loro. Dopo l'avvio del programma di controllo viene passato al blocco del trattamento preliminare. In questo blocco di alcuni parametri generali possono essere analizzati. Ad esempio, se non ci sono abbastanza bar in una finestra (barre necessarie per il calcolo dei parametri di indicatori tecnici), EA non sarà in grado di funzionare adeguatamente. In tal caso un EA deve terminare il funzionamento preliminarmente informare un utente su di esso e la segnalazione circa la causa della cessazione. Se non ci sono contraindicatons di carattere generale, il controllo passa al blocco ordinare contabile. Nel blocco della contabilità ordina il numero e la qualità degli ordini esistenti in un terminale client per una sicurezza (alla finestra di cui la EA è allegata) viene rilevato. In questo blocco devono essere eliminati gli ordini di altri titoli. Se una strategia di trading programmato richiede utilizzando solo gli ordini di mercato (e non fa uso di ordini pendenti) il fatto della presenza di ordini in sospeso deve essere rilevato. Se una strategia ammette un solo ordine di mercato e ci sono effettivamente diversi ordini, questo fatto dovrebbe essere noto. Il compito del blocco dell'ordine contabile (in questo schema) è nel definire se la situazione commerciale attuale corrisponde con quello atteso, ossia quella in cui l'AE può adeguatamente operare. Se la situazione corrisponde, il controllo deve essere passato al blocco successivo per continuare l'operazione EA in caso contrario, l'operazione di EA deve essere terminato e questo fatto deve essere segnalato a un utente. Se non ci sono ordini nel terminale o il numero e la qualità degli ordini esistenti corrisponde a quanto ci si aspettava, il controllo viene passato al blocco di definizione dei criteri di trading. In questo blocco sono calcolati tutti i criteri necessari per prendere decisioni commerciali, vale a dire i criteri per l'apertura, la chiusura e modifica degli ordini. Inoltre il controllo viene passato al blocco di ordini di chiusura. E 'facile capire perché nello schema offerto il blocco di ordini di chiusura viene eseguito prima del blocco di apertura di ordini. E 'sempre più ragionevole per elaborare primi ordini esistenti (vicino o modificare) e solo dopo che per aprire nuovi ordini. In generale, è giusto essere guidati dal desiderio di avere come piccoli ordini come possibile. Durante l'esecuzione di questo blocco tutti gli ordini, per cui è stato attivato il criterio di chiusura, devono essere chiusi. Dopo tutti gli ordini necessari è stato chiuso, il controllo passa ad un blocco di nuovo calcolo ordini dimensioni. Ci sono molti algoritmi per calcolare un volume dell'ordine. Il più semplice di loro sta usando una dimensione costante sacco fissa. È conveniente utilizzare questo algoritmo in un programma di strategie di test. metodo più popolare di definire un formato di ordine è l'impostazione del numero di lotti a seconda della quantità di margine libero, ad esempio 30-40 di esso. Se margine libero non è sufficiente, il programma cessa la sua attività dopo aver informato l'utente circa la ragione. Una volta definito il numero di lotti per l'apertura di nuovi ordini, il controllo viene passato per ordinare blocco di apertura. Se uno qualsiasi dei criteri calcolata punti precedenti per la necessità di aprire un ordine di un certo tipo, una richiesta commercio per aprire un ordine è formato in questo blocco. C'è anche l'errore di blocco analizzando in un Expert Advisor. Se una qualsiasi operazione di commercio riuscita, controllo (solo in questo caso) viene passato al blocco di elaborazione di errore. Se un errore restituito da un server o terminale del cliente non è cruciale, un ulteriore tentativo di eseguire un'operazione di scambio. Se viene restituito un errore cruciale (ad esempio, un account è bloccato), EA deve terminare il suo funzionamento. Ricordate, in MQL4 non vi è alcuna possibilità di programma di terminare un'operazione EA in una finestra di sicurezza (da non confondersi con gli script, vedere Funzioni speciali). Cosa si può fare in modo programma è la cessazione di start (). In un nuovo inizio della funzione start () su un nuovo tick il valore di un trading vieta certa variabile bandiera (in questo caso attivata come risultato di un errore critico) può essere analizzato e controllo può essere passato per la cessazione della operazione funzione speciale così la formazione di nuova richiesta di commercio non è permesso. Nello schema offerto il valore del flag viene analizzato nel blocco del trattamento preliminare. prezzi Trading strategia di mercato sono in continuo movimento. stato del mercato in qualsiasi momento del tempo può essere condizionalmente caratterizzato sia come tendenza - forte variazione di prezzo unidirezionale (aumento o una diminuzione), o come un piatto - movimento laterale dei prezzi con deviazioni deboli da una certa media. Queste caratteristiche sono proprie condizionale, perché non ci sono criteri chiari, in base al quale tendenza o appartamento possono essere identificati. Ad esempio, i movimenti laterali lunghe con forti deviazioni che possono essere ricondotti né ad una TV né di una tendenza. Generalmente si presume che il mercato è principalmente nello stato di movimento laterale e andamento generalmente avvengono 15-20 di tempo. Tutte le strategie di trading possono anche essere convenzionalmente divisi in due gruppi principali. Il primo gruppo comprende le strategie di piatti-oriented. L'idea principale di tali strategie è che dopo un prezzo deviazione evidente deve tornare alla posizione precedente, ecco perché ordini vengono aperti in direzione contraria al ultimo movimento prezzo. Il secondo strategie di gruppo sono strategie di tendenza, quando gli ordini sono aperti nella stessa direzione del movimento di prezzo sale. Ci sono più complicati (combinato) strategie. Tali strategie prendono in considerazione molti fattori diversi che caratterizzano mercato come un trading risultato può essere eseguito sia in piano e di tendenza. Non è difficile da attuare negoziazione secondo questa o quella strategia tecnicamente - MQL4 contiene tutto il necessario per mezzo di esso. Il lavoro principale nella creazione di una propria strategia consiste nella ricerca di criteri commerciali. Criteri di negoziazione In questo esempio cercheremo di costruire una tendenza Expert Advisor, vale a dire quella che si aprirà gli ordini nella direzione del movimento dei prezzi. Quindi, abbiamo bisogno di trovare tra i vari indicatori tecnici quelli che rilevano una tendenza che inizia. Uno dei metodi più semplici di ricerca criteri di trading si basa sull'analisi della combinazione di Mas con diversi periodi medi. Figura. 111 e Fig. 112 mostra la posizione di due differenti MA (con periodi di media 11 e 31) su differenti parti di mercato. Medie con piccolo periodo medio (linee rosse) sono più vicini ad un grafico dei prezzi, tortuoso e mobile. Medie mobili con grande periodo di calcolo della media (linea blu) sono più inerti, hanno lag più grande e si trovano lontano dai prezzi di mercato. Consente di prestare attenzione ai luoghi dove Mas con diversi periodi medi si incrociano e cercare di decidere, se il fatto di attraversamento MA può essere utilizzato come criterio di lettura. Figura. 111. Crossing di MA (11) e MA (31) quando il prezzo cambi di direzione del movimento. In Fig. 111 vediamo una parte di mercato in cui l'apertura di ordini nella direzione del movimento dei prezzi al passaggio MA è giustificata. Nel punto A la linea rossa attraversa la blu dal basso verso l'alto, dopo che il prezzo di mercato continua a crescere per qualche tempo. Ulteriore passaggio MA inverso indica la variazione di prezzo direzione del movimento. Se apriamo un ordine di acquisto nel punto A e chiuderlo in B, avremo proporzionale profitto a differenza di prezzi A e B. Figura. 112. Crossing di MA (11) e MA (31) quando il prezzo cambi di direzione del movimento. Allo stesso tempo ci sono altri momenti del mercato quando MA croce, ma ciò non porta ad un'ulteriore considerevole aumento dei prezzi o caduta (Fig. 112). Gli ordini aperti al passaggio MA in quei momenti porterà a perdite. Se vendere è aperto in A e chiuso a B, come ad esempio il commercio porterà perdite. Lo stesso si può dire di un ordine di acquisto aperto a B e chiuso a C. Il successo dell'intera strategia attuata sulla base di attraversamento MA dipende dal numero di pezzi che possono essere caratterizzate come tendenza e piatta. Nel piatto spesso MA traversata è un evento regolare che interferisce con qualsiasi strategia di tendenza. Numerosi falsi segnali di norma portare a perdite. Ecco perché questo segno - attraversamento di Mas con diversa periodo medio - può essere utilizzato per la costruzione di strategie di trading solo in combinazione con altri segni che dimostrano una tendenza. In questo esempio (per la costruzione di un semplice Expert Advisor) dovremo rifiutare con questo segno. Useremo un altro segno. Analizzando visivamente il carattere delle variazioni dei prezzi nel mercato, possiamo vedere che un lungo una direzione di aumento del prezzo o caduta appare spesso come risultato di un breve movimento forte. In altre parole, se entro un breve periodo un forte movimento è accaduto, possiamo aspettarci la sua continuazione in un periodo di medio termine. Figura. 113 mostra il periodo di mercato in cui un forte movimento ha portato alla continuazione della variazione di prezzo nella stessa direzione. Mentre la quota di forte movementquot possiamo usare la differenza di Mas con diversi periodi medi. Più forte è il movimento, il più grande è il ritardo di MA con grande periodo di mediazione da MA con un piccolo periodo di calcolo della media. Inoltre, anche i forti movimenti di prezzo discontinui con ulteriori ritorno non si traducono in una grande differenza tra AIC, vale a dire numerosi falsi segnali non vengono visualizzati. Ad esempio, salto di prezzo da 50 punti con ulteriore ritorno (al centro in Fig. 113) ha comportato aumento di differenza tra le AM, solo di 20 punti. Allo stesso tempo, un movimento molto forte (che non è di solito accompagnata da una notevole correzione) al punto A comportato l'aumento differenza fino a 25 - 30 punti. Se Acquista ordine si apre quando si raggiunge un certo valore di differenza tra AIC, per esempio in A, molto probabilmente l'ordine sarà redditizio quando il prezzo raggiunge un valore di ordine di arresto prestabilito. Consente di utilizzare questo valore come criterio di trading nel nostro Expert Advisor. Numero di ordini In questo esempio andremo ad analizzare un Expert Advisor che ammette la presenza di un solo ordine di mercato, ordini pendenti non sono forniti. Tale approccio è giustificato non solo in questo esempio certo, ma può essere utilizzato come base per qualsiasi strategia. ordini pendenti sono di solito utilizzati quando uno sviluppatore ha piuttosto un criterio affidabile per prevedere il futuro variazione di prezzo con alta probabilità. Se non c'è tale criterio, nessuna necessità di usare attesa di ordini. La situazione in cui diversi ordini opposte per titolo sono aperti, inoltre, non può essere considerato ragionevole. È stato scritto in precedenza che dal punto di vista economico opposta ordini sono considerati senza senso, soprattutto se i prezzi degli ordini sono uguali (vedere Chiusura e cancellazione ordini). In tal caso dovremmo chiudere un ordine da un altro e attendere un segnale per aprire un ordine mercato in una certa direzione. Rapporto di criteri commerciali Da questa posizione diventa chiaro che cosa i rapporti sono possibili tra i criteri di trading. Figura. 114 mostra tre varianti di correlazione dei criteri di trading, quando ogni criterio è importante (valido). Azioni (apertura e di chiusura dei mercati ordini) terrà in senso orario sui seguenti immagini. Figura. 114. apertura Ordine e la correlazione criteri di chiusura (A e B - corretta, c - non corretta). La variante più popolare di un criterio di negoziazione formate correttamente è la variante a. Dopo essere stato aperto un ordine di mercato Buy si svolge su fino al momento in cui il criterio che richiede i suoi fattori scatenanti di chiusura. Dopo che una pausa verifica quando ordini vengono aperti. Ulteriori un Sell ordine di mercato può essere aperto. Condizioni per la chiusura di un ordine di vendita (secondo criteri formate correttamente) si verificano in precedenza, che le condizioni per l'apertura di un ordine di acquisto. Tuttavia, un ordine di acquisto può essere aperto ancora una volta, se un criterio di trading richiede questo. Ma secondo questa variante un ordine di mercato non può essere aperto se esiste un ordine mercato aperto nella direzione contraria. criteri simili correlazione è nella variante b. La differenza è che un criterio per aprire qualsiasi ordine di mercato è allo stesso tempo un criterio per la chiusura ordine inverso. Questa variante come variante un non consente diversi ordini aperti nel terminale contemporaneamente sul titolo. La variante di criteri correlazione è corretto. Secondo tale variante l'apertura di un ordine di mercato è consentita quando gli ordini contrari non sono ancora chiuse, che è senza senso. Non ci può essere rari casi in cui questa variante è in parte giustificato. Apertura di un ordine contrario a volte è accettabile per compensare le perdite che si verificano in piccole correzioni dopo forti movimenti di prezzo. In tali casi, un ordine opposto può essere aperto dello stesso o più piccolo valore rispetto al già esistente e quindi chiuso quando la correzione è finita. Tale tattica permette di non interferire con l'ordine quotmainquot aperto nella direzione di tendenza. In caso generale diversi ordini una direzione sono anche possibili. Questo può essere giustificato quando un ordine precedente aperta è protetta da un ordine di arresto e il criterio indicando l'andamento dei prezzi nella stessa direzione innescato ancora una volta. Tuttavia, quando si crea una tale strategia, uno sviluppatore deve essere pienamente consapevole che in caso di un brusco cambiamento movimento dei prezzi gli ordini di arresto poste possono essere non eseguiti da alcuni broker al primo tocco prezzo. E la perdita sarà proporzionale al valore totale degli ordini di mercato uno-direzionale. Nel nostro esempio usiamo variante B di criteri di negoziazione di correlazione. Tutti gli ordini di mercato aperte vengono chiuse con un ordine di arresto o dopo un criterio di aprire un ordine in trigger direzione opposta (qui criterio della chiusura Acquisto coincide con quella di aprire Sell e viceversa). Dimensioni di ordini aperti in tutti i formati di ordine strategia di trading dovrebbe essere ragionevolmente limitato. In un caso semplice una dimensione ordine fisso viene utilizzato in un Expert Advisor. Prima dell'inizio dell'operazione EA, un utente può impostare qualsiasi dimensione ordini futuri e lasciare invariato per qualche tempo. Inoltre, se l'equilibrio cambia, un utente può impostare un nuovo valore di numeri di lotto di ordini aperti. Una dimensione troppo piccolo ordine fornisce più fiducia in funzione al cambiamento del mercato imprevedibile, ma il profitto in caso di successo sarà non così grande. Se la dimensione ordine è troppo grande, grande profitto può essere acquisita, ma come ad un EA sarà troppo rischioso. Di solito la dimensione degli ordini aperti è impostato in modo, che i requisiti di margine non superano 2-35 per cento del margine di equilibrio o gratuito (se una strategia consente una sola aperto ordine, equilibrio e margine libero al momento prima dell'apertura ordine sarà pari). In questo esempio, entrambe le versioni sono implementati. Un utente può scegliere di indicare direttamente i valori degli ordini o impostare il valore in percentuale dal margine libero. Programmazione Dettagli Un semplice tendenza Expert Advisor tradingexpert. mq4 costruito sulla base di argomentazioni precedenti può assomigliare a questo: descrivere variabili Un altro criterio di stima programma è la sua leggibilità. Un programma è considerato essere correttamente scritta, se può essere facilmente letto da altri programmatori, ecco perché tutte le parti principali del programma e principali momenti che caratterizzano la strategia devono essere commentate. Questo è anche il motivo per cui si raccomanda di dichiarare e commentare tutte le variabili all'inizio del programma. Nel blocco sono descritti 1-2 variabili esterne e globali. Secondo le regole, le variabili esterne e globali devono essere aperte prima del loro primo utilizzo (vedi Tipi di variabili), ecco perché sono dichiarate nella parte di testa del programma. Tutte le variabili locali del funzione start () sono raccolti e descritti nella parte superiore funzioni (blocco 2-3) subito dopo l'intestazione della funzione. Regole di dichiarare le variabili locali non lo richiedono, ma anche non vietano. Se un programmatore incontra difficoltà nel comprendere il significato di una variabile durante la lettura del programma, si può fare riferimento alla parte superiore del programma e scoprire il significato e tipo di qualsiasi variabile. E 'molto comodo in pratica di programmazione. Blocco di elaborazione preliminare In questo esempio la preelaborazione consiste di due parti (blocco 3-4). Il programma termina operazione se non ci sono abbastanza bar in una finestra di protezione in un caso del genere è impossibile rilevare correttamente (nel blocco 5-6) valori medi necessari per il calcolo criteri movimento. Inoltre qui viene analizzato il valore del lavoro variabile. Nel normale funzionamento EA il valore della variabile è sempre vero (è impostata una volta durante l'inizializzazione). Se un errore critico si verifica nel funzionamento del programma, falso è assegnato a questa variabile e Start () termina il suo funzionamento. Questo valore non cambierà in futuro, è per questo che il seguente codice non viene eseguito. In tal caso il funzionamento del programma deve essere arrestato e la ragione per l'errore critico deve essere rilevato (se necessario, un centro di negoziazione deve essere contattato). Dopo la situazione è risolto, il programma può essere avviato nuovamente, cioè l'EA può essere collegato a una finestra di sicurezza. ordini contabili Il consulente esperto descritto permette di lavorare solo con un ordine di mercato. Il compito del blocco ordini contabile (blocco 4-5) è quello di definire le caratteristiche di un ordine aperto, se presente. Nel ciclo passando attraverso gli ordini per tutti gli ordini di mercato esistenti e in attesa vengono controllati, vale a dire dal primo (int i1) per l'ultimo (iampltOrdersTotal ()). In ogni ciclo di iterazione l'ordine successivo viene selezionata dalla funzione OrderSelect (). La selezione viene effettuata da una fonte di ordini aperti e in attesa (SELECTBYPOS). Se la selezione viene eseguita con successo (cioè non vi è un ordine più nel terminale), ulteriormente questo ordine e la situazione deve essere analizzata: se l'ordine viene aperto per la sicurezza, in cui l'EA opera, se l'ordine è mercato o sospeso anche deve essere presa in considerazione quando il conteggio ordini. Nella linea: tutti gli ordini aperti per un altro titolo sono eliminati. Operatore continuare fermate l'iterazione e le caratteristiche di un tale ordine non vengono elaborati. Ma se l'ordine viene aperta per la sicurezza, per la finestra di cui l'EA è collegato, viene ulteriormente analizzato. Se OrderType () restituisce il valore più di 1 (vedere Tipi di transazioni), l'ordine selezionato è in attesa di uno. Ma in questo Expert Advisor non è prevista la gestione degli ordini in sospeso. Significa l'esecuzione di start () deve essere terminato, perché una situazione di conflitto si è verificato. In tal caso, dopo un messaggio circa l'inizio terminazione operazione () esecuzione viene interrotta dal ritorno dell'operatore. Se l'ultimo controllo ha mostrato che l'ordine analizzato è un ordine di mercato, il numero totale di ordini per un titolo è calcolato e analizzato. Per la prima di tali ordini tutte le caratteristiche essenziali sono definiti. Se nella prossima iterazione del contatore dell'ordine (variabile totale) trova il secondo ordine di mercato, la situazione è anche considerato il conflitto, perché la EA non in grado di gestire più di un ordine di mercato. In tal caso, inizio () l'esecuzione viene arrestato dopo che mostra un messaggio corrispondente. Come risultato dell'esecuzione del blocco dell'ordine contabilità (se tutti i controlli sono stati completati) variabile Totale conserva il suo valore zero se non vi sono ordini di mercato, o ottiene il valore 1 se vi è un ordine di mercato per la nostra sicurezza. In quest'ultimo caso alcune variabili impostate in corrispondenza con le caratteristiche di ordine (numero, tipo, prezzo di apertura, stop livelli e valore dell'ordine) anche ottenere i loro valori. Calcolo Criteri Trading Nella definizione esempio analizzato di criteri commerciali (blocco 5-6) è calcolato sulla base della differenza tra le medie mobili con diversi periodi di media. Secondo criteri accettati un grafico è bull-diretto se il valore corrente della MA con piccolo periodo è maggiore del valore di MA con periodo più grande, e la differenza tra i valori è maggiore di un certo valore. In un MA movimento orso con piccolo periodo è inferiore MA con periodo più grande e la differenza è maggiore di un certo valore critico. Al blocco di iniziare valori di Mas con periodi medi PeriodMA1 e PeriodMA2 sono calcolati. Il fatto di significatività di qualsiasi criterio di negoziazione è espressa mediante il valore di una corrispondente variabile. Variabili OpnB e OpnS denotano il criterio di attivazione per l'apertura di acquisto e in vendita, variabili Cls e CLS - per la chiusura. Ad esempio, se un criterio per l'apertura di Buy non ha innescato, il valore di OpnB rimane falsa (insieme alla inizializzazione delle variabili), se ha innescato, OpnB ottiene il valore vero. In questo caso, il criterio per la chiusura Sell coincide con quella di apertura Acquisto, criterio per apertura Sell coincide con quella di chiusura Acquisto. criteri commerciali accettati in questo esempio sono utilizzati solo a scopo didattico e non devono essere considerati come una linea guida quando le negoziazioni su un conto reale. Chiusura ordini è stato scritto in precedenza che questo Expert Advisor è stato progettato per il funzionamento con un solo ordine di mercato aperto per un titolo, al quale finestra l'EA è collegato. Per il momento in cui il controllo del programma viene passato al blocco di chiusura ordine si sa per certo che al momento attuale non ci sono o non ordini per la sicurezza, o c'è solo un ordine di mercato. Ecco perché il codice degli ordini blocco di chiusura è scritto in modo che un solo ordine può essere chiuso con successo. Questo blocco è basato sul ciclo infinito mentre, il cui corpo è costituito da due parti analoghe: una per la chiusura di un ordine di acquisto, un altro per la chiusura di un ordine di vendita. Mentre viene qui utilizzato per lo scopo che in caso di un errore di funzionamento commercio potrebbe essere ripetuta ancora una volta. Nell'intestazione del primo operatore se la condizione per la chiusura di un ordine di acquisto è calcolato (Vendere gli ordini sono chiusi nel modo analogo). Se il tipo di un ordine precedente aperto corrisponde ad acquistare (vedere Tipi di Trades) e il segno per la chiusura Buy è rilevante, il controllo viene passato al corpo se l'operatore dove si forma una richiesta per chiudere. Come un prezzo di chiusura ordine nella funzione OrderClose () il valore di un preventivo su due lati corrispondente al tipo di ordine è indicato (vedere Requisiti e limitazioni a fare mestieri). Se un'operazione di commercio viene eseguita correttamente, dopo un messaggio circa la chiusura dell'ordine è indicata la corrente mentre iterazione è fermo e l'esecuzione del blocco di chiusura ordine è sopra. Ma se l'operazione non riesce, la funzione definita dall'utente per l'elaborazione di errori FunError () si chiama (blocco 10-11). Errori di elaborazione come parametro passato a FunError () l'ultimo codice di errore calcolato da GetLastError () viene utilizzato. A seconda del codice di errore FunError () restituisce 1 se l'errore non è critico e l'operazione può essere ripetuta, e 0 se l'errore è critico. Gli errori critici sono divisi in due tipi - quelli, dopo di che l'esecuzione di un programma può essere continuato (per esempio, un errore comune) e quelli, dopo di che l'esecuzione di tutte le operazioni di commercio deve essere fermato (per esempio, bloccato il conto). se dopo un'operazione commercio riuscita la funzione definita dall'utente restituisce 1, la corrente mentre iterazione è terminata e durante la successiva iterazione un'altra è tentato di eseguire l'operazione - per chiudere l'ordine. Se la funzione restituisce 0, l'esecuzione iniziale corrente () viene arrestato. Al successivo avvio tick () sarà avviato dal terminale del cliente di nuovo e se si conservano le condizioni per la chiusura dell'ordine, un altro tentativo di chiudere l'ordine sarà fatto. Se durante l'elaborazione di errore si è scoperto che un'ulteriore esecuzione del programma ha senso (ad esempio il programma opera su una versione terminale del cliente) durante il successivo avviare l'esecuzione della funzione start speciale () sarà terminato nel blocco di elaborazione preliminare quando analizzando il valore del lavoro variabile. Calcolo quantità di lotti per i nuovi ordini Importo dei lotti può essere calcolato in conformità con le impostazioni degli utenti seguito una delle due varianti. La prima variante è un certo valore costante impostato dall'utente. Secondo la seconda variante la quantità di lotti è calcolato sulla base di un importo pari ad una certa percentuale (impostato dall'utente) di un margine libero. All'inizio del blocco di definire la quantità di lotti per nuovi ordini (blocco 7-8) sono calcolati valori necessari di alcune variabili - quantità minima consentita di lotti e fase di cambiamento lotto costituito da un broker, margine libero, prezzo, un lotto per la sicurezza. In questo esempio viene fornito il seguente. Se un utente ha creato un certo valore non-zero della variabile Lts esterna, per esempio 0,5, è accettato come la quantità di lotti Lts quando si forma una richiesta commercio aprire un ordine. Se 0 è assegnato al Lts, il numero di lotti Lts è definita sulla base delle variabili (Prots percentuali), margine libero e le condizioni stabilite da un broker. Dopo Lts è calcolato, viene condotta una verifica. Se questo valore è inferiore al valore consentito minimo, il valore consentito minimo è accettato. ma se margine libero non è sufficiente, dopo un messaggio corrispondente all'esecuzione start () viene terminato. Apertura Ordini Il blocco di aprire ordini (blocco 8-9) come il tizio di aprire gli ordini è un ciclo infinito istante. Nell'intestazione del primo operatore, se si calcolano le condizioni per l'apertura di un ordine di acquisto: se non ci sono ordini per la sicurezza (variabile totale è uguale a 0) e il segno per l'apertura di un ordine di acquisto è rilevante (OpnB è vero), il controllo è passato a se il corpo dell'operatore per l'apertura di un ordine. In tal caso, dopo i tassi sono prezzi aggiornati per i livelli di stop sono calcolati. I valori dei livelli di stop sono impostati da un utente in variabili esterne StopLoss e TakeProfit. In un caso generale un utente può impostare i valori di questo parametri più piccolo che un broker permette. Oltre ad un broker può cambiare la distanza consentita minima in qualsiasi momento (si tratta di un caso spesso a forti movimenti di mercato, per esempio, prima importante comunicato stampa). Ecco perché prima di ogni ordine di aprire i livelli di arresto devono essere calcolare tenendo conto dei valori impostati bu un utente e il valore consentito minimo istituito da un broker. Per calcolare i livelli di arresto della funzione NewStop definita dall'utente () è usato come un parametro passato viene utilizzato il valore del livello di arresto impostato dall'utente. In NewStop () prima la corrente minima distanza consentita viene calcolata. Se il valore impostato da un utente corrisponde a una requisiti broker, viene restituito questo valore. Se è minore del valore consentito, viene utilizzato il valore consentito da un mediatore. I prezzi delle richieste di arresto sono calcolati dal corrispondente citazione fronte-retro (vedere Requisiti e limitazioni a fare mestieri). Una richiesta commercio per aprire un ordine formato utilizzando la funzione OrderSend (). Per il calcolo del prezzo di apertura dell'ordine e dei prezzi delle richieste di arresto dei valori di citazione a due facciate corrispondenti al tipo di ordine vengono utilizzati. Se un'operazione di scambio ha avuto successo (vale a dire un server ha restituito il numero di un ordine aperto) dopo un messaggio su un apertura ordine di successo è mostrato. start () l'esecuzione è terminata. Se un ordine non è stato aperto e il terminale client restituito un errore, l'errore viene elaborato secondo l'algoritmo descritto in precedenza. Alcuni Codice peculiarità analizzato codice Expert Advisor è orientata alla realizzazione di una certa strategia. Nota, alcune righe di programma contengono variabili e calcoli che sarebbe cambiato, se la strategia sono stati cambiati. Ad esempio, secondo la strategia accettato la Expert Advisor è stato sviluppato per funzionare solo con un ordine. Questo ha permesso di utilizzare il biglietto variabili sia per l'identificazione di un numero d'ordine di chiusura (nel blocco di chiusura 6-7) e per l'identificazione di un successo di un'esecuzione operazione di commercio all'apertura di un ordine (nel blocco dell'apertura 8-9 ). In questo caso tale soluzione è accettabile. Tuttavia, se prendiamo il codice analizzato come base per l'attuazione di un'altra strategia (ad esempio consentire ordini opposti) dovremo introdurre una o più variabili di essere in grado di riconoscere numeri di ordini aperti e identificare il successo delle operazioni commerciali. In further strategy modifications we will have to change come program lines containing part of logics contained in the source strategy. Namely in the order accounting block we will not have to terminate the program operation if there are several open orders for a security. Besides, conditions for opening and closing orders will alslo change. This will entail the code changing in blocks of opening and closing orders. On the basis of this analysis we can easily conclude that the described simple Expert Advisor is not perfect. In a general case, for the implementation of order accounting one should use a universal function based on using data arrays and not containing logics of a certain strategy. The same can be said about the blocks of opening and closing orders. A more complete program must contain a main analytical function, all other user-defined functions must be subordinate to it. This analytical function must contain a program code, in which all conditions for the implementation of any strategy are analyzed all subordinate functions must perform limited actions. The function of accounting orders must only account orders, functions of opening and closing orders must only open and close orders, and the analytical function must quotthinkquot and manage all other functions, i. e. call them when needed. EA Moving Average And if you use the colors to make the EA Ex: when the blue line crossing over the red line, close buy open sell. When the blue line crossing below the red line, close sell open buy . If it works. Please, send me a copy. rodrigokaus: We wanna EA with the determined parameters: 1 - TO DEVELOP EA OPENS The ORDERS CORRECTLY Thus The MAIN DIRECTION IS IDENTIFIED WHEN The SHORT MOVING AVERAGE CROSSES WITH the LONG One In The HOURLY DETERMINED ONES. 2 - LOTS, TRAILLING STOP, STOP LOSS And TAKE PROFIT FUNCTIONING CORRECTLY 3 - CLOSED EA FOR DETERMINED PAIR AND SCHEDULE (WITH POSSIBILITY OF ALTERATION FOR CHANGE) Already, I tested some versions of EAs of crossing of moving averages, including EMA, EMACROSS, LSMA, etc, but none of them opens the positions correctly when the short average crosses the long average. I send the chart to see the correct momento to the exatly moment of EA OPEN and CLOSE the positions. Couse anybody help me, I thank this

No comments:

Post a Comment