Discussão do artigo "Introdução ao MQL5: Como escrever Expert Advisor e Custom Indicator simples" - página 5

 
Grzegorz Korycki:

Essa não é uma maneira fácil de explicar o mql5 para as pessoas. (como se os iniciantes tivessem a chance de entendê-lo!) É como nos livros de programação, 90% das pessoas não têm ideia de como começar. Elas abrem esse livro, por exemplo, sobre programação C e o primeiro "Exemplo fácil" tem uma página inteira escrita em fontes minúsculas. Em toda a minha vida, li apenas um bom livro de programação que poderia ensinar programação a qualquer pessoa. A razão para isso é que eles estão sendo escritos por programadores provavelmente excelentes, mas, infelizmente, por professores muito ruins. A programação pode ser realmente fácil e eu vou provar isso a você fazendo um tutorial simples para a linguagem de programação MQL4 quando tiver um pouco mais de tempo do que agora. Para todos, até mesmo para os totalmente iniciantes. O maior erro é ensinar às pessoas os detalhes da linguagem; a maior parte do trabalho delas deve ser com ctrl+C e ctrl+v e usar o Google para os comandos e, o mais importante, manter tudo MUITO SIMPLES. Conheço mais de 10 linguagens de programação (programo desde os 7 anos) e ainda estou assustado com a maneira como esse "exemplo fácil" de 11kb (!!!) é explicado. Gostaria de saber se existe algum iniciante em programação que aprendeu MQL5 com esse exemplo ;D. Eu duvido e, se houver, você pode contar essas pessoas nos dedos de uma mão.

É verdade. Sou novo em programação e posso dizer que você está perfeitamente correto. Preciso entender como a codificação está estruturada. O layout do programa. Tenho procurado na Web por tutoriais que façam um novato entender. É impossível. Existe alguma ideia que possa me direcionar para esse tipo de tutorial. Os vídeos que baixei do YouTube são todos iguais. Muito obrigado
 

Ibrahim Melssen:
I have copy paste the Expert Advisor and try to test it with Strategytester. But it doesn't make any trades. I am new to MQL5 and programming so maybe I just made a stupid mistake. It compiled without any errors. I'd really like the strategy! Anyone ideas why it doesn't run on strategytester..?

O mesmo acontece comigo, mas não consigo descobrir o motivo

 
Guin:

Sou novo na programação do mql5.


Estava tentando aprender com esse exemplo, mas estou um pouco perdido com o loop no final da construção do indicador. Onde exatamente ele atribuiu um valor à variável day_n?


Porque o loop verificará se day_n<day_t. Como o programa pode saber o valor de day_n?



E como ele é calculado? Vamos supor que rate_total = 10 e ainda não há nenhuma barra calculada. Portanto, prev_calculated = 0


day_t=time[0] (TODAY! já que é contado de trás para frente)/PeriodSeconds... como ele começa a contar a partir de 1970, vamos supor que ele comece a contar a partir de 10 dias atrás.

Portanto, day_t=10. Agora ele verifica se dayt > dayn. Não sei o dayn, mas sei que dayt=10. Vou presumir que dayn é zero, já que não há valor.

Então dayn também se torna 10. Certo.

Segunda rolagem do loop. prev_calculated + 1= 1.

DayT=time[1] (yesterday)/period... lembre-se de que ele começa a contar a partir de 10 dias atrás... mas agora somente até ontem. ele deve dar um valor de 9, certo?

mas agora dayN < dayT é falso. Em seguida, ele começa a executar as expressões else. Certo. Eu entendi.


Em seguida, ele calculará todos os bu[] e bd[]. Certo. O loop terminará quando a taxa anterior < total for falsa.

Mas quando uma nova barra chegar e ela se tornar verdadeira novamente, ele começará do zero outra vez? Ou ele começará a partir de 10 e irá direto para a parte else?


Obrigado!!!!

Você precisa dividir em duas partes:

1 No primeiro indicador de tempo aplicado ao gráfico: prev_calculated =0 , i = 0, i++ até i = rates_total, ele sai do loop (time[0] é do passado, não do presente).

2 Uma nova barra é iniciada: prev_calculated será menor que rates_total, então a condição é verdadeira, o loop será executado somente nessa nova barra

 

Oi @Guin,

Acho que sua pergunta ainda não foi respondida corretamente. Se você usou o código do exemplo, provavelmente acabou com um indicador invisível que não faz sentido e não pode ser visto no gráfico. Isso ocorre porque o código nunca passa por esse bloco:

if(day_n < day_t){
        day_n = day_t;
        h_day = high[i];
        l_day = low[i]
}

O motivo é que day_n não é definido manualmente com nenhum valor padrão, e a comparação day_n < day_t sempre resultará em falso. De acordo com o depurador, o valor de day_n quando não definido explicitamente é "2076449103".

Basta alterar a definição de day_n para algo como:

int day_n = 0, day_t;


Espero que isso ajude.


Guin:

Sou novo na programação do mql5.


Estava tentando aprender com esse exemplo, mas estou um pouco perdido com o loop no final da construção do indicador. Onde exatamente ele atribuiu um valor à variável day_n?


Porque o loop verificará se day_n<day_t. Como o programa pode saber o valor de day_n?

[Excluído]  

Ótimo artigo,

Obrigado por compartilhar