O futuro da MQL5 é MQL5+ ou mesmo MQL6 - página 10

 
Eu gostaria de ver goto, você poderia simplificar o código consideravelmente, sem mencionar a legibilidade. afinal, um loop com uma condição é essencialmente uma saída prematura do loop também.
 
dimka8:
Eu gostaria de ver goto, você poderia simplificar o código consideravelmente, sem mencionar a legibilidade. na verdade, um loop com uma condição é também uma saída prematura do loop.
Não, eu não quero :)
 
dimka8:
Eu gostaria de ver goto, você pode simplificar o código consideravelmente, sem mencionar a legibilidade. na verdade, um loop com uma condição é também uma saída prematura do loop.

De onde você vem...

 

Uma palavra ou duas:

Conformação cruzada obrigatória ....

 
Vasiliy Sokolov:

De onde você vem...

da BASIC
 
Alexander Bereznyak:
da BASIC.

Hiasm ainda mais simples.

E quanto aos clássicos?

for(...) {
for (...) {
while (...) {
if (...) goto stop;
...
}
}
}
printf("error in program\n");
 

Seria ótimo introduzir o conceito de um projeto. Com a adoção do OOP, todos os programas agora consistem em vários arquivos. É inconveniente ir constantemente à aba com o arquivo principal antes de compilar, se você editar um plugin. Ou uma muleta: introduza um botão programável Compile, ao qual você pode vincular o arquivo mestre do projeto com o qual você está trabalhando.

EMPTY_VALUE pode ser estendido a todos os tipos que o permitam (int, double, string etc). É uma coisa pequena, mas você pode usá-la em muitos lugares e não pode fazer a sua própria.

No testador, faça uma ferramenta de cristais como no MT.

Certamente você pode inventar a variante com sobreposição de vários indicadores em uma janela de indicadores sob o gráfico de preços.


O conforto é construído a partir de pequenos detalhes. Os desenvolvedores não querem realmente aceitar esta idéia, e estão constantemente globalizando algo. Talvez devêssemos parar às vezes, e gastar tempo em pequenas reparações - conforto do usuário? ))))))

Exemplos: Para medir algo em um gráfico três vezes, você deve clicar três vezes no botão da mira (ou pressionar uma combinação de teclas). As janelas indicadoras em ME sob o gráfico não podem ser trocadas: todos os indicadores devem ser removidos, então eles devem ser colocados na ordem correta. Mais uma vez, para definir vários indicadores, é necessário entrar no menu - menu - selecionar indicador várias vezes. E por alguma razão existe uma ferramenta Lista de indicadores, que não simplifica isso e não dá nada de novo.... Eu acho que todos darão tais exemplos em MQL, em ME, em MT, no testador sem pensar.... Que inferno! Muito alvoroço! Por toda a clareza e simplicidade do pacote, ele é muito desconfortável, subdesenvolvido.

https://www.mql5.com/ru/docs/basis/types/integer/enumeration é o artigo de ajuda sobre transferências. É claro o que são e como são... Mas como utilizá-lo e qual é a vantagem? Dê-me um exemplo simples se você for muito preguiçoso para escrevê-lo em palavras.

Penso que se você realmente quer melhorar algo, deve estabelecer contato com grupos regulares de usuários que usam ativamente o pacote em diferentes direções (programação, negociação manual, testes, etc.) e coletar sugestões razoáveis deles para melhorar o que você tem, em vez de pedir em uma multidão onde todos vão querer tudo. Caso contrário, tudo permanecerá em letras.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Sobre o depurador:

Por exemplo, há uma expressão da forma

(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle))

na implementação atual da depuração, o resultado do cálculo da expressão no depurador estará disponível se você fizer

CandleNumber=(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle))

e adicionar a variável CandleNumber à lista de observação via Shift+F9

Se eu quiser obter um resultado do cálculo de uma parte da expressão, por exemplo MathFloor(i/ticks_in_candle), eu adiciono esta expressão à lista de relógios

Eu recebo uma expressão que não pôde ser avaliada.

