Desculpe, alex12, mas você parece um bulldozer (sem ofensa, esse é um termo aceito). Você faz algo a partir de peças diferentes e, de alguma forma, consegue compilá-lo, mas não entende o significado do código.
Ao utilizar algumas das funções de Igor Kim, certifique-se de ter suas funções em falta em seu código, que o compilador lhe informa. Encontre-os em sua filial e escreva-os em seu código.
OrderOpenTime() mostra a hora em que a posição foi aberta, minha pergunta é: como sei a hora em que a ordem STOP foi estabelecida? O relatório MT4 tem este tempo, mas é possível descobri-lo a partir do código?
Mais uma vez.
Percorra todas as suas ordens de parada em um ciclo "padrão", e para você mesmo, desimprima o valor do OrderOpenTime() para eles - este deve ser o momento em que eles (cada um deles) foram definidos. Aqui está um exemplo para ordens de mercado - ajuste um pouco, ou seja, ou remova esta linha por completo
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continuar;
ou substituí-la por dados das ordens de parada em que você está interessado.
int orderCount = 0; // сбрасываем счетчик ордеров // ------------------------------------------------Считаем только наши ордера---------------------------int orderType;
for (orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
{
if (!OrderSelect(orderIndex, SELECT_BY_POS)) continue; // если ордер не выбран, то идем на следующий открытыйif(OrderCloseTime()!=0) continue; // если тикет принадлежит закрытому ордеру, то берем следующий открытыйif ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != magic)) continue;
orderType = OrderType();
if ((orderType != OP_BUY) && (orderType != OP_SELL)) continue;
ticket = OrderTicket( ); // Номер ордера
orderLots = OrderLots(); // Lots
orderProfit = OrderProfit() + OrderSwap(); // Profit
Price = OrderOpenPrice(); // Цена открытия рыночного ордера
SL = OrderStopLoss(); // Значение StopLoss ордера
TP = OrderTakeProfit(); // Значение TakeProfit ордера
Time = O rderOpenTime();
orderCount++; // считаем ордера (не больше i)
}
Mais uma vez. Percorra todas as suas ordens de parada em um loop "padrão", e para você mesmo, desimprima o valor de OrderOpenTime() para eles - este deve ser o momento em que eles (cada um deles) são definidos. Aqui está um exemplo para ordens de mercado - ajuste um pouco, ou seja, ou remova esta linha por completo
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continuar;
ou substituí-lo por dados de ordens de parada que lhe interessam...
Aqui, nesta etapa, encontrei um dilema - preciso do momento de abrir uma ordem STOP para algumas "estatísticas" e não gostaria que este processo fosse executado o tempo todo, mas apenas em uma certa etapa final. Por esta razão, não precisamos procurar as ordens atualmente abertas (OrdersTotal()), mas procurar entre as ordens já fechadas => OrdersHistoryTotal(). Mas para ordens STOP que já foram fechadas, OrderOpenTime() retorna o tempo de abertura da posição, não o tempo em que a ordem foi colocada. Como resultado, tudo se resume a isto: é possível recuperar o tempo que as ordens STOP da lista de ordensHistoryTotal(), quando elas foram definidas?
chief2000: Foi aqui que encontrei um dilema - preciso do tempo de abertura do pedido STOP para algumas "estatísticas" e não gostaria que este processo funcionasse o tempo todo, mas apenas em uma certa etapa final. Por esta razão, não precisamos procurar as ordens abertas naquele momento (OrdersTotal()), mas procurar entre as ordens já fechadas => OrdersHistoryTotal(). Mas para ordens STOP que já foram fechadas, OrderOpenTime() retorna o tempo de abertura da posição, não o tempo em que a ordem foi colocada. Como resultado, tudo se resume a isto: É possível recuperar o tempo que as ordens STOP da lista de ordensHistoryTotal(), quando elas foram estabelecidas?
Sim... O desafio... NÃO CONHECO. Parece que você não pode - especialmente nas "etapas finais"...
Você tem que monitorar constantemente este processo e acompanhá-lo - veja o post de perguntas freqüentes na página anterior.
FAQ: Nesse caso, é mais fácil escrever em um arquivo, menos complicações, e as estatísticas podem ser organizadas conforme você precisa, não o terminal.
Desculpe, alex12, mas você parece um bulldozer (sem ofensa, esse é um termo aceito). Você faz algo a partir de peças diferentes e, de alguma forma, consegue compilá-lo, mas não entende o significado do código.
Entre em contato com o serviço de empregos.
Gera muitos erros
...
OrderOpenTime() mostra a hora em que a posição foi aberta, minha pergunta é: como sei a hora em que a ordem STOP foi estabelecida?
O relatório MT4 tem este tempo, mas é possível descobri-lo a partir do código?
Mais uma vez.
Percorra todas as suas ordens de parada em um ciclo "padrão", e para você mesmo, desimprima o valor do OrderOpenTime() para eles - este deve ser o momento em que eles (cada um deles) foram definidos. Aqui está um exemplo para ordens de mercado - ajuste um pouco, ou seja, ou remova esta linha por completo
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continuar;
ou substituí-la por dados das ordens de parada em que você está interessado.
Mais uma vez.
Percorra todas as suas ordens de parada em um loop "padrão", e para você mesmo, desimprima o valor de OrderOpenTime() para eles - este deve ser o momento em que eles (cada um deles) são definidos. Aqui está um exemplo para ordens de mercado - ajuste um pouco, ou seja, ou remova esta linha por completo
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continuar;
ou substituí-lo por dados de ordens de parada que lhe interessam...
Mas para ordens STOP que já foram fechadas, OrderOpenTime() retorna o tempo de abertura da posição, não o tempo em que a ordem foi colocada.
Como resultado, tudo se resume a isto: é possível recuperar o tempo que as ordens STOP da lista de ordensHistoryTotal(), quando elas foram definidas?
Foi aqui que encontrei um dilema - preciso do tempo de abertura do pedido STOP para algumas "estatísticas" e não gostaria que este processo funcionasse o tempo todo, mas apenas em uma certa etapa final. Por esta razão, não precisamos procurar as ordens abertas naquele momento (OrdersTotal()), mas procurar entre as ordens já fechadas => OrdersHistoryTotal().
Mas para ordens STOP que já foram fechadas, OrderOpenTime() retorna o tempo de abertura da posição, não o tempo em que a ordem foi colocada.
Como resultado, tudo se resume a isto: É possível recuperar o tempo que as ordens STOP da lista de ordensHistoryTotal(), quando elas foram estabelecidas?
Sim... O desafio... NÃO CONHECO. Parece que você não pode - especialmente nas "etapas finais"...
Você tem que monitorar constantemente este processo e acompanhá-lo - veja o post de perguntas freqüentes na página anterior.
Sim... O desafio... NÃO CONHECO. Parece que você não pode - especialmente nas "etapas finais"...
Você tem que monitorar constantemente este processo e manter o controle - veja o post de perguntas freqüentes na página anterior.
De qualquer forma, obrigado!
Nesse caso, é mais fácil escrever em um arquivo, menos complicações, e as estatísticas podem ser organizadas conforme você precisa, não o terminal.
Quero escrever um consultor especializado sobre o padrão pincer.
Eu escolhi
Infelizmente para mim a condição está errada porque 'sl' está ajustado para 100.00000 e 'tp' está mostrando um erro.
Decidi acrescentar uma condição para considerar 1 carrapato.
o resultado é o mesmo. como posso resolver meu problema?
Quero escrever um consultor especializado sobre o padrão pincer.
Eu escolhi
Infelizmente para mim a condição está errada porque 'sl' está ajustado para 100.00000 e 'tp' está mostrando um erro.
Decidi acrescentar uma condição para considerar 1 carrapato.
O resultado é o mesmo. Como resolver meu problema corretamente?
Você tem uma variável Step=100 ? Se for o caso, veja o que você ganha mais com o código.