Título: (MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-10-27 17:54:23 O Expert Advisor abaixo serve como um exemplo simples e base para quem quiser evoluir a partir daí. O que ele faz é controlar duas médias móveis, uma rápida outra lenta, comprando no cruzamento para cima da rápida e shortando no cruzamento para baixo. O EA controla as médias móveis na barra que se formou imediatamente antes, e na anterior a essa, comprando no open da barra actual (é possível colocar a compra ainda ligeiramente mais cedo, se seguirmos o cruzamento na própria barra, mas isso não é feito por uma questão de simplicidade).
Este Expert advisor também serve para se terem duas funções úteis e reutilizáveis: uma função que controla quando se forma uma barra nova, e outra que fecha todas as posições do EA (usada para fechar tudo cada vez que há um sinal, invertendo depois, e também para fechar tudo se o EA for desligado). Este EA é utilizável na plataforma MT4, que usa como linguagem o MQL. Código: //+------------------------------------------------------------------+ //| Exemplo médias móveis.mq4 | //| XTB | //| | //+------------------------------------------------------------------+ #define IdentificadorEA 101 #property copyright "XTB" #property link "" //---- Input parameters - parâmetros do Expert Advisor que podem ser alterados quando se executa o dito. extern double Lotes=0.1; extern int MMlenta=50; extern int MMrapida=20; //------------------------------------------------------------------------------------------------- datetime LastTradeBarTime; //------------------------------------------------------------------------------------------------- // init, função executada quando o EA se inicia ou reinicia int init() { // Necessário para controlar se estamos numa nova barra LastTradeBarTime = Time[1]; return(0); } //------------------------------------------------------------------------------------------------- // start, função executada a cada tick recebido pelo EA int start() { // Variáveis temporárias, renovadas a cada chamada do EA double vMMrapida0; // MM rápida da última barra double vMMrapida1; // MM rápida da penúltima barra double vMMlenta0; // MM lenta da última barra double vMMlenta1; // MM lenta da penúltima barra int resposta; // Variável que obterá a resposta do terminal quando envia uma ordem // Verifica se estamos no início de uma barra e apenas processa as instruções se isso for verdade if (LastTradeBarTime == Time[0]) return(0); // Não é o primeiro tick de uma nova barra, por isso sai else { LastTradeBarTime = Time[0]; // continua // Valores das médias móveis na barra que acabou de terminar, e na imediatamente anterior vMMrapida0=iMA(Symbol(),0,MMrapida,0,MODE_SMA,PRICE_CLOSE,1); // Obtém o valor da MM rápida da barra que terminou vMMrapida1=iMA(Symbol(),0,MMrapida,0,MODE_SMA,PRICE_CLOSE,2); // Obtém o valor para a MM rápida da barra anterior vMMlenta0=iMA(Symbol(),0,MMlenta,0,MODE_SMA,PRICE_CLOSE,1); // Obtém o valor da MM lenta da barra que terminou vMMlenta1=iMA(Symbol(),0,MMlenta,0,MODE_SMA,PRICE_CLOSE,2); // Obtém o valor para a MM lenta da barra anterior // Verifica se existiu um cruzamento da MM rápida acima da MM lenta if (vMMrapida1<vMMlenta1 && vMMrapida0>vMMlenta0) { // Se já existem trades abertos, tem de os fechar if (OrdersTotal() > 0) FecharTodosTrades(); // Abre um trade longo resposta = OrderSend(Symbol(), OP_BUY, Lotes, NormalizeDouble(Ask,Digits), 3, 0, 0, "mm exemplo buy", IdentificadorEA, 0, Blue); } // Verifica se existiu um cruzamento da MM rápida abaixo da MM lenta if (vMMrapida1>vMMlenta1 && vMMrapida0<vMMlenta0) { // Se já existem trades abertos, tem de os fechar if (OrdersTotal() > 0) FecharTodosTrades(); // Abre um trade curto resposta = OrderSend(Symbol(), OP_SELL, Lotes, NormalizeDouble(Bid,Digits), 3, 0, 0, "mm exemplo sell", IdentificadorEA, 0, Red); } } return(0); } //------------------------------------------------------------------------------------------------- // deinit, função executada quando o EA termina int deinit() { // Se existem trades abertos, tem de os fechar if (OrdersTotal() > 0) FecharTodosTrades(); return(0); } //------------------------------------------------------------------------------------------------- // Função que fecha todos os trades existentes int FecharTodosTrades() { for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break; // A função vai fechar todas as ordens que sejam deste EA e sobre o símbolo corrente if(OrderMagicNumber() == IdentificadorEA && OrderSymbol() == Symbol()) { if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,White); if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,White); } } return(0); } // FIM //------------------------------------------------------------------------------------------------- Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: breakmov em 2010-10-29 17:14:51 Deixo tambem 3 sites que abordam tudo o que se refere a MLQ4.. tambem o antigo MLQ3 ou o recente MLQ5. :)
http://www.metatrader4.com/forum (http://www.metatrader4.com/forum) http://articles.mql4.com/ (http://articles.mql4.com/) http://www.forex-tsd.com/indicators-metatrader-4/ (http://www.forex-tsd.com/indicators-metatrader-4/) breakmov Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: local em 2010-11-01 10:21:03 Peço desculpa pela ignorância, mas como é que consigo passar essa informação para o programa?
Indo pelo Editor de linguagem Metastock não consigo escrever os dados que indicaste. Obrigado. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-01 10:45:44 Uma forma é gravar isto num ficheiro de texto com a extensão ".mq4" e colocar no directório indicado neste pequeno manual:
http://www.xtb.pt/?p=694#3 (ver "Formação") Outra, é entrar no editor metaquotes, abrir um "novo"/"new", escolher expert advisor, dar-lhe um nome e fazer "concluir", o que cria um novo EA vazio, depois fazer o copy+paste deste código para dentro desse EA vazio (substituindo o que ele criou), gravar e compilar. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: local em 2010-11-01 11:03:47 Utilizei o editor. Obrigado Inc!
Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: cp em 2010-11-11 00:52:00 e depois como se coloca isto a funcionar?
Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-11 01:12:51 Uma forma é gravar isto num ficheiro de texto com a extensão ".mq4" e colocar no directório indicado neste pequeno manual: http://www.xtb.pt/?p=694#3 (ver "Formação") Outra, é entrar no editor metaquotes, abrir um "novo"/"new", escolher expert advisor, dar-lhe um nome e fazer "concluir", o que cria um novo EA vazio, depois fazer o copy+paste deste código para dentro desse EA vazio (substituindo o que ele criou), gravar e compilar. cp, se seguires o que diz neste link, vais compreender como colocar a funcionar (ou testar). Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: cp em 2010-11-11 01:24:50 Uma forma é gravar isto num ficheiro de texto com a extensão ".mq4" e colocar no directório indicado neste pequeno manual: http://www.xtb.pt/?p=694#3 (ver "Formação") Outra, é entrar no editor metaquotes, abrir um "novo"/"new", escolher expert advisor, dar-lhe um nome e fazer "concluir", o que cria um novo EA vazio, depois fazer o copy+paste deste código para dentro desse EA vazio (substituindo o que ele criou), gravar e compilar. cp, se seguires o que diz neste link, vais compreender como colocar a funcionar (ou testar). Gracias! Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: cp em 2010-11-11 02:40:21 este EA simples, fiz o teste e a 0.1 deu -2100 euros em 15 dias ;D
Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-11 06:23:20 este EA simples, fiz o teste e a 0.1 deu -2100 euros em 15 dias ;D É um EA apenas para se compreender a mecânica do programa. E para se fazerem outros com base neste. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: cp em 2010-11-11 11:17:17 este EA simples, fiz o teste e a 0.1 deu -2100 euros em 15 dias ;D É um EA apenas para se compreender a mecânica do programa. E para se fazerem outros com base neste. sim, já percebi.. vou passar mais um bocadinho em volta de alguns conceitos de programação porque sem isso duvido que seja possível colocar as minhas condições em prática, uma dúvida que ainda não a tirei é, tendo um EA simples e depois de deixar a parte de programação, estando já na plataforma é possível acrescentar condições indo busca-las a uma outra pasta?? não sei se fará algum sentido :-\ Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-11 15:09:13 Não, para se introduzirem condições diferentes, é necessário alterar o programa.
Mas podes tentar usar um Expert Builder, que te permite construir um EA visualmente, sem programar o código. Por enquanto ainda não está em Português, mas podes ver aqui: http://www.xtb.es/?p=736#2 Vai a "Descargar". Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Thorn Gilts em 2010-11-11 19:45:40 precisava uma coisa neste sentido:
O trade já esta aberto: Se margem disponivel for suficiente para comprar 0.1 lotes de X então compra 0.1 lotes de X... ou seja, sempre que houver margem para comprar o activo X, ele compra. Sabes traduzir isto inc? Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-11 20:12:39 só no contexto de um programa, mas imagino que existam vários EA's com esse pedaço de código ...
Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Thorn Gilts em 2010-11-11 20:20:32 só no contexto de um programa, mas imagino que existam vários EA's com esse pedaço de código ... Pois, era para introduzir num EA, mas nao encontro nada nesse sentido. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-11 21:22:26 Existe uma função que podes usar para determinar a margem disponível: AccountFreeMargin()
Existe uma outra que te permite saber o valor do lote, valor do tick, etc: MarketInfo(Symbol(), MODE_LOTSIZE), MarketInfo(Symbol(), MODE_TICKVALUE) Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Thorn Gilts em 2010-11-12 20:16:57 Existe uma função que podes usar para determinar a margem disponível: AccountFreeMargin() Existe uma outra que te permite saber o valor do lote, valor do tick, etc: MarketInfo(Symbol(), MODE_LOTSIZE), MarketInfo(Symbol(), MODE_TICKVALUE) estou sem tempo, mas vou ver se faço algo dentro disso. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: maj em 2010-11-12 20:48:15 No inicio do start() podes fazer o check da free margin, if (AccountFreeMargin()<1000*Lots) return; no sublinhado defines os valores do activo Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-26 14:26:04 Boa tarde,
Será que me podem ajudar, estou a tentar instalar 1 EA que fiz o download do codebase mql e instalei-o na XTB, creio que fiz tudo bem, activei o consultor expert, passei pelo meta editor instalei-o no gráfico, onde aparece no canto superior direito, mas não dá ordens nem sinais. Fui ao site da XTB (formação) segui todos os passos mas, não consegui nada, devo estar a falhar nalguma coisa, o quê não sei. Penso que não é do EA porque tentei com outros e acontece o mesmo. Antecipadamente agradecido. Abraço e bons negócios Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: maj em 2010-11-26 16:26:05 Boas,
Verifica em tools -> options -> expert advisors , se o allow live trading está permitido. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-26 17:26:50 Boas maj,
sim está permitido. Abraço e bons negocios Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: maj em 2010-11-26 17:45:06 No terminal vê o que diz no journal e nos experts .
Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-26 17:47:24 Quanto a este expert, verifica também se estás num timeframe em que existam cruzamentos das médias, idealmente um timeframe baixo (1M, 5M) de forma a que observes rápido um cruzamento para ver se o EA gerou a ordem correspondente.
Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-26 18:29:04 Boas maj e inc.,
Antes demais obr. pela ajuda, experts: 2010.11.26 16:50:05 X EURUSD,M5: initialized 2010.11.26 16:50:01 X EURUSD,M5: loaded successfully journal: 2010.11.26 16:50:01 Expert X EURUSD,M5: loaded successfully obg. e bn Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: maj em 2010-11-26 18:44:16 Corre o EA no strategy tester, e vê o que diz o journal. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-27 00:07:54 maj,
Desculpa a ignorância mas o que é o strategy tester. obg. e bn. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-27 00:20:59 Boas,
Desculpa maj já sei o que é, ejá o meti a correr, quando tiver notícias aviso. Obg. e BN Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-27 11:28:52 Bom dia maj,
Isto é o relatório, Barras em teste 2065 Ticks modelados 148107 Qualidade do modelamento 59.98% Mismatched charts errors 44 Deposito Inicial 10000.00 Lucro líquido total 0.00 Lucro Bruto 0.00 Perda Bruta 0.00 Fator de lucro Compensação esperada 0.00 diminuição absoluta 0.00 Perda máxima 0.00 (0.00%) Relative drawdown 0.00% (0.00) Total de negociações 0 Posições de Venda (ganhos %) 0 (0.00%) Posições de Compras (ganhos %) 0 (0.00%) Negociações com Lucro (% do total) 0 (0.00%) Negociações com perdas (% do total) 0 (0.00%) Maior Negociações com lucro 0.00 Negociações com perda 0.00 Média Negociações com lucro 0.00 Negociações com perda 0.00 Máximo Ganhos consecutivos (lucro em dinheiro) 0 (0.00) Perdas consecutivas (perdas em dinheiro) 0 (0.00) Máximo ganhos consecutivos (contagem de ganhos) 0.00 (0) perdas consecutivas (contagem de perdas) 0.00 (0) Média ganhos consecutivos 0 perdas consecutivas 0 E isto é partes do que aparece no diário: 2010.11.27 00:18:10 X: loaded successfully 2010.11.27 00:18:17 TestGenerator: unmatched data error (high value 1.3485 at 2010.11.17 13:45 is not reached from the least timeframe, high price 1.3481 mismatches) 2010.11.27 00:18:17 TestGenerator: unmatched data error (volume limit 266 at 2010.11.26 15:45 exceeded) O gráfico e resultados não tem nada. Obg. e BN Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-27 15:35:14 Há um problema qualquer, configuraste tudo segundo o que diz no artigo http://www.xtb.pt/?p=694#3 nomeadamente em "Execução"?
No canto superior direito do gráfico onde colocas o EA, aparece uma carinha alegre? Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: maj em 2010-11-27 19:37:12 Boas, Pode ser um problema com o código, alteraste alguma coisa? De qualquer forma experimenta o EA em anexo no tester, em eurusd M5 a ver se funciona. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-28 01:43:53 Boas
Obrigado maj e Inc. por me terem tentado ajudar, mas já descobri qual o problema. Já consegui instalar o EA e já testei e está tudo bem agora. Mais 1 vez obrigado pela disponibilidade e tempo. Obg. e BN Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Incognitus em 2010-11-28 02:19:05 Óptimo, felizes testes.
Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: Gama em 2010-11-28 15:30:40 Boas Será possível dizer qual era o erro? Obrigado maj e Inc. por me terem tentado ajudar, mas já descobri qual o problema. Já consegui instalar o EA e já testei e está tudo bem agora. Mais 1 vez obrigado pela disponibilidade e tempo. Obg. e BN Pode ser útil para outros. Título: Re:(MQL) Introdução, um EA simples, de cruzamento de médias móveis Enviado por: ingenuo em 2010-11-29 11:42:29 Boas ,
O erro que eu cometi (a maioria de vocês não o cometia), foi ao fazer o download não gravei na pasta devida, e assim podia-o instalar na plataforma compilava-o instalava-o no gráfico sem nunca dar erro, só que não funcionava. Obrigado pela ajuda e espero que possa ser util a alguém. abraço e bons negócios |