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).
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.
... MT4, e não tem divisão de ordens e posições - está tudo misturado
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.
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.
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.
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?
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:
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:
{ //отражённым в терминале
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.
Não há necessidade de agitar)
Este é um código MT4 e não há divisão de ordens e posições - tudo é misturado
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:
{ //отражённым в терминале
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.
As ordensTotal() são funções diferentes em MQL4 e MQL5? O compilador parece ser o mesmo ....
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:
Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação
Peculiaridades da linguagem mql5, dicas e truques
Vitaly Muzichenko, 2017.02.28 19:25
... MT4, e não tem divisão de ordens e posições - está tudo misturado
Sim, diferente.
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:
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.