Canal Forex

Canal Forex (http://www.canalforex.com/forum/index.html)
-   Sistemas de Trading Mecânicos para Forex (http://www.canalforex.com/forum/forumdisplay.html?f=10)
-   -   Iniciação à programação em MQL4 (http://www.canalforex.com/forum/showthread.html?t=231)

VAM 23-07-2009 23:22

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.

afernandes 24-07-2009 07:01

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.

nunoviseu 24-10-2009 10:04

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

afernandes 25-10-2009 19:53

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.

bullinger 31-10-2009 19:19

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]

afernandes 01-11-2009 08:48

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.

bullinger 01-11-2009 13:41

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???

afernandes 01-11-2009 17:48

Sim...
Vou ver hoje ou amanha.. tá?
Já o baixei
AF

bullinger 01-11-2009 17:52

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

afernandes 01-11-2009 23:19

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.

bullinger 02-11-2009 10:29

bom dia!

antes de mais deixe-me agradecer as suas respostas!


eu trabalho com fxpro que acho que tambem tem 5 digitos, por isso vou ter que alterar isso para *10.

mas quero meter take profit a 60 pontos (6 pips) e stop loss a 50 pontos (5 pips), mas isso sao ajustamentos que eu consigo fazer!

em relação ao bollinger, eu queria meter periodo 10, desviação 3 e shift 0.

Falou-me no DeMarker e o ADX no que se refere à abertura de ordens, isso serve para q?

Eu queria abrir as ordens qd o gráfico passava a linha da bollinger (periodo 10, desviations 3 e shift 0) , é isso que isto faz?

Obrigado

Outra coisa pode me fazer as alterações e enviar par ao meu e-mail?

[email]jpedropimenta@hotmail.com[/email]

Se tiver esta versão actualizada, posso meter no examinador de estratégias??


Só mais uma coisa, diga o que acha desse EA? conhece alguma melhor?

Eu tive a estudar e se essa EA abir as ordens qd toca nas bollinger eu n acho q que seja má, mas deixe a sua opiniao!!!

Mais uma vez obrigado por tudo!

bullinger 02-11-2009 10:57

Lembrei-me uqe me faltaram falar de mais uns ajustes:

Gostava que o ea:

-só entrasse quando o spread fosse no maximo 2 pips (20 Pontos no meu Broker),

-que tivesse no ecram sempre que fizesse a entrada os pips que estava a ganhar,


-e que só entrasse uma vez de cada vez, quando tivesse uma ordem aberta, que n fosse possivel abrir outra,

-e que só duas candles depois podesse entrar, como vou meter a funcionar com 5 min, seram depois de uma entrada teria de aguardar 10 min para entrar novamente;

Ficava-lhe muito agradecido de me fizesse estas alterações, e que me explicasse se algum dia as quisesse tirar como fazer.

Obrigado

bullinger 02-11-2009 23:05

Queria pedir-lhe mais uma coisa, se fosse possiver meter aqui o ea para fazer-mos o dowload ou me envia para o meu e-mail (jpedropimenta@hotmail.com), porque fui ao link que tinha dado anteriormente e já não deixa fazer o dowload e fui alterar algumas coisas no ea e sem querer gravei por cima e deixou de funcionar.

obrigado

bullinger 03-11-2009 14:41

bom dia!

antes de mais deixe-me agradecer as suas respostas!


-mas quero meter take profit a 60 pontos (6 pips) e stop loss a 50 pontos (5 pips), é possivel?

-em relação ao bollinger, eu queria meter periodo 10, desviação 3 e shift 0.

[b]Falou-me no DeMarker e o ADX no que se refere à abertura de ordens, isso serve para q?

Eu queria abrir as ordens qd o gráfico passava a linha da bollinger (periodo 10, desviations 3 e shift 0) , é isso que isto faz?

Se tiver esta versão actualizada, posso meter no examinador de estratégias??


Tambem gostava gostava que o ea:

-só entrasse quando o spread fosse no maximo 2 pips (20 Pontos no meu Broker),

-que tivesse no ecram sempre que fizesse a entrada os pips que estava a ganhar,


-e que só entrasse uma vez de cada vez, quando tivesse uma ordem aberta, que n fosse possivel abrir outra,



Obrigado por tudo!!!

Outra coisa pode me fazer as alterações e enviar par ao meu e-mail?

[email]jpedropimenta@hotmail.com[/email]

speculatorX 18-09-2010 13:22

onde arranjar scripts feitas
 
Boas

Eu gostava de arranjar umas coisas para metatrader 4, eu queria arranjar umas scripts e ou uns EAs que dessem para mover os stops loss e os take profit através do rato.
Alguém me pode ajudar? é que eu também não percebo muito de programar isto e acho que estas coisas se consegue arranjar feitas.
Já encontrei algumas na net mas não consegui instalar aquilo ou entao não tinha aquela finalidade.

Cumps

aurelio alves 03-10-2013 13:11

good day! sorry for my english, I'm using a translator.

would like a information! I want to make a mt4 expert who shops alternating
example:
* A 10 ma crosses upwards one ma 80 (the buy signal with lot 1)
* And when a ma 10 crosses from top to down a 80 m (the for sale sign with lot of 2)
* New one ma 10 crosses upwards one ma 80 (the buy signal with set of 3)
* When a new ma 10 crosses from top to down a 80 m (the for sale sign with lot of 4)

and so on

if you can help me I am very grateful!

thank you

Persy 26-12-2018 11:57

Meu par de moedas de negociação é o EUR / USD. E você?


Todas horas estão no fuso horário GMT. A hora actual é 10:06.

Powered by vBulletin Version 3.6.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.