Erros, bugs, perguntas - página 1360

 
A100:
Foi isto que sugeri:
...
Apenas as operações == e != são afectadas pelas alterações.
Tudo o resto, incluindo o = operador, deve ser deixado como está agora (inalterado)

Como pode o= operador ser deixado inalterado se agora causa confusão entre os apontadores e os próprios objectos? Se usar * para ele, então deve ser usado também para todos os outros operadores. Deve haver um único padrão. O que sugere é que o compilador deve escolher o certo por si só - isso é errado. Haverá muitos erros difíceis de encontrar. Tudo deve ser inequívoco: acções quer com um objecto quer com um ponteiro.

Bem, todos esses asteriscos são, evidentemente, muletas forçadas. Temos de mudar todo o conceito que os criadores escolheram não tão bem desde o início, penso eu.

Deveríamos ter passado da ligação para C++, e respectivamente abandonado a utilização de apontadores como um tipo separado de variável, substituindo-os por referências. As referências são essencialmente as mesmas que os apontadores, apenas interpretadas pelo compilador como objectos em si.Portanto, todas as acções com estas variáveis, incluindo os operadores, são tratadas como acções com um objecto. Se precisar de comparar ou atribuir exactamente as referências, utilize o operador de referência. Portanto, não haverá contradições:

 A  a;                     // воздаём объект
 A& aref;                  // создаём неинициализированную ссылку

 &aref = &a;                // присваиваем ссылку на a
 bool equalref = &aref==&a; // сравниваем ссылки

 aref = a;                  //вызываем оператор=()
 bool equal = aref==a;      // вызываем оператор==()

Em suma, se os criadores alguma vez conceberam a MQL6, devemos ir nessa direcção. A ligação a C++ já não faz sentido, porque não corresponde ao conceito da linguagem.

 
A100:
Qual é a actualização mais recente que tem?

Tanto MetaTrader como MetaEditor build 1159 (Windows 10 32 bit). Num PC grande (64 bit) não tenho a certeza sobre o MetaEditor, mas o MetaTrader construiu definitivamente 1159.
 
A100:
Qual é a actualização mais recente que tem?

Tenho 1150. Não consigo ver a actualização para o último 1159
 
Gennadiy Stanilevych:
Tenho 1150. não vejo actualizações para o último 1159.
É necessário ligar-se ao servidor MetaQuotes-Demo para obter as últimas actualizações.
 
A100:
MetaQuotes-Demo é de interesse uma vez que costumávamos receber actualizações 2-3 vezes por mês. É evidente que os corretores têm actualizações muito menos frequentes.
Karputov Vladimir:
É necessário ligar-se ao servidor MetaQuotes-Demo para obter as últimas actualizações.

Acordado, actualizado via MetaQuotes-Demo, ainda 1150! E o terminal informou-me várias vezes que as actualizações foram descarregadas e oferecidas para reiniciar, ainda 1150.

Ok, descarreguei o pacote de distribuição de http://www.metatrader5.com/ru/download, abri uma conta demo no MetaQuotes-Demo, desliguei e liguei o terminal por várias vezes - 1150! UAC desactivado, Windows 7 SP1 - 64

Скачать MetaTrader 5
Скачать MetaTrader 5
  • www.metatrader5.com
Скачать торговый терминал MetaTrader 5 для комфортной и успешной работы на финансовых рынках. Терминал обладает внушительными торговыми и аналитическими возможностями и является одним из лучших в мире
 

Vou repetir a pergunta uma vez que ninguém a respondeu e ela foi-se abaixo por causa da discussão acalorada sobre o OOP. Esta questão é realmente importante, é um insecto ou uma característica? Reparei nisso no MT4.

Encontrei uma situação em que a variável externa muda durante a execução do programa, mas quando altero o período de tempo, volta a tomar o valor que defini na janela de propriedades. Por exemplo, se antes do início definir TradeEnable para EnableAll e alterar o valor para EnableBuy durante a execução do programa, o valor retornará para EnableAll quando o gráfico mudar para outro período de tempo. O valor que defino no evento do temporizador e saída através de Comentário, não pode haver erro.

enum ETradeEnable {EnableAll, EnableBuy, EnableSell, DisableAll};
extern ETradeEnable TradeEnable = EnableAll;

A variável TradeEnable não é afectada pela alternância entre gráficos. Ler a ajuda - Ao contrário das variáveis de entrada, os valores das variáveis externas podem ser alterados programmaticamente enquanto o programa está em execução.

É assim que o OnDeinit e o OnInit são criados.

Pergunta: Eu não entendo algo ou mudança de TradeEnable é um erro de tempo de execução?

int LastDeinitReason = 0;

void OnDeinit(const int reason)
{
    LastDeinitReason = reason;
    if(reason==REASON_CHARTCHANGE || reason==REASON_TEMPLATE || reason==REASON_PARAMETERS)
        return;
    EventKillTimer();
// далее код при завершении работы советника
}

int OnInit()
{
    if(LastDeinitReason==REASON_CHARTCHANGE || LastDeinitReason==REASON_TEMPLATE)
    {
        LastDeinitReason = 0;
        return(INIT_SUCCEEDED);
    }
    if(LastDeinitReason==REASON_PARAMETERS)
    {
        SetParams();
        return(INIT_SUCCEEDED);                              
    }
// далее код инициализации при запуске
}
 
Karputov Vladimir:
Tem de se ligar ao servidor MetaQuotes-Demo para obter as últimas actualizações.
Isto não ajuda. Eu até demoli o MT5. Abriu a demonstração em MetaQuotes. Ainda 1150.
 
Gennadiy Stanilevych:
Não ajuda. Cheguei mesmo a derrubar o MT5. Abriu uma demonstração em meta-cotações. Ainda 1150.
Não basta abrir uma conta demo no servidor MetaQuites-Demo: também é necessário ligar-se a esta conta demo para a actualização.
 
Karputov Vladimir:
Basta abrir uma conta demo no servidor MetaQuites-Demo não é suficiente: também precisa de se ligar a esta conta demo para a actualização.

Claro que liguei. Em seguida, reiniciou novamente o terminal. Ainda não se vêem quaisquer actualizações.

Arquivos anexados:
20150826.log  7 kb
 
Gennadiy Stanilevych:

Claro que liguei. Em seguida, reiniciou novamente o terminal. Ainda não se vêem quaisquer actualizações.

Estranho (olhou para o ficheiro de registo). Por experiência - se houver actualizações, então depois de ligar literalmente dentro de três segundos começa a descarregar.