Erros, bugs, perguntas - página 529

 

A minha pergunta já voou para longe). Vou repetir.

tol64:
Почему то между 2001 и 2006 годом не тестируются эксперты. Смотрел по евро и фунту. Закрыл терминал, удалил историю. Закачалась заново. Всё равно. До 2001 сделки открываются. А начиная с 2001 по 2006 при наличии сигналов пропуск. Почему?

---
Дополнительная информация. Это происходит только, если в настройках тестера выбран таймфрейм D1. Если выбрать таймфрейм D1 в настройках эксперта, а в настройках тестера меньший ТФ, то пропуска нет. Это баг или есть какое-то этому объяснение? 

Alguém se deparou com um problema semelhante?
 
Yedelkin:
Bem, dê uma vista de olhos ao código dado pelo autor. E em que caso se chama PositionGetDouble :)

Bem, sim, obtemos os dados depois de termos determinado que não existem posições em princípio e a selecção de uma posição em particular falhou...

Isto é, de alguma forma, estranho.

 
papaklass:

A Vedelkin.

Mais uma vez. A referência diz que, para garantir novos dados de posição, é recomendado chamar a função PositionSelect( Symbol() ) imediatamente antes de os chamar. O código que aqui forneci refuta esta afirmação. Logicamente, o próprio código é absurdo, mas sublinha a incorrecção da afirmação na ajuda.

Agora:

E o bug é que a função PositionGetDouble(POSITION_VOLUME) deve retornar zero se não houver posição. É isso mesmo. IMHO.

Não,está enganado....

Devolver zero se (PositionSelect() ) posição com volume=0.

Oupensa que se não houver posição, deve devolver zero e o preço de abertura =0 ?!?

 
papaklass:

E o bug é que a função PositionGetDouble(POSITION_VOLUME) deve retornar zero se não houver posição.

:) A "falha" é que, na ausência de uma posição aberta, não faz sentido solicitar os seus dados e fazer mais cálculos com base nestes dados.

Bem, digamos que sabe com certeza que não há nenhuma posição. Então, por que razão solicitaria os seus dados (para fazer passos extra), se já sabe que não há nenhuma posição? É mais fácil reescrever um pouco o código.

papaklass:

Mais uma vez. A referência diz que, para garantir a aquisição garantida de novos dados de posição, é recomendado chamar a função PositionSelect( Símbolo() ) imediatamente antes de a chamar. O código que aqui forneci refuta esta afirmação. Logicamente, o próprio código é absurdo, mas enfatiza a incorrecção da afirmação na ajuda.

O código acima apenas diz que o autor "para garantir novos dados" chama a função PositionSelect(), a função reporta o seu fracasso, mas o autor ainda requer novos dados de posição. É correcto?

Mas depois temos o seguinte:

  • (a) a falha da função PositionSelect significa que os novos dados de posição não foram copiados para o ambiente de software (como o autor gostaria);
  • e (b) chamadas subsequentes para PositionGetDouble, PositionGetInteger e PositionGetString devolverão dados copiados uma vez antes, quando a função PositionSelect foi bem sucedida
  • .

Por outras palavras, os programadores recomendam chamar a função para continuar a trabalhar com novos dados de posição quando a função terminar com sucesso, e não prometem nada se a função voltar a ser falsa. ...Ao receberem falsos, os programadores recomendam procedimentos um pouco diferentes :)

2. além disso, vamos considerar uma nova versão do código:

if(PositionSelect(Symbol()))
   {//---еще одно непосредственное обращение
      //---например, расчитываем объем позиции при доливки
   } 
else 
   {
      //---например, расчитываем объем позиции при отсутствии позиции
   }

Aqui, se a função PositionSelect() falhar, pede-nos para "calcular a quantidade de posição quando não há posição". Mas quem diz que a falha da função PositionSelect() significa automaticamente que não há posição? As razões do fracasso da função PositionSelect() podem ser diferentes.

 

Gostaria de incomodar mais uma vez os criadores.

Quero dizer por desenho que é de importância vital poder eliminarordens pendentes quando se atinge um determinado preço. Como comerciante MT4, estou muito mais interessado sem essa opção. Por favor, digam-me quais são os vossos planos futuros nesta direcção. Obrigado.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
Arquivos anexados:
zhq04b2p01.png  16 kb
 

O terminal trava muito frequentemente quando se trabalha com o provador.

 
tol64:

O terminal trava muito frequentemente quando se trabalha com o provador.

As falhas do terminal são relatadas regularmente aos programadores em modo automático. Mas se quiser, pode fazer uma aplicação ao CD com todos os detalhes e anexar os registos.
 
tol64:

O terminal trava muito frequentemente quando se trabalha com o testador.

Descreva a sua situação em pormenor ao Service Desk, especificando

  • Parâmetros de entrada do Conselheiro Especialista durante os testes
  • anexar indicador (o indicador será removido após a fixação).
 
Interesting:
Os relatórios de crash dos terminais parecem chegar automaticamente aos programadores numa base regular. Mas se quiser, pode fazer um pedido à AC, onde especifica todos os detalhes e anexa os registos.
Então, essa informação que está em Detalhes>> é automaticamente enviada para os programadores se a Internet? Se assim for, isso é óptimo. Tudo deve ser automatizado))))
 
ALozovoy:

Descreva a sua situação em pormenor ao Service Desk, especificando

  • Parâmetros de entrada do Conselheiro Especialista durante os testes
  • anexar indicador (o indicador será removido após a fixação).

Ok, fá-lo-ei mais tarde.
Razão: