Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Vamos colocar as coisas desta maneira. Você mostra o código que passa pelas ordens com uma explicação de como ele deve fazer isso e só então poderemos dizer o que está certo e o que está errado. Apenas os nomes das funções não o ajudarão a chegar mais perto do resultado.
Olá ... obrigado por concordar em me ajudar ... Parecia ser um pequeno empreendimento, para fazer o fechamento dos pedidos, poderia ser feito simplesmente adicionando o evento necessário à pasta apropriada - afinal não foi tão fácil ... Aqui está um exemplo de código que tirei dasfunções comerciais dereferência da MQL4:
intOrdensHistóriaTotal();
// recuperando informações do histórico comercialint i,accTotal=OrdensHistóriaTotal();
for(i=0;i<accTotal;i++)
{
//---- verificar resultado da seleção
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==falso)
{
Imprimir("Erro ao acessar o banco de dados do histórico (",GetLastError(),")));
pausa;
}
// trabalhar com uma ordem ...
}
... A função retornaa quantidade de ordens fechadas e excluídas no histórico da conta corrente carregada no terminal do cliente. O tamanho da lista do histórico depende das configurações atuais da guia "Histórico de contas" do terminal.
Como vai procurar através deles e porque é necessário não está claro para mim... Talvez seja necessário memorizá-los e descartá-los, para que não atrapalhem.
Devemos soar as novas ordens fechadas no momento em que elas forem fechadas com um breve sinal sonoro. Todos os pedidos a serem fechados em meu Terminal de Clientes são de apenas dois tipos: porTrailStopLoss eTakeProfit Average. Ao fechar um pedido (um grupo de pedidos), não importa em que direção (Vender ou Comprar) eles devem ser separados somente peloStopLossouTakeProfit eenviados para a funçãoPlaySoundcorrespondente.
Olá ... obrigado por concordar em me ajudar ... Parecia ser um pequeno empreendimento, para fazer o fechamento dos pedidos, poderia ser feito simplesmente adicionando o evento necessário à pasta apropriada - afinal não foi tão fácil ... Aqui está um exemplo de código que tirei dasfunções comerciais dereferência da MQL4:
intOrdensHistóriaTotal();
// recuperando informações do histórico comercialint i,accTotal=OrdensHistóriaTotal();
for(i=0;i<accTotal;i++)
{
//---- verificar resultado da seleção
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==falso)
{
Imprimir("Erro ao acessar o banco de dados do histórico (",GetLastError(),")));
pausa;
}
// trabalhar com uma ordem ...
}
... A função retornaa quantidade de ordens fechadas e excluídas no histórico da conta corrente carregada no terminal do cliente. O tamanho da lista do histórico depende das configurações atuais da guia "Histórico de contas" do terminal.
Como vai procurar através deles e porque é necessário não está claro para mim... Talvez seja necessário memorizá-los e descartá-los, para que não atrapalhem.
Devemos soar as novas ordens fechadas no momento em que elas forem fechadas com um breve sinal sonoro. Todos os pedidos a serem fechados em meu Terminal de Clientes são de apenas dois tipos: porTrailStopLoss eTakeProfit Average. Ao fechar uma ordem (um grupo de ordens) não importa em que direção (Venda ou Compra) elas devem ser separadas apenas pelo comandoStopLossouTakeProfit defechamentoe enviadas para a funçãoPlaySoundcorrespondente.
As ordens devem ser pesquisadas na ordem inversa, já que 0 é o primeiro. accTotal-1 é o último. Neste código, após "// trabalhar com ordem", lembre-se do comentário e verifique se há um comentário final para o SL ou TP.
intOrdensHistóriaTotal();
// recuperando informações do histórico comercialint i,accTotal=OrdensHistóriaTotal();
for(i=0;i<accTotal;i++)
{
//---- verificar resultado da seleção
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==falso)
{
Imprimir("Erro ao acessar o banco de dados do histórico (",GetLastError(),")));
pausa;
}
// trabalhar com uma ordem ...
}
stringOrderComment();
comentário em cadeia;if(OrderSelect(10,SELECT_BY_TICKET)==falso)
{
Print("OrderSelect() retornou um erro ",GetLastError()));
retorno(0);
}
comentário=OrderComment();
// ...
Obrigado pela resposta ... Após adicionar o código da funçãoOrderComment,(MQL4Trading FunctionsReference) que retorna o comentário de uma ordem selecionada usando a função OrderHistoryTotal, o código se parece com o seguinte ... E não temos uma função que rastreia novas ordens fechadas na história do terminal? "0 - muito primeiro. accTotal-1 - último" - queremos dizer "primeiro fechado" e "último fechado" na história do terminal, será por tempo ...? eu fiz bem?
mas será que não temos uma função para rastrear novas ordens fechadas no histórico do terminal?
Não existem padrões.
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
Não existem padrões.
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
Obrigado ... Você quer dizer a função StringFind = Procura de um substrato em uma corda.
);
Retorna o número de posição no fio onde começa o substrato a ser pesquisado, ou -1 se não for encontrado substrato.
... ou funçãoStringCompare-Compara duas cordas?...
Obrigado ... Você quer dizer a função StringFind = Procura de um substrato em uma corda.
);
Retorna o número de posição no fio onde começa o substrato a ser pesquisado, ou -1 se não for encontrado substrato.
...
Correto.
Obrigado ... o código continuará a ser assim:
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
Obrigado ... o código tomará então a forma de:
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Perguntas de principiantes
A1exPit, 2016.11.30 22:14
Você pode me dizer OrderSelect by SELECT_BY_POS qual 0 pedido é o último colocado ou o primeiro? Estou tentando de ambas as maneiras e vice versa, mas o erro de modificação #0 está voando para fora.