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

 

Не очень понятно что Вы называете "строка кода для учёта в приложении".

Fragmento de AG_Srtategy_Channal_Inside.mq4

//================================================================================== 6 ==
   if ( Channal == false)                           // Если объекта заданного типа нет
      {
      ObjectCreate ( My_Chan_Name, OBJ_STDDEVCHANNEL,0,0,0); // Создаём его.. 
      int Сoor_X2 = Time[0];                                // 1я точка СПРАВА, 2я СЛЕВА
      int Сoor_X1 = Сoor_X2 - With*60;                      // Канал длиной 3 часа
      ObjectSet( My_Chan_Name, OBJPROP_TIME1, Сoor_X1);      // Устанавливаем координаты
      ObjectSet( My_Chan_Name, OBJPROP_TIME2, Сoor_X2);      // Устанавливаем координаты 
      ObjectSet( My_Chan_Name, OBJPROP_COLOR, Orange);       // Устанавливаем координаты 
      AG_Message( Message, "АТ: Устанавливаем объект OBJ_STDDEVCHANNEL.");// Сообщение

      return(1);                 // Это необходимо, чтоб установл. канал был учтён AG 4    Имелась ввиду эта строка

      }
//---------------------------------------------------------------------------------- 7 --

Eu estava confuso com esta linha:

A primeira é que a função AT pode negociar por conta própria - gerar ordens comerciais e enviá-las para o servidor

Parece que a função AT pode ignorar a aplicação e enviá-las para o servidor por si só ......

Aparentemente, este é meu problema devido à falta de experiência. Meu cérebro ainda não está afiado para a programação.

 
LeonidSB писал(а) >>

.. Seu cérebro ainda não foi afiado para a programação.

Você deve escrever alguns programas simples por conta própria.

 

Você está absolutamente certo. Estou me esforçando para isso e espero fazê-lo em breve, mas primeiro quero entender o que, como e por que é escrito por pessoas que já têm experiência. Grosso modo, ganhar conhecimento para que ele se traduza em qualidade de experiência, com base na qual eu mesmo posso escrever algo.

Em essência, qualquer programa "complexo" é um conjunto interconectado de programas simples. É como uma casa e tijolos (eu sou um ex-construtor por formação e profissão), ou seja, a programação é como um conjunto de construção para mim.

A propósito, reserve um tempo para olhar o meu indicador no trabalho. Ele desenha e deixa a linha de alvo no gráfico, a linha de negócios lucrativos e deficitários, usando-os você pode analisar visualmente a implementação da estratégia no gráfico no testador, e na vida real. Além disso, ao ativar as opções apropriadas, você pode ver e solicitar o processamento posterior dos resultados da sessão em seu próprio arquivo de Log (não geral).

extern bool   PrDeal=false;                                      // Выключатель. Печатать отчет по каждой сделке
extern bool   PrCol=false;                                       // Выключатель. Печатать отчет в колонку
extern bool   PrTab=true;                                        // Выключатель. Печатать отчет в таблицу

Até agora, três tipos de relatórios são criados simultaneamente em um único arquivo. Já mencionei que baseei meu relatório no indicador desenvolvido por Vladislav Goshkov. Eram 280 linhas. Eu melhorei até 2300 linhas. Como diz o ditado, era algo sobre o qual se podia construir. Obviamente, o código foi escrito de tal forma que não pôde ser descrito em poucas palavras. Mas estas são minhas primeiras linhas de código e elas funcionam, o que é o mais importante! Portanto, estou indo na direção certa (embora não da maneira correta), e com sua ajuda para explicar as questões que surgem, é tudo uma questão de tempo.

Muito obrigado por sua participação.


Aproveitando a oportunidade, outra pergunta.

Está escrito no tutorial:

Если в результате исполнения торгового приказа функция OrderClose() вернула значение false, то это значит, что ордер не закрыт. Чтобы выяснить причину неудачи выполняется анализ последней ошибки, возникшей при попытке осуществления торговой операции. Для этого вызывается функция Errors() (см. раздел Функция обработки ошибок). Если при исполнении этой функции обнаруживается, что ошибка является непреодолимой (например, торговля запрещена), то функция Close_All() заканчивает работу и возвращает управление в управляющую торговую функцию Trade(), что в конечном счёте приводит к завершению исполнения специальной функции start() эксперта. На следующем тике торговый терминал снова запустит на исполнение функцию start(), и если критерий закрытия на тот момент будет ещё актуален, то это снова приведёт к вызову на исполнение функции закрытия всех ордеров Close_All().

Pergunta:

Há duas ordens em aberto BUY-1 e BUY-2 com lotes 3 e 5 respectivamente. Há uma ordem de comércio usando a função Close_All(). O pedido de encomenda é fechado na seguinte ordem: primeiro, BUY-2 (5 lotes), depois BUY-1 (3 lotes). Ao mesmo tempo, BUY-2 (5 lotes) não pode ser fechado - o erro é irreversível - deixamos - o pedido BUY-1 (3 lotes) não é fechado - a perda está aumentando - a mesma coisa acontece no próximo tick (a perda está aumentando), etc. Isto é, se não pudermos fechar a primeira ordem da lista que não pode ser fechada por alguma razão imperiosa, todas as ordens seguintes na lista permanecerão abertas e permanecerão abertas por algum tempo, não é claro. Isto não deve ser permitido. Isto não deve ser permitido pelo algoritmo do programa, mas eu tentei ao máximo analisá-lo e não consegui entender.

      //--------------------------------------------------------- 4 --
      if ( Ans==false)                     // Не получилось :( 
        {                                // Поинтересуемся ошибками:
         if( Errors(GetLastError())==false)// Если ошибка непреодолимая
            return;                       // .. то уходим.
        }
      //--------------------------------------------------------- 5 --
      Terminal();                         // Функция учёта ордеров 
      Events();                           // Отслеживание событий
     }
   return;                                // Выход из пользов. функции
  }
