Desejos para MQL5 - página 39

 
ds2:
// Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType.DataType = int; 
AvgType.Value    = 0;
AvgType.Comment  = "Тип скользящей средней";

Faria sentido fazê-lo desta maneira?

class ExternParam
{
    <template typename T>
    property T Value ...;
    property String Comment ...;
}
 
SK. писал (а):
ds2:
SK. escreveu (a):

Eu também gostaria de uma pausa do if().

Nunca vi algo assim em linguagens de programação populares...

О. É isso mesmo, mesmo em cima do dinheiro.

A afirmação positiva nesta declaração é que se não estiver em outros idiomas, é ruim, significa que é algo estranho e desnecessário.

Na minha opinião, isso não é de todo verdade.

Eu concordo. Mas é preciso olhar a situação também a partir de níveis mais elevados de conveniência. A prioridade da MQ, e nossa também(!) é melhorar a MQL como uma linguagem de negociação automatizada, e desenvolver suas possibilidades comerciais e analíticas. E a MQ ainda tem muitos problemas não resolvidos nessa direção.


E a implementação de estruturas de programação não-padrão não relacionadas ao comércio - não foi para isto que a MQL foi criada. Se os desenvolvedores quisessem de alguma forma torcer e se destacar entre outros idiomas, eles teriam usado Prolog, por exemplo, e não C++. :) (Embora, pessoalmente, como um fã do Prolog, teria sido interessante observá-lo. :) )


Eu acho que não importa o quanto os programadores aqui pedem um breakif, é pouco provável que a MQ perca tempo com isso. E, em minha opinião, eles farão a coisa certa. E sugiro a todos que não incomodem a MQ com pedidos que os distraiam das tarefas mais urgentes de melhorar a MQL como uma linguagem comercial automatizada.

SK. escreveu (a):

As construções complexas não são formadas apenas com base em loops e listas. Eles também são formados com base nos "se". Portanto, uma transição controlada para um suporte de fechamento externo seria útil.

Sou totalmente a favor de ir. :)


A lógica de um programa desse tipo seria mais transparente. Afinal, o breakif é uma saída antecipada de uma se-construção. Como qualquer saída antecipada, ela deve ser realizada por alguma condição, ou seja, dentro de mais uma se. Assim, estamos falando do breakif como um operador de saída não para um, mas para dois (!) se, o que complica a compreensão da lógica de um programa e também quebra do conceito geral de breaks(breakfor, breakwhile, etc.) como operadores que saem apenas para uma construção. Talvez seja por isso que os desenvolvedores de outros idiomas ainda não introduziram um operador tão duvidoso...

 
ds2 писал (а):
E sugiro a todos que não incomodem a MQ com pedidos que a distraiam das tarefas mais urgentes de melhorar a MQL como uma linguagem comercial automatizada.


Sou a favor disso. :) A lógica de um programa desse tipo será mais transparente.

Caros desenvolvedores! Por favor, não se distraia "das tarefas mais urgentes de melhorar a MQL como uma linguagem comercial automatizada".

Não o incomodaremos mais.

A única coisa que você ainda precisa fazer é levar em conta a opinião da ds2.

 

Inspirado no artigo do Skeptic Filozov - ah, digite os lucros e perdas médios em pips e max e min trades também no relatório de teste.

 

Pedidos lidos apenas


Inserir funções ou permitir que as funções atuais acessem todas as subpastas do terminal

onde há material a ser processado: por exemplo, toras

modo "somente leitura".


Planejar outra pasta de serviços para especialistas

Onde todos os tipos de informações da DM seriam escritas de forma centralizada.

Por exemplo, um arquivo de calendário formatado e atualizado automaticamente, notícias "em números" etc...


Se você precisar esclarecer sobre o que se trata o pedido, não há problema. ;)

 

No gráfico, seria bom ter
1. linha de cabelo, já que linhas de espessura 1 parecem grosseiras.

2. Seria bom ter linhas exibidas com arredondamento de Dígitos+2.

Neste momento as linhas são arredondadas para os Dígitos da ferramenta, o que leva a um trampolim.

-No ambiente dos produtos gráficos modernos isto é marcante e não é mais conveniente na prática.

 
Devido ao fato de que o assessor pode servir o cronograma do cliente, os "tiquetaques tecnológicos" são muito necessários
por exemplo, sob a forma de
int servis() 
{
return(0);
}

Que também recebe/partida como Start, mas não de um servidor, mas de um timer local do terminal.
O período necessário de carrapatos tecnológicos não prejudicará ninguém: de 1 a 3 segundos.
Esta mudança pode ser introduzida diretamente na MQL-4 sem esperar pela 5ª versão. Por assim dizer, para fins de teste e para os negócios.
 
Korey:

ERROR em METALANGIA

extern double  Lot=0.2;
int start()
{ double   Lot; }

A dupla iniciação variável passa por uma compilação sem erro ou aviso.


extern double  Lot=0.2;
double   Lot;   //а так ошибку - дает
int start()
{ }

Uma variável local mascara uma variável global. Não há erro.

 

Korey, zero precisamente porque a variável externa é mascarada:

double Lot;

- é uma declaração não-inicializada de uma variável local dentro da função start(). Por padrão, ela é inicializada a zero. Todas as funções que são chamadas em start() e têm o parâmetro de entrada Lote recebem o valor de uma variável local, não uma variável externa. A única exceção é para funções dentro do init() que são executadas antes do início(). Lá, o parâmetro Lote (se não for mascarado de forma semelhante) deve obter o valor de uma variável externa, ou seja, 0,2.


Você citou o código errado ou incompleto. De onde você chama meu_funck()?

 
Korey:

Se estava mascarado, então por que as outras funções recebem 0 em vez de 0,2, como prescrito no exterior?


Você mesmo precisa verificar as declarações. Aqui está um roteiro simples:

//+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
 
extern double Var = 0.0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   Print("Функция init():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc()
   {
   Var = -100;
   Print("Функция MyFunc(): Переменная Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
   {
   Print("Функция deinit():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   double Var = 15;
   Print("Локальная переменная на локальном уровне функции start() Var=",Var);
   MyFunc();
   Print("Локальная переменная на локальном уровне после выполнения функции MyFunc() Var=",Var);
 
   Print("Функция start() завершена");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+


e os resultados do roteiro.