Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 1563
- Avaliação:
- Publicado:
- 2016.04.26 15:28
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Para formar sinais de negociação, o expert Moving Average usa uma média móvel. A abertura e o fechamento das posições são executadas quando a média móvel atende ao preço da barra recém-formada (índice da barra é igual a 1). O tamanho do lote será otimizado de acordo com um algoritmo especial.
O expert advisor analisa a relação entre a média móvel e a gráfico de preços do mercado. A verificação é realizada pela função CheckForOpen(). Se a média móvel encontra a barra de tal forma que a primeira é superior ao preço de abertura (Open), mas inferior ao preço de fechamento (Close), uma posição COMPRADA será aberta. Se a média móvel encontra a barra de tal forma que a primeira é inferior ao preço de abertura (Open), mas superior ao preço de fechamento (Close), uma posição VENDIDA será aberta.
O Gerenciador de Dinheiro usado no expert é muito simples, mas eficaz: o controle sobre cada volume da posição depende dos resultados das transações anteriores. Este algoritmo é implementado pela função LotsOptimized(). O tamanho de lote básico é calculado com base no risco máximo permitido:
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
O parâmetro MaximumRisk exibe a porcentagem básica de risco para cada transação. Geralmente, possui um valor entre 0,01 (1%) e 1 (100%). Por exemplo, se a margem livre (AccountFreeMargin) é igual a $20.500 e as regras de gestão de capital prescrevem a utilizar risco de 2%, o tamanho do lote básico fará 20500 * 0.02 / 1000 = 0.41. É muito importante controlar a precisão do tamanho do lote, para normalizar o resultado com os valores permitidos. Normais, os lotes fracionários com passo de 0,1 são permitidos. Uma transação com o volume de 0,41 não será realizada. Para normalizar, a função NormalizeDouble() é usado com precisão de até 1 caractere após o ponto. Isto resulta um lote básico 0,4. O cálculo do lote simples baseado na margem livre, permite aumentar em volumes de operação dependendo do sucesso na negociação, ou seja, negociando com reinvestimentos. Este é o mecanismo básico com uma gestão de capital obrigatória para aumento de efetividade na negociação. DecreaseFactor é a extensão que vai reduzir o tamanho do lote após uma negociação com prejuízo. Os valores normais são 2,3,4,5. Se as operações anteriores forma com prejuízo, os volumes subsequentes diminuem por um fator de DecreaseFactor, de modo a aguardar este período sem rentabilidade passar. Este é o principal fator no algoritmo de gerenciamento do capital. A ideia é muito simples: se a negociação está aumentando com sucesso, o expert trabalha com o lote básico para fazer o máximo de lucro. Após a primeira operação com prejuízo, o expert irá "reduzir a velocidade" até que uma nova transação positiva seja feita. O algoritmo permite desativar a "velocidade de redução", para fazê-lo basta especificar o DecreaseFactor = 0. O valor das últimas transações sucessivas com prejuízo é calculado no histórico da negociação. O lote básico será calculado com base nisto:
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
Deste modo, o algoritmo permite reduzir de forma eficaz o risco, após uma série de transações com prejuízo. O tamanho mínimo do lote é obrigatoriamente verificado no final da função, pois cálculos feitos anteriormente podem resultar no lote = 0:if(lot<0.1) lot=0.1;
O expert é destinado principalmente para trabalhar com período diário e, no modo de teste - responsável pelo fechamento dos preços. Ele vai negociar apenas com a abertura de uma nova barra, por isso os modos de modelagem a cada-tick não são necessários.Os resultados dos testes estão representados no relatório.
Relatório do Testador de Estratégia
Moving Average
Símbolo EURUSD (Euro vs US Dollar) Período 1 Hour (H1) 2003.01.08 00:00 - 2003.11.25 00:00 Modelo Cada tick (baseado em todos os intervalos de tempo disponíveis com interpolação fractal de cada tick) Parâmetros Lots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11; Barras em teste 19371 Ticks modelado 656918 Qualidade da modelagem 25.00% Depósito inicial 10000.00 Lucro líquido total 1695.20 Lucro bruto 4293.20 Perda bruta -2598.00 Fator de lucro 1.65 Pagamento esperado 10.80 Drawdown absoluto 40.35 Drawdown máximo (%) 318.50 (3.0%) Negociações totais 157 Posições Vendidas (vitória %) 73 (26.03%) Posições Compradas (vitória %) 84 (32.14%) Lucro nas negociações (% do total) 46 (29.30%) Perda nas negociações (% do total) 111 (70.70%) Maior lucro na negociação 262.55 perda na negociação -91.00 Média do lucro na negociação 93.33 perda na negociação -23.41 Máximo de vitórias consecutivas (lucro em dinheiro) 2 (387.15) perdas consecutivas (perda em dinheiro) 7 (-287.25) Máximo de vitórias consecutivas (contagem de vitórias) 387.15 (2) perdas consecutivas (contagem de perdas) -287.25 (7) Média do vitórias consecutivas 1 perdas consecutivas 3
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/7927
![Suporte \ Resistência](https://c.mql5.com/i/code/indicator.png)
Uma versão de indicadores para detectar os níveis de Suporte/Resistência.
![JMA](https://c.mql5.com/i/code/indicator.png)
The Jurik Moving Average indicator. JMA's improved timing and smoothness will astound you.
![Painter_v1](https://c.mql5.com/i/code/indicator.png)
Indicador da cor dos preços de certas zonas hh: mm_start antes de hh: mm_finish.
![MachXalert](https://c.mql5.com/i/code/indicator.png)
Indicador machXalert.