Erros, bugs, perguntas - página 720

 

Olá a todos!

Encontrei este vírus (ou talvez esteja a interpretar mal alguma coisa)

Ao olhar para a história durante um mês, mostra dados adequados, ou seja, 740, swap -250

Ao mesmo tempo, quando vejo todo o período, 500 pontos ganhos e a troca é quase a mesma

É por isso que não compreendo como pode ser assim quando os ganhos de todo o período são menores do que o total mensal.

Se precisar, posso anexar relatórios de história

 
tol64:

É por isso que se colocar uma ordem Buy Stop pendente com uma posição aberta de 3 lotes e 4 ordens Buy Stop existentes de 3 lotes cada (com um limite de 15 lotes), não deverá ter sucesso.

Geralmente, sim - em termos do que é descrito no helpe.

Mas logicamente - não necessariamente. Nos mercados de troca, existem apenas ordens limitadas na pilha, enquanto que as ordens stop são armazenadas no servidor do corretor e têm dois parâmetros - o preço de activação ("Preço" em MT) e o preço da ordem limitada a ser colocada (o pior preço a que a transacção está disposta a executar). Isto é semelhante ao BuyStopLimit e SellStopLimit em MT5, apenas o Limite pode ser igual ao preço de paragem ou superior (para BuyStopLimit) ou inferior (para SellStopLimit). Nos mercados bolsistas, a fixação de um limite mais elevado (para compra) resulta numa transacção, enquanto que isto não pode ser feito em MT. Assim, nos mercados de câmbio, especialmente os não desenvolvidos (por exemplo, a Bolsa Ucraniana), muitas vezes (e especialmente no dia de expiração de um índice trimestral de futuros entre as 16:30-16:35) as paragens não têm tempo para trabalhar e a taça está cheia de ordens Limite, o que, em condições normais, levaria imediatamente à execução.

Assim - limite no mercado - compromisso firme de compra / venda (se o dinheiro de repente se tornar escasso, o corretor pode remover a ordem, mas antes de chegar à execução), enquanto STOP - simplesmente um registo no corretor servidor, de modo que no momento de atingir o preço de activação o corretor pode estimar os fundos livres e decidir - expor o limite ou não. É por isso que estou a dizer que para os limites é preciso cumprir os limites, mas para as paragens, em teoria, não é preciso.

 
Yedelkin:

Tem de duplicar o ToString? :)

Ah, veja-se NormalizeDouble:

É preciso ter em mente que um número normalizado quando a saída para o Jornal utilizando Print() pode conter mais casas decimais do que seria de esperar.

   double pi=M_PI;
   Print("pi=",DoubleToString(pi,16));
      
   double pi_3=NormalizeDouble(M_PI,3);
   Print("NormalizeDouble(pi,3) = ",DoubleToString(pi_3,16))
   ;
   double pi_8=NormalizeDouble(M_PI,8);
   Print("NormalizeDouble(pi,8) = ",DoubleToString(pi_8,16));
   
   double pi_0=NormalizeDouble(M_PI,0);
   Print("NormalizeDouble(pi,0) = ",DoubleToString(pi_0,16));
/*
   Результат:
   pi= 3.1415926535897931
   NormalizeDouble(pi,3)= 3.1419999999999999                          <-----------
   NormalizeDouble(pi,8)= 3.1415926499999998                          <-----------
   NormalizeDouble(pi,0)= 3.0000000000000000
*/

Nada de confuso?

 
victorg:

Ah, olha para NormalizeDouble:

Alguma coisa confusa?

Não, nada de confuso. No seu exemplo

void OnStart()
  {
  double a=2000000.0/3.0;
  Print(DoubleToString(a,30));
  }
não houve qualquer referência à utilização da função NormalizeDouble() e dos números normalizados. Correspondentemente, a minha observação"Tens de duplicar o fio dental?:)" foi acompanhado por uma citação da funçãoDoubleToString() sem sombra de constrangimento.E ainda ninguém refutou a relevância desta citação.
 
Yedelkin:

Não, nada é confuso. No seu exemplo.

Nunca houve qualquer referência à utilização da função NormalizeDouble() e dos números normalizados. Correspondentemente, a minha observação"Tens de duplicar o fio dental?:)" foi acompanhado por uma citação da funçãoDoubleToString() sem sombra de constrangimento.E ainda ninguém refutou a relevância desta citação.

Na verdade, não estou a referir-me ao seu comentário, mas sim à doca de NormalizeDouble().

 
notused:

