AutoGraf Series 4 - recursos MQL. - página 34

 

Se você incluir o arquivo via include, você pode declarar variáveis externas e não precisa passar nenhum parâmetro. Para evitar confusão com os nomes das variáveis e funções, é necessário usar prefixos diferentes nos nomes para cada estratégia.

Desculpe a interrupção, mas uma agonia tão longa sobre uma questão tão simples não deixa indiferente:)

 
Integer >> :

Se você incluir o arquivo via include, você pode declarar variáveis externas e não precisa passar nenhum parâmetro. Para evitar confusão com os nomes das variáveis e funções, é necessário usar prefixos diferentes nos nomes para cada estratégia.

Desculpe, mas agonias tão longas sobre uma questão tão simples não o deixam indiferente:)

>> Obrigado. >> Vamos tentar.

 
Integer писал(а) >>

Se você incluir o arquivo via include, você pode declarar variáveis externas e não precisa passar nenhum parâmetro. Para evitar confusão com os nomes das variáveis e funções, é necessário usar prefixos diferentes nos nomes para cada estratégia.

Desculpe por interromper, mas agonias tão longas sobre uma questão tão simples não o deixam indiferente:)

Estamos falando de funções de importação em EA compilada (ex4).
 
SK. писал(а) >>
Estamos falando de funções de importação em EA compilada (ex4).

Sinto muito, como sempre não estou falando de... Que tal importar de uma biblioteca compilada?

-

Se o módulo principal for compilado, então não é um problema usar o inculcador com estratégia, tudo será compilado. Se o módulo principal é de código aberto, mas a estratégia é compilada, então você pode fazer um adaptador na forma de inculdnik de código aberto.

 

Caros senhores!

Estou considerando o seguinte diagrama de corrente de conexão:



A função AG_AT é uma chave para selecionar as estratégias a serem unidas.

 

Minhas senhoras e meus senhores!

Por favor, responda a uma pergunta.

Se a função AT não é um interruptor, mas contém código de estratégia (embora eu entenda que não faz diferença), como a aplicação distingue que a função AT dá uma instrução (por exemplo, referindo-se ao terminal) a ela, em vez de comercializá-la ela mesma?

Desde a descrição até a aplicação:

Исполнение функции АТ связано с двумя основными возможностями.

A primeira é que a função AT pode negociar por conta própria - gerar ordens comerciais e enviá-las para o servidor. Ao mesmo tempo, a função não pode processar quaisquer dados recebidos da aplicação (ou processar uma parte de tais dados), mas pode realizar seus próprios cálculos usando todas as capacidades da MQL4, incluindo chamar o terminal para processar as ordens, obter cotações atuais, calcular critérios de negociação, gerenciar objetos gráficos, etc.

A segunda característica está diretamente relacionada com a aplicação AutoGraf 4. Esta função pode instruir a aplicação AutoGraf 4 a instalar quaisquer instrumentos necessários com configurações pré-definidas em pedidos específicos ou uma tabela de preços, alterar as configurações gerais da aplicação, apagar instrumentos, exibir mensagens para o usuário, etc. (parâmetros de saída). (parâmetros de saída).

Se a função AT gerar uma ordem comercial e não houver linha de código a ser contabilizada na aplicação, ela mesma será negociada. O pedido, neste caso, simplesmente transmite o pedido para o terminal sem qualquer contabilidade ou processamento.

Se houver, então a ordem passa pela aplicação nos parâmetros da função AT passados através do link.

Eu entendo isso corretamente?

 
Integer писал(а) >>

Desculpe, não era isso que eu queria dizer, como sempre... Que tal importar de uma biblioteca compilada?

-

Se o módulo principal for compilado, então não é um problema usar o inculcador com estratégia, tudo será compilado. Se o módulo principal é de código aberto e a estratégia é compilada, então você pode fazer um adaptador na forma de inculcador de código aberto.

Nada a pedir desculpas, a discussão está no ponto.

--

Um pouco de terminologia. Há dois conceitos de espelho - exportação e importação. Eles são utilizados em relação ao nosso próprio território.

As exportações são provenientes de nós fora de nossas fronteiras. Por exemplo, as exportações de gás da Rússia para a Europa.

A importação é do exterior para nossas fronteiras. Por exemplo, a importação de areia da África para a Sibéria.

Neste caso, estamos falando de importações. Nosso território aqui é o especialista AG_exp.ex4. Esta é a base do aplicativo AutoGraf 4 que é fornecido ao usuário como um arquivo compilado. O código-fonte do Expert Advisor não é fornecido (naturalmente, já que a aplicação é distribuída comercialmente, embora seja gratuita) e, portanto, nenhum módulo pode ser adicionado ao Expert Advisor via inclide (por usuário-programador).

--

A tarefa era permitir ao usuário anexar à aplicação AutoGraf 4 seus próprios algoritmos de negociação escritos em MQL4 e executados como arquivos .ex4 de estratégias. Para resolver este problema, o Expert Advisor AG_exp.ex4 inclui um código que importa para o Expert Advisor a função de negociação automática AG_AT que está disponível tanto como arquivos .ex4 como mq4. Mais adiante, o usuário pode decidir por ele mesmo como organizar os códigos. Uma das duas variantes é a mais conveniente:

1. Para escrever seu próprio código diretamente na função AG_AT() e compilar o arquivo AG_AT.mq4 com o mesmo nome, obtendo AG_AT.eq4.

Пример: http://autograf.dp.ua/Pages/2/26/267/26711/26711_1.htm, примеры 1-15: http://autograf.dp.ua/Pages/2/26/267/2679/2679_1.htm

2. Escreva seu próprio código para a nova função em um arquivo de estratégia separado, por exemplo, My_Strategy() no arquivo My_Strategy.mq4. Escreva em AG_AT() a importação da função My_Strategy() do arquivo My_Strategy.eq4 (versão moderna). Примеры http://autograf.dp.ua/Pages/2/26/267/26712/26712_1.htm, http://autograf.dp.ua/Pages/2/26/267/26712/26712_2.htm

.

Em nenhuma dessas variantes é possível escrever variáveis externas para que elas estejam disponíveis ao usuário. A única possibilidade de especificar variáveis externas é escrevê-las em AG_exp.ex4 durante a fase de projeto, o que é feito. Os valores das variáveis são passados em trânsito através de AG_AT() para o usuário My_Strategy() na matriz de instrumentos. Esta é a tecnologia adotada no último lançamento do AutoGraf 4 e funciona bem.

--

O que tudo isso significa para o usuário? Isto significa que qualquer usuário pode escrever sua própria estratégia e executá-la em um ambiente AutoGraf 4. Ao mesmo tempo, sua própria estratégia funcionará e todas as características do AutoGraf 4 estarão disponíveis para o usuário. Em particular, qualquer ferramenta AutoGraf 4 (!) como pulôveres, capotagens, sons, etc., pode ser controlada a partir da estratégia.

Para programadores profissionais, a tecnologia oferece a capacidade de passar uma variável de senha personalizável para o arquivo de estratégia. Isto significa que os programadores podem escrever estratégias para o AutoGraf 4 e distribuí-las em uma base comercial (por exemplo, somente para uma conta específica).

 
LeonidSB писал(а) >>

Caros senhores!

Estou considerando o seguinte diagrama de corrente de conexão:

A função AG_AT é um interruptor para selecionar as estratégias a serem unidas.

Sim. Correto.

 
LeonidSB писал(а) >>

Minhas senhoras e meus senhores!

Por favor, responda a uma pergunta.

Se a função AT não é um interruptor, mas contém um código de estratégia, então (embora eu entenda que não faz diferença), como a aplicação distingue que a função AT está dando instruções (por exemplo, referindo-se ao terminal) a ela, em vez de comercializá-la ela mesma?

A estratégia pode passar para a aplicação:

- valores de parâmetros ajustáveis comuns (SL, TP, Lots, etc.)

- Parâmetros dos instrumentos a serem instalados ou excluídos

A estratégia não transmite ordens para abrir e fechar ordens para a aplicação (isto é planejado no AG 5 com base nas capacidades da MQL 5) e atualmente (no AG 4) isto não é estritamente necessário. A estratégia pode e deve abrir/fechar ordens usando o próprio algoritmo do usuário.

Se a função AT gerar uma ordem comercial e não houver uma linha de código a ser registrada no pedido, a estratégia comercializará por si só. O pedido, neste caso, simplesmente transmite o pedido para o terminal sem qualquer contabilidade ou processamento.

Se houver, a ordem passa pela aplicação nos parâmetros da função AT passados via link.

Estou entendendo isso corretamente?

Não está muito claro o que você chama de "uma linha de código a ser contabilizada na aplicação".

O pedido é responsável pelas ordens sempre que recebe o controle de volta. A cada iteração de um grande ciclo, a matriz recalculada de pedidos é passada para a AG_AT e depois para a estratégia. Com base na contagem de pedidos, a estratégia pode calcular as ações de controle apropriadas. A aplicação da estratégia deve ser atualizada com mais freqüência para que a estratégia tenha sempre uma nova gama de escrituração de pedidos.

Uma ordem comercial de qualquer parte do programa (aplicação ou AG_AT ou uma estratégia) vai diretamente para o terminal MT4 e diretamente para o servidor. Após a execução da ordem no servidor, o controle retorna da mesma forma ao ponto de envio da ordem comercial. Enquanto a ordem está sendo processada no servidor, tudo é silencioso e à espera de resposta - nada acontece (se não estou enganado, no MT5 esta tecnologia será mudada - não vamos esperar, vamos trabalhar:)

 
Obrigado!