the size of local variables is too large (more than 512 kb)
O que significa este erro de tempo de compilação e como corrigi-lo? Tenho uma turma com cerca de 80.000 linhas. Tenho de fazer duas aulas com ele? Isto é um disparate. Qual é o sentido desta versão de 64 bits se tudo é limitado de tal forma?
Juer: Como se pode dizer o que está a causar a longa compilação (mais de 10 minutos). O ficheiro ex5 resultante pesa cerca de 12mb, não tanto assim. Como posso diagnosticar e corrigir as razões que causam uma compilação tão longa?
Há um exemplo na ajuda: Algoritmo geral de trabalho com encomendas.
{
//--- получим общее количество ордеровint orders=OrdersTotal();
//--- пробежим по списку ордеровfor(int i=0;i<orders;i++)
{
ResetLastError();
//--- скопируем в кэш ордер по его номеру в спискеulong ticket=OrderGetTicket(i);
if(ticket!=0)// если ордер успешно скопирован в кэш, работаем с ним
{
double price_open =OrderGetDouble(ORDER_PRICE_OPEN);
datetime time_setup =OrderGetInteger(ORDER_TIME_SETUP);
string symbol =OrderGetString(ORDER_SYMBOL);
long magic_number =OrderGetInteger(ORDER_MAGIC);
if(magic_number ==m_magic)
{
// обработаем ордер с заданным ORDER_MAGIC
}
PrintFormat("Ордер #%d по %s был выставлен %s, ORDER_MAGIC=%d",ticket,symbol,TimeToString(time_setup),magic_number);
}
else// вызов OrderGetTicket() завершился неудачно
{
PrintFormat("Ошибка при получении ордера из списка в кэш. Код ошибки: %d",GetLastError());
}
}
}
Na compilação recebo um aviso de tipodata/hora, aparentemente, há um conflito de tipo de conversão.
Não compreendo qual é o problema; de acordo com Help,ORDER_TIME_SETUP tem tipo dedata/hora.
OrderGetInteger precisa de ser convertido para o tipo correcto, o mesmo com INT
Obrigado pelo exemplo.
Por favor, esclareça... se bem entendi.
com isto=(datetime)OrderGetInteger. estamos a dizer à OrderGetInteger para adoptar o tipo dedata/horaexplícita.?
Esta regra aplica-se a todas as funções que não têm um tipo explícito ou que não correspondem ao tipo da variável a ser atribuída? ou é apenas um caso especial?
Quero compreender se isto é uma regra ou se apenas precisa de ser recordado como um caso especial.
the size of local variables is too large (more than 512 kb)O que significa este erro de tempo de compilação e como corrigi-lo? Tenho uma turma com cerca de 80.000 linhas. Tenho de fazer duas aulas com ele? Isto é um disparate. Qual é o sentido desta versão de 64 bits se tudo é limitado de tal forma?
Como se pode dizer o que está a causar a longa compilação (mais de 10 minutos). O ficheiro ex5 resultante pesa cerca de 12mb, não tanto assim. Como posso diagnosticar e corrigir as razões que causam uma compilação tão longa?
https://www.mql5.com/ru/forum/165399#comment_3968004
Optimizar=0
Acho que já resolvi isso.
Ao modificar uma ordem, devemos especificar a ordem, à qual OrderGetDouble se refere, antes do ponto=
Obrigado Ivan, estou a experimentar, mas não está a funcionar para mim.
Não compreendo a lógica em si, como seleccionar uma ordem de modificação por tipo e não por bilhete e depois referir as suas propriedades.
Não compreendo a lógica, porque na própria modificação da ordem o bilhete é o campo obrigatório a preencher e não existe nenhum tipo de ordem.
No meu caso, há duas encomendas em aberto: Buy_Stop e Sell_Stop. A sequência da sua abertura pode ser qualquer.
O número do bilhete não me ajuda em nada.
Na condição de verificação, posso descobrir se Sell_Stop (por exemplo) está entre as encomendas em aberto.
Mas não consigo descobrir como devo dirigir-me a esta encomenda em particular Sell_Stop, para que quando aOrderModify for chamada
para modificar exactamente Sell_Stop, e não algo que por acaso estava debaixo do bilhete.
Tenho a sensação de que a sintaxe da língua me faz passar por todas as encomendas no bilhete, apenas para preencher o campo do bilhete naOrderModify.
Foi aqui que me confundi com a modificação de encomendas. Perdi a lógica do processo.
Existe alguma função para anexar a um gráfico EA? Como ChartIndicatorAdd().
Ou como posso programar anexar uma EA a um determinado gráfico, se não houver um modelo?
Como é que se traduz para mql5?
Como posso traduzir para mql5?
- SymbolInfoDouble
- SymbolInfoInteger
- SymbolInfoString
Funcionará em ambas as versões.Por favor, aconselhar.
Há um exemplo na ajuda: Algoritmo geral de trabalho com encomendas.
{ //--- получим общее количество ордеров int orders=OrdersTotal(); //--- пробежим по списку ордеров for(int i=0;i<orders;i++) { ResetLastError(); //--- скопируем в кэш ордер по его номеру в списке ulong ticket=OrderGetTicket(i); if(ticket!=0)// если ордер успешно скопирован в кэш, работаем с ним { double price_open =OrderGetDouble(ORDER_PRICE_OPEN); datetime time_setup =OrderGetInteger(ORDER_TIME_SETUP); string symbol =OrderGetString(ORDER_SYMBOL); long magic_number =OrderGetInteger(ORDER_MAGIC); if(magic_number ==m_magic) { // обработаем ордер с заданным ORDER_MAGIC } PrintFormat("Ордер #%d по %s был выставлен %s, ORDER_MAGIC=%d",ticket,symbol,TimeToString(time_setup),magic_number); } else // вызов OrderGetTicket() завершился неудачно { PrintFormat("Ошибка при получении ордера из списка в кэш. Код ошибки: %d",GetLastError()); } } }Na compilação recebo um aviso de tipodata/hora, aparentemente, há um conflito de tipo de conversão.
Não compreendo qual é o problema; de acordo com Help,ORDER_TIME_SETUP tem tipo dedata/hora.
Qual é o problema e como resolvê-lo?
Por favor, aconselhar.
Há um exemplo na ajuda: Algoritmo geral de trabalho com encomendas.
Na compilação recebo um aviso sobre o tipo dedata e hora, aparentemente, existe um conflito de conversão de tipo.
Não compreendo qual é o problema; de acordo com Help,ORDER_TIME_SETUP tem tipo dedata/hora.
Qual é o problema e como resolvê-lo?
OrderGetInteger deve ser convertido para o tipo correcto, o mesmo com INT
OrderGetInteger precisa de ser convertido para o tipo correcto, o mesmo com INT
Obrigado pelo exemplo.
Por favor, esclareça... se bem entendi.
com isto=(datetime)OrderGetInteger. estamos a dizer à OrderGetInteger para adoptar o tipo dedata/horaexplícita.?
Esta regra aplica-se a todas as funções que não têm um tipo explícito ou que não correspondem ao tipo da variável a ser atribuída? ou é apenas um caso especial?
Quero compreender se isto é uma regra ou se apenas precisa de ser recordado como um caso especial.