//--------------------------------------------------------------- 6 --

Por favor, explique com mais detalhes.

Agradecemos antecipadamente, com respeito e os melhores votos, Leonid.

 
LeonidSB писал(а) >>

Pergunta:

Há duas ordens em aberto BUY-1 e BUY-2 com lotes 3 e 5 respectivamente. Há uma ordem de comércio usando a função Close_All(). Pedidos fechar pedido: primeiro, BUY-2 (5 lotes), depois BUY-1 (3 lotes). Ao mesmo tempo, BUY-2 (5 lotes) não pode ser fechado - o erro é irreversível - deixamos - o pedido BUY-1 (3 lotes) não é fechado - a perda está aumentando - a mesma coisa acontece no próximo tick (a perda está aumentando), etc. Isto é, se não pudermos fechar a primeira ordem da lista que não pode ser fechada por alguma razão imperiosa, todas as ordens seguintes na lista permanecerão abertas e permanecerão abertas por algum tempo, não é claro. Isto não deve ser permitido. Isto não deve ser permitido pelo algoritmo do programa, mas eu tentei ao máximo analisá-lo e não consegui entender.

Por favor, explique com mais detalhes.

Obrigado antecipadamente, respeitosamente e com os melhores votos, Leonid.

Um erro intransponível é um erro que não pode ser superado. Por exemplo, Market_closed.

Deste ponto de vista, não importa qual ordem você fecha ou abre. O mercado está fechado de qualquer forma:).

Mas se você tentar executar uma negociação, ela deve ser a que tem a maior prioridade (do ponto de vista da estratégia).

 

Olá, senhoras e senhores!

Por favor, responda minha pergunta.

Qual dos indicadores exibe de forma mais confiável a mudança de tendência - plano?

Quero acrescentar este indicador às estratégias AG_Srtategy_Channal_Inside e AG_Srtategy_Channal_Outside como uma mudança de uma estratégia para outra.

 
SK. писал(а) >>

........ 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 de estratégia .ex4. 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. Além disso, o usuário pode decidir por ele mesmo como organizar os códigos. O mais conveniente é usar uma de duas variantes....

Tal variante não foi considerada: o módulo principal com código aberto, o principal, que agora é com código fechado, é chamado através de importação, estratégia comercial através do incluid (ou através do incluid primeiro, e importação para o incluid)... A questão é esta - um elo intermediário na forma de um inluder para tornar as variáveis externas visíveis. Parece-me que, se você pensar bem, deve funcionar. Não me diga imediatamente que isso é impossível ;)

 
LeonidSB писал(а) >>

Olá, senhoras e senhores!

Por favor, responda minha pergunta.

Qual dos indicadores exibe de forma mais confiável a mudança de tendência - plano?

Quero acrescentar este indicador às estratégias AG_Srtategy_Channal_Inside e AG_Srtategy_Channal_Outside como uma mudança de uma estratégia para outra.

E a escolha não é grande: STD, ATR, ADX. Também relógio e calendário de lançamento de notícias.

 

Obrigado!

Será que existe uma opção para que quando um comentário é adicionado a uma página, ele seja automaticamente atualizado?

Tenho que ir periodicamente à página e atualizá-la manualmente.

 
Integer писал(а) >>

Esta opção não foi considerada: módulo núcleo de código aberto, o núcleo que agora está fechado é chamado via importação, estratégia comercial via incluid (ou primeiro via incluid e depois importação para incluidnik)... A questão é esta - um elo intermediário na forma de um inluder para tornar as variáveis externas visíveis. Parece-me que, se você pensar bem, deve funcionar. Não diga imediatamente que é impossível;)

Não há dificuldade em fazer isso. Mas enviar um produto comercial de código aberto... você sabe, essa não é a solução.

A solução real é esperada no MT 5. Qualquer programa de aplicação deve ser chamado a partir do programa principal. O que é necessário é a capacidade de gerenciar os EAs concluídos. Neste caso, uma estratégia personalizada poderia consistir em uma unidade analítica e uma unidade de chamada "sub-rotina". Você quer - ligue para o roteiro e ele vai desenhar uma mentira, você quer - ligue para o indicador, você quer - feche tudo e pipsqueak à noite depois do trabalho:).

E API. Então você pode fazer uma ferramenta verdadeiramente moderna.

O usuário não se importa com nossos babados (todos os tipos de scripts, Expert Advisors, indistinguíveis dos especialistas:). Ele ou ela precisa de um serviço conveniente, de alta qualidade e multifuncional. No MT4 foi possível fazer apenas o que foi feito - um rosto parecido com o DOS e possibilidades limitadas.

Toda esperança para a MT5.

 

Nova versão da série AG 4 - AutoGraf 4.90714 foi lançada.

Alterações feitas:
1. o algoritmo de análise de controle da ferramenta 14 Close_All foi otimizado.
2. Uma nova regra de gerenciamento da ferramenta 14 Close_All é introduzida: A configuração do software da ferramenta no momento atual é permitida. Para fazer isto, insira um valor 1 para o parâmetro de ajuste do tempo de execução da ferramenta (Instrumento [0][2][32][1] = 1).

Faça o download do software aqui: http://autograf.dp.ua/Pages/4/421.htm