Unisciti alla nostra fan page
Moving Average - sistema esperto per MetaTrader 4
- Visualizzazioni:
- 337
- Valutazioni:
- Pubblicato:
- 2021.11.10 17:29
- Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
L'expert Moving Average per formare segnali di trade utilizza una media mobile. L'apertura e la chiusura delle posizioni avvengono quando la media mobile incontra il prezzo alla barra appena formata (indice della barra uguale a 1). La dimensione del lotto sarà ottimizzata secondo uno speciale algoritmo.
L'expert advisor analizza la concomitanza tra la media mobile e il grafico dei prezzi di mercato. Il controllo viene esguito tramite la funzione CheckForOpen(). Se la media mobile incontra la barra in modo tale che la prima sia superiore al prezzo di apertura ma inferiore al prezzo di chiusura, verrà aperta la posizione BUY. Se la media mobile incontra la barra in modo tale che la prima sia inferiore al prezzo di apertura ma superiore al prezzo di chiusura, verrà aperta la posizione SELL.
Il Money Management utilizzato nell'expert è molto semplice, ma efficace: il controllo sul volume di ogni posizione viene eseguito in base ai risultati delle transazioni precedenti. Questo algoritmo è implementato nella funzione LotsOptimized(). La dimensione del lotto di base è calcolata sulla base del rischio massimo ammissibile:
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
Il parametro MaximumRisk visualizza il rischio in percentuale per ogni transazione. Di solito ha un valore compreso tra 0,01 (1%) e 1 (100%). Per esempio, se il margine libero (AccountFreeMargin) è uguale a $20,500 e le regole del capital management prescrivono di utilizzare un rischio del 2%,la dimensione del lotto di base sarà data da 20500 * 0.02 / 1000 = 0.41. È molto importante controllare l'accuratezza della dimensione del lotto e normalizzare il risultato con i valori consentiti. Normalmente sono ammessi lotti frazionari con passo 0.1. Una transazione con volume di 0,41 non verrà eseguita. Per normalizzare, viene utilizzata la funzione NormalizeDouble() con precisione fino a 1 carattere dopo il punto. Ciò si traduce nel lotto base di 0,4. Il calcolo del lotto di base sulla base del margine libero consente di aumentare i volumi delle operazioni in base al successo del trading, ovvero di tradare con il reinvestimento. Questo è il meccanismo di base con la gestione obbligatoria del capitale per aumentare l'efficacia del trading. DecreaseFactor è la misura in cui la dimensione del lotto verrà ridotta dopo un trading non redditizio. Valori normali sono 2,3,4,5. Se le transazioni precedenti non sono state redditizie, i volumi successivi diminuiranno di un fattore DecreaseFactor per attendere il periodo non redditizio. Questo è il fattore principale nell'algoritmo di capital management. L'idea è molto semplice: se il trading sta avendo successo aumenta,l'expert lavora con il lotto base ottenendo il massimo profitto. Dopo la prima transazione non redditizia, l'esperto "ridurrà la velocità" fino a quando non verrà effettuata una nuova transazione positiva. L'algoritmo consente di disabilitare la "riduzione della velocità", per farlo è necessario specificare DecreaseFactor = 0. La somma delle ultime transazioni consecutive non redditizie viene calcolato nella cronologia delle transazioni. Il lotto base verrà ricalcolato su questa base:
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
Pertanto, l'algoritmo consente di ridurre efficacemente il rischio che si verifica a seguito di una serie di transazioni non redditizie. Alla fine della funzione la dimensione del lotto è obbligatoriamente verificata per la dimensione minima consentita perché i calcoli effettuati in precedenza possono portare a lotto = 0 :if(lot<0.1) lot=0.1;
L'esperto è principalmente destinato a lavorare con il periodo giornaliero e nella modalità di test - per avere i prezzi di chiusura. Traderà solo all'apertura di un nuova barra, ecco perché non è necessaria la modalità every-tick.I risultati dei test sono rappresentati nel report.
Strategy Tester Report
Moving Average
Simbolo EURUSD (Euro vs US Dollar) Periodo 1 Hour (H1) 2003.01.08 00:00 - 2003.11.25 00:00 Modello Every tick (basato su tutti i timeframe minimi disponibili con interpolazione frattale di ogni tick) Parametri Lots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11; Barre testate 19371 Tick modellati 656918 Qualità del modello 25.00% Deposito iniziale 10000.00 Profitto totale netto 1695.20 Profitto maggiore 4293.20 Perdita maggiore -2598.00 Fattore di profitto 1.65 Guadagno atteso 10.80 Drawdown assoluto 40.35 Drowdown massimo (%) 318.50 (3.0%) Trade totali 157 Posizioni corte (vincenti %) 73 (26.03%) Posizioni lunghe (vincenti %) 84 (32.14%) Trade profittevoli (% del totale) 46 (29.30%) Trade perdenti (% del totale) 111 (70.70%) Il più grande trade in profitto 262.55 trade perdente -91.00 Media trade in profitto 93.33 trade perdente -23.41 Massimo vittorie consecutive (profitto in denaro) 2 (387.15) perdite consecutive (perdita in denaro) 7 (-287.25) Massimale profitti consecutivi (conto delle vittorie) 387.15 (2) perdite consecutive (conto delle perdite) -287.25 (7) Media vincite consecutive 1 perdite consecutive 3
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/7927
Lo script invia un ordine pendente SELL STOP con data di espirazione e stampa il numero del ticket.
Modifica Ordine PendenteModifica Ordine Pendente - script che sceglie il primo ordine pendente nella lista, stampa i dati dell'ordine pendente selezionato, lo modifica e ne stampa i dati dopo la modifica.
E' designato per creare un periodo non standard del simbolo basato sull'uso di un periodo standard.
Convertitore di periodoUtilizza questo script per creare un timeframe personale non standard.