Geralmente, sim - em termos do que é descrito no helpe.

Mas logicamente - não necessariamente. Nos mercados de troca, existem apenas ordens limitadas na pilha, enquanto que as ordens stop são armazenadas no servidor do corretor e têm dois parâmetros - o preço de activação ("Preço" em MT) e o preço da ordem limitada a ser colocada (o pior preço a que a transacção está disposta a executar). Isto é semelhante ao BuyStopLimit e SellStopLimit no MT5, apenas o Limite pode ser igual ao preço de paragem ou superior (para BuyStopLimit) ou inferior (para SellStopLimit). Nos mercados bolsistas, a fixação de um limite mais elevado (para compra) resulta numa transacção, enquanto que isto não pode ser feito em MT. Assim, nos mercados de câmbio, especialmente os não desenvolvidos (por exemplo, a Bolsa Ucraniana), muitas vezes (e especialmente no dia de expiração de um índice trimestral de futuros entre 16:30-16:35) as paragens não têm tempo para trabalhar e a taça está cheia de ordens limite, o que, em condições normais, levaria imediatamente à execução.

Assim - limite no mercado - compromisso firme de compra / venda (se o dinheiro de repente se tornar escasso, o corretor pode retirar a ordem, mas antes de chegar à execução), enquanto STOP - simplesmente um registo no corretor servidor, de modo que no momento de atingir o preço de activação o corretor pode estimar fundos livres e decidir - expor limite ou não. É por isso que estou a dizer que para os limites, os limites devem ser cumpridos, enquanto que para as paragens, em teoria, não têm de ser.

Obrigado pela explicação detalhada.

Valery, tentou implementar uma auto-estratégia no MT5 Strategy Tumbler? Experimentei-o há cerca de um mês e não funcionou, ninguém respondeu no fórum. Não compreendo se é um insecto ou um mal-entendido da minha parte. Ilumina um pouco. :)

 

Boa tarde!

Por favor aconselhe-me, tenho um indicador iCustom num corpo normal do programa, funciona bem e recebe uma pega, tudo funciona.

Se o colocar na biblioteca EX5 obtenho o manípulo indicador=-1 e o programa principal não chama o indicador:

"O carregamento de DZMACD EURGBP,M15 falhou"
"não pode carregar indicador personalizado 'DZMACD' [4002]" [4002]".

Ao mesmo tempo, os indicadores padrão, como iMA ou iMACD, trabalham normalmente na mesma biblioteca do ex5, recebem a pega.

Não sei o que estou a fazer mal ou é um insecto?

Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
Технические индикаторы / iCustom - Документация по MQL5
 
Na estruturaMqlDateTime

dia int;// dia

significa o dia do mês?
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура даты - Документация по MQL5
 
victorg:

Na verdade, não estou a referir-me ao seu comentário, mas sim ao documento NormalizeDouble().

Na verdade, a mensagem foi redigida desta forma:

victorg:

Yedelkin:

Conseguiu chegar ao DoubleToString? :)

Ah, veja-se NormalizeDouble:

Alguma coisa confusa?

Ou seja, houve uma citação directa de "o meu comentário" com a sugestão "procura outra coisa lá em cima" e a pergunta "é confuso?

Se quisesse apresentar apenas os resultados de uma nova investigação de uma forma "...sobre uma doca por NormalizeDouble()" - escreveria-o assim, sem citar informações desnecessárias. Acho que sim :/

Uma vez que, no entanto, a sua mensagem utilizou um link nomeado e exactamente para a minha réplica - teve de esclarecer que NormalizeDouble() não tinha nada a ver com a minha réplica ou a sua mensagem original, sobre a qual tomei a liberdade de comentar.

 
Fia:

Boa tarde!

Por favor aconselhe-me, tenho o indicador iCustom no corpo habitual do programa funciona bem, recebe handel, tudo funciona.

Se o colocar na biblioteca do EX5 recebo Handel= -1 e o programa principal não chama o indicador:

"O carregamento de DZMACD EURGBP,M15 falhou"
"não pode carregar indicador personalizado 'DZMACD' [4002]" [4002]".

Ao mesmo tempo, indicadores padrão como o iMA ou iMACD funcionam bem na mesma biblioteca do ex5, eles são manipulados.

Não consigo entender o que estou a fazer mal ou é um insecto?

As definições do indicador personalizado na biblioteca estão OK?

ERR_PARAMETRO_INTERNAL_ INCORRECTO

4002

Parâmetro errado na chamada de função do terminal interno do cliente