Características da linguagem mql5, subtilezas e técnicas - página 12

 
Leo59:
Obrigado!
Como eu entendo, "ordem activa" refere-se a posições de COMPRA e/ou VENDA, bem como ordens pendentes definidas (aceites pelo corretor).
Se eu tiver: posições Long e Short abertas, e Limite de Compra e Stop de Venda definidos, então OrdersTotal() retornará valor =4. Certo?

Pode haver uma posição de COMPRA aberta e uma ordem de COMPRA activa. Eu forneci um exemplo de código acima, mas provavelmente é mais fácil de usar os dedos. Como é que o TP de uma posição aberta dispara?

  • O preço atinge o TP da posição COMPRAR.
  • O servidor de negociação cria uma ordem de venda ativa correspondente.
  • Então o terminal tem simultaneamente uma posição de COMPRA e uma ordem de VENDA.
  • A ordem de venda é executada entrando na história e gerando um negócio lá.
  • A posição inicial de compra é fechada com base nesta troca, que não é capturada em nenhum lugar - ela está presente indiretamente na história do comércio.

 
Leo59:
Tudo tem sido aceito há muito tempo, e provavelmente não é irracional ler o tutorial de Sergei Kovalev (ele está embutido no MQL4) antes de escrever a documentação:
Leia o título do tópico. Todos pensavam que se tratava da MQL5. Há uma seção correspondente para MQL4 e MT4 aqui no fórum. Se você fizesse sua pergunta lá, a resposta seria diferente.
 
Leo59:
Tudo tem sido aceite há muito tempo, e antes de escrever documentação, provavelmente valeria a pena ler o tutorial de Sergei Kovalev (está integrado na MQL4):


É assim que se pode construir um bloco no qual são analisadas as ordens de mercado e pendentes:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

O valor inicial i=1 é especificado no cabeçalho da instrução do laço, e a condição para o fim do laço é a expressão i<=OrdersTotal(). Função OrdensTotal() retorna a quantidade total de ordens de mercado e pendentes, ou seja, aquelas ordens que são exibidas no Terminal na guia Negociação. Portanto, o número de iterações no laço será igual ao número de ordens presentes na operação.

Por favor insira o código corretamente:Insira o código corretamente no fórum(eu já corrigi o que você inseriu - e veja: você inseriu apenas texto, e agora é CÓDIGO, com destaque de sintaxe).
 
Vitaly Muzichenko:

Não há necessidade de agitar)

Este é um código MT4 e não há divisão de ordens e posições - tudo é misturado

A função OrdersTotal() na MQL4 e MQL5 é diferente? O compilador parece ser o mesmo ....
 
Leo59:
Tudo tem sido aceite há muito tempo, e antes de escrever documentação, provavelmente valeria a pena ler o tutorial de Sergei Kovalev (está integrado na MQL4):


É assim que se pode construir um bloco no qual são analisadas as ordens de mercado e pendentes:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

O valor inicial i=1 é especificado no cabeçalho da instrução do laço, e a condição para o fim do laço é a expressão i<=OrdersTotal(). Função OrdensTotal() retorna a quantidade total de ordens de mercado e pendentes, ou seja, aquelas ordens que são exibidas no Terminal na guia Negociação. Portanto, o número de iterações no laço será igual ao número de ordens presentes no negócio.

Não só estás a falar de mql4 e a mostrar código de mql4 (e este tópico é sobre características e subtilezas de programação em mql5), mas também escreveste o laço incorrectamente - tens de começar do zero, caso contrário vais sempre falhar uma ordem.
 
Leo59:
As ordensTotal() são funções diferentes em MQL4 e MQL5? O compilador parece ser o mesmo ....
Sim, são.
 
Leo59:
As ordensTotal() são funções diferentes em MQL4 e MQL5? O compilador parece ser o mesmo ....

No que diz respeito às funções comerciais - existem diferenças. A MQL4 já foi mencionada acima:

Enquanto estiver na MQL5, OrdersTotal() irá retornar o número de ordens pendentes. Assim, na MQL5, tudo é sistematizado a um nível superior: as costeletas são separadas, as moscas são separadas.
 
Artyom Trishkin:
Sim, diferente.
E qual é a diferença?
 
Leo59:
Qual é a diferença?

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Peculiaridades de mql5, dicas e truques

Vladimir Karputov, 2017.02.28 19:44

Quanto às funções de negociação - existem diferenças. Você já mencionou a MQL4:

enquanto que na MQL5 OrdersTotal() irá retornar o número de ordens pendentes. Assim, na MQL5 tudo é sistematizado a um nível superior: costeletas separadas, moscas separadas.

 
Leo59:
Qual é a diferença?

OrdensTotal()

Devolve o número de ordens activas.

intOrdensTotal();

Valor devolvido

Valor do tipo int.

Nota

As ordens pendentes ativas não devem ser confundidas com posições, que também são exibidas na aba "Negociar" do painel "Caixa de Ferramentas". Uma ordem é uma instrução para executar uma negociação, enquanto uma posição é o resultado de uma ou mais negociações.

Com "netting" de posições (ACCOUNT_MARGIN_MODE_RETAIL_NETTING e ACCOUNT_MARGIN_MODE_EXCHANGE) apenas uma posição pode ser aberta para cada símbolo em qualquer altura e é o resultado de um ou mais negócios. Posições e ordens pendentes ativas, que também são exibidas no separador "Negociar" do painel "Caixa de Ferramentas", não devem ser confundidas entre si.

Em caso de representação independente de posições (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) várias posições podem ser abertas para cada símbolo simultaneamente.


PosiçõesTotal()

Devolve o número de posições em aberto.

intPosiçõesTotal();

Valor devolvido

Valor do tipo int.

Nota

Com "netting" de posições (ACCOUNT_MARGIN_MODE_RETAIL_NETTING e ACCOUNT_MARGIN_MODE_EXCHANGE) apenas uma posição pode ser aberta para cada símbolo em qualquer momento que resulte de uma ou mais negociações. Posições e ordens pendentes ativas, que também são exibidas no separador "Negociar" do painel "Caixa de Ferramentas", não devem ser confundidas entre si.

Em caso de representação independente de posições (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) várias posições podem ser abertas para cada símbolo simultaneamente.


Razão: