Desejos para MQL5 - página 117

 
HideYourRichess писал(а) >>
Negociando com um ipod?! - Desculpe, pelo amor de Deus, eu deveria tê-lo avisado imediatamente. Por favor, escreva, diga qualquer bobagem - eu não direi uma palavra. Agora que tudo está esclarecido - eu o aceitarei com compreensão e paciência. Negocie em um iPod! - aaaaaghit....

Obrigado por sua simpatia e boa sorte para você, ao menos não avance

 

Acabei de encontrar um problema no MT4, por favor, certifique-se de que isso não acontecerá no MT5 (ainda não conferi).


Logo no início (antes do init) foram estabelecidas as matrizes:

xsell[3];

xbuy[3];


Antes disso, uma variável externa:

Exterior int Max_Array_Size = 13;


No laço inicial():

ArrayResize(xsell, Max_Array_Size);

ArrayResize(xbuy, Max_Array_Size);


E então o laço para():


for(int kss= Max_Array_Size; kss>0; kss--) {\i1}

xbuy[kss] = . . . ;

. . .

}


O mesmo esquema foi usado tanto no módulo de vendas(Indicador personalizado) quanto no módulo de compras - ou seja, as variáveis são diferentes,

mas o princípio é o mesmo. No início eu escrevi tudo para vendas, compilei - tudo é legal, sem problemas. Então eu copiei

A compilação levou muito mais tempo e a comutação entre

A troca de horários também demorou muito mais tempo. Vendas para deficientes - nada mudou, frenagem.

Deixou apenas as vendas - corre rápido. O compilador não reclamou, apenas demorou muito mais tempo para funcionar.

Rewatched tudo o que parecia suspeito, reescreveu algumas peças em compras - desfasamentos!

Acontece que o problema estava na dimensão da matriz: 13 => 0-12, e na dimensão do laço eu estava tentando alimentá-lo 13 também!


Após a fixação:

ArrayResize(xsell, Max_Array_Size+1);

ArrayResize(xbuy, Max_Array_Size+1);


tanto as vendas quanto as compras foram compiladas como deveriam ser e a mudança de cronograma tornou-se mais rápida.

Mas o erro deveria ter aparecido durante a compilação. Encontrar a causa em tais casos

Não é nada fácil encontrar a razão (você pode até nem mesmo estar ciente do problema).

E não está claro porque tudo estava funcionando sem problemas no módulo de vendas.

 
chief2000 писал(а) >>

Mas o erro deveria ter sido descoberto durante a compilação. Encontrar a causa em tais casos não é nada fácil (você pode não ter sabido que havia um problema).

O compilador não pode e não deve rastrear os valores variáveis por definição.

E também não está claro porque tudo estava funcionando sem problemas no módulo de vendas.

Porque um erro é mais rápido de processar do que dois ou mais.

 
fwiq >> :

O compilador não pode e não deve rastrear os valores variáveis por definição.

É ruim se realmente for.

Afinal de contas, é praticamente o mesmo que acessar uma variável que não foi pré-definida.

fwiq escreveu >>

Porque um erro é mais rápido de tratar do que dois ou mais.

Não, é outra coisa - eu lhe disse que quando apenas o módulo de vendas foi deixado, não houve problema,

e quando retirei as vendas e deixei apenas as compras, houve um problema. A diferença foi muito perceptível, apesar de ambos os módulos

são absolutamente idênticas, exceto por algumas operações alteradas para reverter (>/<, Alto[]/Baixo[] etc.).

 
chief2000 писал(а) >>

Não, é outra coisa - eu lhe disse que quando apenas o módulo de vendas era deixado, não havia problema, mas quando eu removia as vendas e deixava apenas as compras, havia um problema. A diferença foi muito perceptível, e ambos os módulos são absolutamente idênticos, exceto por algumas operações alteradas para reverter (>/<, Alto[]/Baixo[] etc.).

Talvez, não seja a definição de variáveis ou matrizes. Nos indicadores MT4, você deve observar com cuidado e atenção os momentos em que você começa a adicionar linhas de forma programática, e mudar os nomes das matrizes refletidas. Às vezes há confusão e a linha pode não ser refletida ou o cálculo pode desligar, como neste caso. Há apenas uma cura, como na piada "Basta sair e entrar e tudo vai funcionar".

 

Se literalmente, a sobrecarga também não ajudou.

De qualquer forma, foi a distinção entre vender e comprar que me ajudou a saber que havia um problema...

A felicidade foi uma bênção disfarçada :)

 
Tenho outra pergunta. Não posso executar o depurador MQL5 nos indicadores. Funciona em scripts e Expert Advisors, mas não pára em nenhum indicador e não pode passar pelas etapas. Não tenho certeza se há alguma peculiaridade não documentada, se você as conhece, por favor me avise.
 
fwiq >> :
Tenho outra pergunta. Não posso executar o depurador MQL5 nos indicadores. Funciona em scripts e Expert Advisors, mas não pára em nenhum indicador e não pode passar pelas etapas. Eu não tenho trabalhado com este tipo de coisas, eu comecei a trabalhar com este tipo de coisas.

Há uma semana os manipuladores escreveram que esta era a idéia e a depuração nos índices de depuração funcionará mais tarde.

 

Na MT4 sempre houve erros porque Ask ou Bid ou outro (Fechar, Abrir, etc.) coletado após a vírgula

uma enorme quantidade de números (como 1.43231111111111111111). Como resultado, tivemos de acrescentar "NormalizeDouble(Bid,Digits)";" .

E isto pode ser resolvido uma vez em nível de MT.

 

Por favor, acrescente às funções ObjectFind e ObjectDelete a capacidade de trabalhar com máscaras como : *,?

Emprincípio, é claro, apenas o ObjectFind pode ser usado .Se for necessário manter a compatibilidade retroativa, então a primeira função deve ser mantida inalterada, e o conjunto deve ser complementado, por exemplo, com oObjectFindM (busca múltipla).

Exemplo: precisamos encontrar etiquetas de texto que comecem com "Sinal".

Implementação: Retorna o nome do primeiro objeto encontrado (ou cabo, mas isso requer outras funções que possam manuseá-lo).

Notação: ObjectFindM("Sinal*");

Exemplo: você deve remover da janela "0" somente as etiquetas de texto que comecem com "Sinal".

Notação: ObjectDelete(0,"Sinal*");