Talvez eu esteja fazendo algo errado, compartilhe sua experiência, mas a questão é que na depuração não posso ver não apenas os valores declarados das variáveis, mas também os resultados do cálculo das expressões arbitrárias (é claro, estou falando daquelas expressões onde todas as variáveis no momento atual da observação já estão inicializadas).

Além disso, quero ver informações sobre arrays na depuração. Por exemplo, temos o array UpTick[] e apenas um elemento do array está disponível para monitoramento no momento.

Por que não implementar a possibilidade de adicionar um array à supervisão com abertura de uma janela modal separada onde todos os elementos com seus índices estão disponíveis:

valor do tipo de índice

0 int 1

1 int 2 etc.

Se a matriz for grande e exigir muita memória - limite de amostragem.

E, em geral, como resultado - realizar uma funcionalidade mais ampla do depurador em termos de possibilidade de monitorar expressões arbitrárias, variáveis, arrays.

 
agvozdezkiy:
EstenderEMPTY_VALUE a todos os tipos que o permitem (int, double, string, etc.). É uma coisa pequena, mas pode ser usada em muitos lugares e você não precisa inventar a sua própria.

Todos já o inventaram. Usar a constante NULL.

No testador, crie uma ferramenta de retícula, como no MT.

Exemplos: Para medir algo no gráfico três vezes, você precisa clicar três vezes no botão da mira (ou pressionar uma combinação de teclas).

Deixe-me contar-lhe um segredo - já está implementado. Você precisa clicar na roda do mouse e ela será uma retícula.

É provável que você possa criar uma opção de sobreposição de vários indicadores em uma janela de indicadores sob o gráfico de preços.

Isto tem sido possível por muito tempo. Você arrasta o indicador do navegador para a janela com o indicador já anexado.

As janelas indicadoras em ME sob o gráfico não podem ser trocadas: todos os indicadores devem ser removidos, então você os coloca na ordem correta.

IMHO, não é a coisa mais útil.

Você tem que ir ao menu - menu - selecionar indicador várias vezes para definir vários indicadores. Além disso, existe uma ferramenta Lista de indicadores por alguma razão, que não simplifica e não dá nada de novo neste caso....

Há um navegador, favoritos, modelos e perfis. Tudo pode ser montado. Leia a ajuda no terminal, você vai descobrir muitas coisas novas!

https://www.mql5.com/ru/docs/basis/types/integer/enumeration - Artigo de ajuda sobre transferências. É claro o que são e como são... Mas como utilizá-los e qual é a vantagem? Dê um exemplo simples, se você for preguiçoso demais para escrever em palavras.

As enumerações são usadas para tornar o código mais legível e para remover constantes e substituí-las por entidades que são familiares aos humanos.

Por exemplo, os valores da enumeração ENUM_DAY_OF_WEEK podem ser usados para comparação com o valor dia_da_semana da estrutura MqlDateTime. Isto é, você pode escrevê-lo assim

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == 0 )
           {
            // Что-то делаем в воскресенье
           }

Ou você pode escrevê-lo de forma diferente:

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == SUNDAY )
           {
            // Что-то делаем в воскресенье
           }

SUNDAY é uma constante nomeada do tipo int com valor 0.

Como você acha que seria mais claro para uma pessoa que lesse o código?
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Kozitsyn:

Listas são usadas para tornar o código mais legível

Há outra aplicação infinitamente útil. Por exemplo:

enum ENUM_OPEN_DIRECTION {
     OPEN_BUY,       // только Buy
     OPEN_SELL,      // только Sell
     OPEN_BOTH,      // Buy + Sell
     OPEN_NONE       // не торговать
};
input ENUM_OPEN_DIRECTION  Trade_Direction = OPEN_BOTH;    // Направление торговли:

E o usuário recebe uma lista suspensa com uma escolha de 4 itens do que você escreveu lá nos comentários - "Comprar somente", "Vender somente", etc. Muito útil para listar um conjunto de indicadores, cronogramas, um conjunto de condições, etc. na janela de configurações do usuário

Razão: