Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 842

 

OrderClose(OrderTicket(),0.01,Bid,2);

em "especialistas", diz "bilhete inválido para a função OrderClose".

Ajuda? meu objetivo é fechar a ordem na tabela atual.

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

em "especialistas", diz "bilhete inválido para a função OrderClose".

Ajuda? meu objetivo é fechar a ordem na tabela atual.

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}
 
Eu preciso REALMENTE fechar o pedido, se me permite... Por que não encomendar um bilhete na linha do programa que escrevi?
 
Pokrov:

Boa noite! Ajude-me a entender o código abaixo, vender está escrito com o mesmo princípio, por que três opções para abrir, porque eu tive que mexer na opção de evitar abrir um pedido então - quando o pedido abre na barra atual e fecha em um empate,

e o sinal permanece e se abre novamente, por isso tive que escrevê-lo assim. O problema é que apenas uma ordem de compra e venda é aberta e tudo o mais é silencioso. Não consigo encontrar mais erros, estou muito grato de antemão.

Como você entende esta linha?

if (!OrdersTotal()==true)

Eu não sei como ler esta linha e esta.

if (!OrdersHistoryTotal()==true)

e este aqui...

if(OrderSelect(ticket,SELECT_BY_TICKET)>0 // дальше я не смотрел

Embora esta última linha funcione, mas não é assim que se escreve ... Estou sem palavras.

Se você não encontrar o erro, então provavelmente não há erro.

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

em "especialistas", diz "bilhete inválido para a função OrderClose".

Ajuda? meu objetivo é fechar a ordem na tabela atual.

Porque antes de trabalhar com uma ordem eu preciso selecioná-la com a função OrderSelect()
 
AlexeyVik:

Como você entende esta linha?

e este aqui.

E este aqui...

Embora esta última linha funcione, mas essa não é a maneira de escrever ... Estou sem palavras.

Se você não encontrou o erro, então provavelmente não há erro.

1. Se não houver ordens em aberto

2. Se não houver ordens fechadas.

O que está errado?

 
Pokrov:

1. Se não houver ordens em aberto

2. Se não houver ordens fechadas.

O que está errado?

int OrdensTotal(); - número de retorno, não falso-verdade, isso é o que está errado. Se não há ordens, significa 0. Se há ordens, não é apenas 1.

E não há ordens fechadas somente em uma conta recém-aberta que ainda não tenha sido negociada. Mais uma vez, este é um uso incorreto da função.

E por que RefreshRates(); APÓS o pedido ter sido enviado para o servidor? É como pagar por algo primeiro e depois perguntar "quanto é?

 
Pokrov:

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}

Que tipo de bobagem você está fazendo aqui?

Se o número total de pedidos e posições for 1 ou mais...
Se um pedido for selecionado em um bilhete desconhecido e não estiver claro se está fechado ou aberto...
...etc....

Você acha que isso ajudou?

 
evillive:

... Nenhuma ordem significa 0, e se há ordens, não é apenas 1.

...

É aqui que eu vou corrigir com permissão, por assim dizer.

Em bool se houver 0 então é falso, tudo o resto que não seja zero é verdade

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

em "especialistas", diz "bilhete inválido para a função OrderClose".

Ajuda? meu objetivo é fechar a ordem na tabela atual.

Para fechar uma posição usando um bilhete, é necessário saber primeiro o número exato do bilhete da posição a ser fechada. Depois é necessário selecionar o pedido usando a função OrderSelect(ticket,SELECT_BY_TICKET), com verificações para uma seleção bem sucedida. Então precisamos verificar o horário de fechamento da ordem selecionada com sucesso. Por quê? Porque quando selecionamos por bilhete, o parâmetro de pool da função OrderSelect(..., ..., pool) é ignorado (é usado somente quando selecionamos por índice). E isso significa que mesmo que tenhamos selecionado com sucesso uma ordem, ainda precisamos saber em qual lista a escolhemos - a lista de posições fechadas ou abertas. É a verificação do tempo de fechamento que nos permite saber "se a ordem ainda está no mercado". Se o tempo de fechamento for igual a zero, a ordem ainda está no mercado. Se o tempo for diferente de zero, o pedido já foi fechado mais cedo. E depois de todo esse procedimento, podemos enviar uma ordem para fechar essa ordem.