Perguntas sobre a MQL4 - página 8

 
Você pediu que ele destruísse todas as ordens cinco minutos antes do fechamento do bar, então ele as derrubará todas. Basta definir o tempo corretamente. E usar outras peças de código para fechar pedidos desnecessários. Ou, você quer que o programa inteiro seja escrito para você?

Eu estava me perguntando sobre a primeira parte... como apagar a segunda ordem depois que ela foi acionada.
Minha exclusão acontece antes de acionar, mas o algoritmo de exclusão se baseia na verificação das ordens ABERTAS
. Por exemplo, duas ordens pendentes foram definidas. Um acionado, ou seja,
OrderType()==OP_SELL ou OrderType()==OP_SELL
A linha correspondente é impressa no log
e nos resultados do teste
delete vem antes de comprar ou vender
e isso causa confusão na numeração dos pedidos

. E eu perguntei se poderia fechar no final do dia sem usar o Curtime() já que a atualização depende dos ticks recebidos e se eles estiverem ausentes, a EA não fechará no momento que eu precisar
Agora eu entendo que você não pode, já que a EA não funciona sem ticks
 
Pendure o roteiro e não vai se importar se houver carrapatos.
 
Você pode apagar o segundo como este:
   for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELLL && // verificar a posição aberta OrderSymbol()==Symbol()) // verificar o símbolo { for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType()>OP_SELLL && // verificar a posição aberta OrderSymbol()==Symbol()) // verificar o símbolo { OrderDelete(OrderTicket()); } } }


E o tempo...? Você realmente tem que ser tão preciso? Ajuste-o para dentro de 2 minutos, você não costuma ficar cheio de problemas nesse momento.

 
Para Roger
Obrigado agora... Com um pequeno ajuste, funcionou como deveria, embora eu ainda não entenda porque não funcionou para mim (é tudo transparente ao máximo)
Sobre o marasmo... O problema é que às vezes não dois, mas cinco ou mais minutos (dependendo da cruz)

Para Rosh
Não compartilhe o roteiro se você certamente o fez?
 
int Coord[8]; Coord[8]=1;


O compilador não mostra erros. É suposto ser assim?

 
sim, é assim que deve ser.
GetLastError irá gerar um erro quando executado. o compilador não verifica valores de expressão (a constante 8 é um caso especial de uma expressão)
 
Slawa,
muito obrigado, agora vou ficar de olho na dimensionalidade das matrizes com mais cuidado...)

Outra pergunta simples.
Caso o tamanho do lote exceda claramente a quantidade de fundos disponíveis, ao abrir "da mão"...
- a primeira verificação é feita no servidor?
- Se não, por que o painel de abertura do pedido fica pendurado por vários segundos?
- se sim, é correto, talvez esta verificação deva ser feita primeiro no terminal?
 
Para Roger<br / translate="no"> Obrigado agora... Com um pequeno ajuste, funcionou como deveria, embora eu ainda não entenda porque não funcionou para mim (tudo é transparente ao extremo).
Sobre o marasmo... O problema é que às vezes não dois, mas cinco ou mais minutos (dependendo da cruz)

Para Rosh
Você pode compartilhar o roteiro, se você tiver um?


Eu acabei de notar, ou talvez tenha me esquecido. Que roteiro é aquele que funciona independentemente de carrapatos?
Se assim for, devemos escrever algo como:

enquanto (true) { startFromExpert(); Sleep(as long as long as necessary); }



A função startFromExpert() é obtida pela simples re-branding da função start() da EA, copiamos tudo e colamos em nosso script, e não nos esquecemos de usar todos os parâmetros da EA.
Esta é uma das opções.

 
Na MQL 3 havia uma função:
TotalProfit - lucro total não realizado em todas as posições abertas.
Não consigo encontrar como implementá-lo na MQL 4, por favor, aconselhe como fazê-lo.
 
Também vou começar a praguejar em breve. Você não quer ler a ajuda?
double AccountProfit( ) <br / translate="no">

Retorna o valor do lucro para a conta corrente.

Exemplo

Print("Profit ", AccountProfit());
Razão: