Discussão do artigo "Introdução ao MQL5: Como escrever Expert Advisor e Custom Indicator simples"
Feliz Dia da Vitória!
Poderia me aconselhar?
O Expert Advisor contém um ciclo de pesquisa alternada de todas as posições abertas. A função PositionGetDouble(POSITION_SL) é usada no ciclo. De acordo com a descrição do parâmetro POSITION_SL, ele pode ser usado para obter onível de Stop Loss de uma posição aberta.
Pergunta 1: que valor a função PositionGetDouble(POSITION_SL) mostrará se uma posição aberta foi formada como resultado do acionamento de várias ordens pendentes com diferentes níveis de Stop Loss?
Pergunta 2: Se uma posição aberta foi formada como resultado do acionamento de várias ordens pendentes com diferentes níveis de stop-loss, qual é a melhor maneira de obter dados sobre esses níveis de stop-loss?
Se esse tópico já tiver sido discutido anteriormente, forneça um link.
- www.mql5.com
Feliz Dia da Vitória!
Pergunta 1: que valor a função PositionGetDouble(POSITION_SL) mostrará se uma posição aberta foi formada como resultado do acionamento de várias ordens pendentes com diferentes níveis de stop-loss?Você verificou o que a função retorna?
Não, não verifiquei. Porque não conheço todas as condições iniciais importantes que devem ser observadas ao verificar (testar) uma determinada função. E também por causa da minha atitude negativa em relação à possibilidade de usar o método científico de verificação ao aprender uma linguagem de programação nova para mim.
Explicação. O número muito pequeno de artigos dedicados a Expert Advisors e a ausência de um livro didático sobre MQL5 força o usuário médio a confiar nos materiais disponíveis na Web, incluindo este (e muito útil) artigo, ao implementar sua própria estratégia de negociação.
Como você entende muito bem, minhas perguntas se referem a aspectos teóricos e aplicados que não estão refletidos na versão atual do Guia de Referência MQL5, bem como nos artigos existentes sobre os Expert Advisors MQL5.
Nessas circunstâncias, acho que é muito mais razoável fazer perguntas a pessoas experientes (desenvolvedores de linguagem e autores de artigos) sobre certos aspectos teóricos e aplicados das funções MQL5, em vez de realizar experimentos, "verificar o que uma função retorna" sob certas condições e amadorismos semelhantes.
Concordo que uma resposta de pessoas experientes sobre "o que deveria ser" parece mais adequada do que uma pergunta contrária como "você verificou o que a função retorna" (na ausência de minha compreensão das peculiaridades de seu funcionamento).
Encontrei a resposta. No Guia do Usuário do Terminal do Cliente:
...Уровни Тейк Профит и Стоп Лосс устанавливаются для позиции по последнему ордеру (рыночному или сработавшему отложенному).
Иными словами, стоп уровни в каждом последующем ордере по одной позиции заменяют предыдущие.
...Срабатывание ордеров Тейк профит и Стоп Лосс приводит к полному закрытию позиции. Estranho. Como apenas uma posição aberta é possível para cada instrumento financeiro, acontece que cenários com fechamento parcial de uma posição por stop-loss não podem ser implementados em princípio?
P.S. Depois de descobrir essa peculiaridade inerente ao MT5, não há necessidade de verificar o valor retornado pela função PositionGetDouble(POSITION_SL) se uma posição aberta foi formada como resultado do acionamento de várias ordens pendentes com diferentes níveis de stop-loss.
Encontrei a resposta. No Manual do Usuário do terminal do cliente:
Estranho. Como apenas uma posição aberta é possível para cada instrumento financeiro, acontece que cenários com fechamento parcial de uma posição por stop loss não podem ser implementados em princípio?
P.S. Depois de descobrir essa peculiaridade inerente ao MT5, não há necessidade de verificar qual valor a função PositionGetDouble(POSITION_SL) retorna, se uma posição aberta foi formada como resultado do acionamento de várias ordens pendentes com diferentes níveis de stop-loss.
É possível criar a função "izpodvypodvert vypert vypert podvypert", que dividirá o take profit de acordo com o volume de transações no instrumento fornecido em ordens pendentes por níveis.
Mas, pessoalmente, considero essa função desnecessária, pois estou familiarizado com terminais de negociação oficiais em que não há bloqueio.
pode ser criado como uma função "from-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub" ...
Sim, eu já cocei a cabeça com esse tópico. Há três opções :)
- retrabalhar criativamente os cenários existentes para as peculiaridades do MT5;
- ou criar uma classe de funções sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub;
- ou evitar o uso de stop-loss e take-profits nas ordens, operando inicialmente com pacotes de ordens na direção oposta.
Não importa, nós vamos superar isso! :)
Pergunta sobre o posicionamento das funções ArraySetAsSeries no Expert Advisor.
As funções ArraySetAsSeries são colocadas na função OnTick() logo após as funções CopyTime, CopyHigh e CopyLow.
Há algum obstáculo para colocar as funções ArraySetAsSeries na função OnInit() ou as matrizes devem sempre ser indexadas somente depois de serem copiadas?
- www.mql5.com
Pergunta sobre a colocação de funções ArraySetAsSeries no EA.
As funções ArraySetAsSeries são colocadas na função OnTick() logo após as funções CopyTime, CopyHigh e CopyLow.
Há algum obstáculo para colocar as funções ArraySetAsSeries na função OnInit() ou as matrizes devem sempre ser indexadas somente depois de serem copiadas?
Para buffers de indicadores, está escrito SetIndexBuffer:
Nota
Após a vinculação, o buffer de matriz dinâmica [] será indexado como em matrizes regulares, mesmo que a matriz que está sendo vinculada esteja predefinida para ser indexada como em séries temporais. Se for necessário alterar a ordem de acesso aos elementos da matriz do indicador, será necessário aplicar a função ArraySetAsSeries() depois de vincular a matriz com a função SetIndexBuffer().Deve ser semelhante para os Expert Advisors, verifique
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Introdução ao MQL5: Como escrever Expert Advisor e Custom Indicator simples foi publicado:
O MetaQuotes Programming Language 5 (MQL5), incluso no MetaTrade 5 Client Terminal, possui muitas novas possibilidades e maior desempenho, comparado ao MQL4. Este artigo o ajuda a se familiarizar com esta nova linguagem de programação. Os simples exemplos de como escrever um Expert Advisor e Custom Indicator são apresentados neste artigo. Nós vamos também considerar alguns detalhes da linguagem MQL5, que são necessários para entender estes exemplos.
Autor: Denis Zyatkevich