Iniciação à programação em MQL4
5 Ficheiro(s) em Anexo
Com a popularização dos sistemas de trading automático, particularmente através da plataforma MetaTrader, são cada vez mais os que se interrogam como é que podem programar as suas estratégias ou apenas recolhas de informação mais simples de forma a automatizá-las.
Aquilo que recomendo vivamente é que se vá à fonte (the source:cool:), ou seja, ao livro do MQL4 que está disponível online em [URL="http://book.mql4.com/"]http://book.mql4.com/[/URL] De qualquer forma pretendo com este post mostrar os passos básicos de como é que se constrói e usa um programa no MetaTrader para que seja mais fácil para todos compreender o que é que se deve fazer com linhas de programação que tenham sido ou venham a ser partilhadas no futuro e até quem sabe um dia construir EAs inteiros em conjunto. O MetaTrader já tem um compilador da linguagem MQL4 incorporado por isso para passarem para a parte de programação basta clicarem no botão MetaEditor (Ponto de exclamação dentro do losango): Anexo 58 Se é a primeira vez que abrem o MetaEditor devem estar a ver o código de um dos dois EAs disponibilizados pela MetaQuotes: a Moving Average e a MACD. Clicam em New que é logo o primeiro botão à esquerda... Anexo 62 ...e seleccionam que tipo de programa é que querem fazer. Neste caso será um script. Indicam o nome do script e o vosso nome e clicam em concluir. Para este exemplo peguei na linha disponibilizada pelo afernandes noutro tópico para ver o spread de um par: double sprd =MarketInfo(Symbol(),MODE_SPREAD); Depois de clicarmos em Concluir surge logo o corpo do script com o nome que escolhemos e o nosso e neste caso apenas uma função Start já que um script pressupõe que o programa só será executado uma vez. No caso de um EA também teria as funções Init e Deinit para a primeira e última vezes em que o EA corresse já que a função Start irá ser activada por defeito cada vez que o mercado se mova (cada tick). Para fazer então funcionar a linha de programação mencionada basta colocá-la no interior (entre os {}) da função Start e antes do comando return. Coloquei também a linha Alert(sprd); para que o valor identificado na linha anterior seja divulgado no ecrã quando o script for executado. Anexo 60 Quando estamos satisfeitos com o programa clicamos em Compile e se surgir a mensagem 0 error(s), 0 warning(s) está tudo bem pelo menos do ponto de vista da compilação. Para utilizar o novo script voltamos à plataforma e abrimos o Navigator (botão com uma pasta e uma estrela) e abrimos o grupo scripts que deverá ser o último e parece um pergaminho. Anexo 61 Lá no meio localizamos o nosso script e para o activar clicamo-lo e arrastamo-lo para o gráfico onde o queremos executar. Neste caso em concreto o resultado será um pop-up com a indicação de qual é o spread do par: Anexo 59 Este valor está em pipettes e não em pips porque este broker em concreto decidiu acrescentar mais uma casa decimal às cotações, logo o spread neste caso é 4 pips para o USDCAD. Temos assim um programa bastante simples mas que nos permite obter de imediato uma informação importante. Se mantivermos a mesma estrutura substituindo apenas o termo MODE_SPREAD na primeira linha podemos obter uma série de outras informações. Experimentem por exemplo com MODE_ASK, MODE_BID, MODE_POINT, MODE_STOPLEVEL, MODE_LOTSIZE, MODE_MINLOT, MODE_MAXLOT, etc. |
E continuando o que ensina o VAM...
Além do Alert(); poderíamos tb usar uma função muito recorrida que é o Comment(); O Alert(); abre um popup como mostra a imagem... O Comment(); escreve o resultado no canto superior esquerdo. Portanto sempre visivel. É de salientar que ambas as funções tem a particularidade de converter os diferentes tipos de variáveis ao tipo carácter. Só temos que separar diferentes tipos com a virgula. Não temos pois que nos preocupar com este aspecto, embora logicamente o MT4 tenha as correspondentes funções de conversão. Poderíamos assim colocar: Alert('O spread actual é de ',sprd); Comment('O spread actual é de ',sprd); Há ainda funções para por o texto em qualquer parte do ecrán, com cor, tipo e tamanho de letra entre outras subtilezas. Mas já um é algo mais complicadilho. |
alguem pode ajudar a reprogramar este ea
ele abre posições sem parar. o que eu quero é que ele abra 6 posições e quando abre a 7 seja de igual valor da primeira mas feche a primeira. isto porque se trata de um ea martingale. assim teremos no maximo 6 posições abertas e não rebentamos a conta.
muito obrigado pelo tempo e cuidado dispensado. junto ea que é livre no forum tsd. chama-se fredmon pip10p3+.mq4.não consegui carregar o ficheiro |
Vejamos...
Você pode limitar o numero de posições abertas em simultâneo. Pode colocar uma var global nos externs.. extern int nPos = 7; E depois antes da função de abertura, testar int nP = OrdersTotal(); if( nP < nPos ) { // Só entra aqui se o nº de ordens aberta é inferior a nPos if (Abrir==1) { fOpenS();return(0);} if (Abrir==2) { fOpenB();return(0);} } OrdersTotal(); // Dá o numero de ordens abertas. TODAS de qualquer PAR e Grafico. Se não entende nada disto, aconselho a editar os EAs e procurar esta função OrdersTotal() e a lógica usada no seu uso. Vai rapidamente ver como se usa. |
boa tarde
afonseca, estava pesquisando pela internet como poderia fazer o meu expert advisor e vejo que voce percebe de programação.
Tenho ando a analisar gráficos e tenho uma teoria que gostaria de poder passar para um ea, voce podia ajudar-me? julgo que esta teoria seja mesmo muito boa, diga-me qlq coisa para o meu e-mail, poix n gostaria de expor aqui a teoria obrigado [email]jpedropimenta@hotmail.com[/email] |
Bullinger, suponho que se referia a AFernandes pois não vejo aqui nenhum AFonseca...
Com sinceridade, sim que sei algo de EAs, depois de testar milhares e fazer centenas... MAS ESTOU SEM DISPOSIÇÃO PARA PEGAR EM EAs. Não é uma questão de TEMPO, que tenho, é não acreditar que um EA completamente automático seja lucrativo. Eu uso um EA, mas é apenas um executor e alertador de situações. Ao contrário, pelo menos o VAM, sim que aposta no EAs. E acredito que tenha sucesso, que nos EAs, penso eu, tb funciona o principio do que funciona com um, não funciona forçosamente com outros. Parece tudo muito automático, mas há questões como o risco, os PARES, as Horas e mais coisas de certeza que nao controlo) De qualquer forma, agradeço a disponibilidade em compartir estratégias. |
pode ajudar-me
entao so queria que voce visse essa ea e me disse-se como a posso meter a funcionar, porque eu fiz o dowload e n consigo que ela funcione.
sabe que posso fazer? [url]http://www.forexfactory.com/showthread.php?t=19073[/url] está neste link, é necessário fazer uma alteração mas isso já consegui, só n consigo fazer mete-la a funcionar.. pode ajudar-me por favor??? |
Sim...
Vou ver hoje ou amanha.. tá? Já o baixei AF |
eu n sei se essa ea tem mais alguma analise, mas eu queria meter isso a funcionar só com bollinger a peridodo 10 e desviations 3 e shif 0 com aplicado ao fecho.
veja se é possivel funcionar com essa ea só com a analise das bollinger. obrigado |
O EA trabalha perfeitamente.
Há que levar em conta, que se é testado em um broker de 5.º digito, como o Alpari, IBFX etc... se deve multiplicar o valor em: TakeProfit e StopLossATR por 10 Ou seja em lugar dos 20 e 10 que lá estão, colocar 200 e 100 respectivamente. Alem das Bandas de Bollinger usa tb o DeMarker e o ADX no que se refere à abertura de ordens. No caso de querer alterar os valores para Bands... posso colocar 3 variáveis nos inputs para o Período, desviaçao e shift Diga-me se efectivamente quer isso. Uma coisa que não gostei... é que põe uns SLs exageradissimos... Mas tb opinar só na base dos testes históricos nao tem muita validade. |
Todas horas estão no fuso horário GMT. A hora actual é 03:48. |
Powered by vBulletin Version 3.6.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.