Erreurs, bugs, questions - page 529

 

Ma question s'est déjà envolée). Je vais le répéter.

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

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

Quelqu'un a-t-il rencontré un problème similaire ?
 
Yedelkin:
Eh bien, jetez un coup d'œil au code donné par l'auteur. Et dans quel cas PositionGetDouble est appelé :)

Eh bien, oui, nous obtenons les données après avoir déterminé qu'il n'y a pas de position de principe et que la sélection d'une position particulière a échoué...

C'est quelque peu étrange.

 
papaklass:

A Vedelkin.

Encore une fois. La référence indique qu'afin de garantir des données de position fraîches, il est recommandé d'appeler la fonction PositionSelect( Symbol() ) juste avant de les appeler. Le code que j'ai fourni ici réfute cette affirmation. Logiquement, le code lui-même est absurde, mais il souligne l'inexactitude de la déclaration de l'aide.

Maintenant :

Et le bug est que la fonction PositionGetDouble(POSITION_VOLUME) devrait retourner zéro s'il n'y a pas de position. C'est tout. IMHO.

Non,vous avez tort....

Renvoyer zéro si il y a(PositionSelect() ) position avec volume=0.

Oupensez-vous que s'il n'y a pas de position, vous devez retourner zéro et le prix d'ouverture =0 ? !?

 
papaklass:

Et le bug est que la fonction PositionGetDouble(POSITION_VOLUME) devrait retourner zéro s'il n'y a pas de position.

:) Le "défaut" est qu'en l'absence d'un poste ouvert, il est inutile de demander ses données et d'effectuer d'autres calculs sur la base de ces données.

Eh bien, disons que vous êtes sûr qu'il n'y a pas de position. Alors pourquoi demander ses données (pour faire des démarches supplémentaires), si vous savez déjà qu'il n'y a pas de position ? Il est plus facile de réécrire un peu le code.

papaklass:

Encore une fois. La référence indique qu'afin de garantir l'acquisition de données de position fraîches, il est recommandé d'appeler la fonction PositionSelect( Symbol() ) juste avant de l'appeler. Le code que j'ai fourni ici réfute cette affirmation. Logiquement, le code en lui-même est absurde, mais il souligne l'inexactitude de la déclaration de l'aide.

Lecode ci-dessus indique seulement que l'auteur "afin de garantir des données fraîches" appelle la fonction PositionSelect(), la fonction rapporte son échec, mais l'auteur exige toujours des données de position fraîches. Est-ce correct ?

Mais ensuite, nous obtenons ce qui suit :

  • (a) l'échec de la fonction PositionSelect signifie que les nouvelles données de position n'ont pas été copiées dans l'environnement logiciel (comme l'auteur le souhaiterait) ;
  • et (b) les appels ultérieurs à PositionGetDouble, PositionGetInteger et PositionGetString renverront des données copiées une fois auparavant lorsque la fonction PositionSelect a réussi
  • .

En d'autres termes, les développeurs recommandent d'appeler la fonction afin de continuer à travailler avec des données de position fraîches lorsque la fonction se termine avec succès, et ils ne promettent rien du tout si la fonction renvoie false. ...En cas de retour false, les développeurs recommandent des procédures quelque peu différentes :)

2. de plus, considérons une nouvelle version du code :

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

Ici, si la fonction PositionSelect() échoue, elle nous invite à "calculer le montant de la position lorsqu'il n'y a pas de position". Mais qui dit que l'échec de la fonction PositionSelect() signifie automatiquement qu'il n'y a pas de position ? Les raisons de l'échec de la fonction PositionSelect() peuvent être différentes.

 

Je voudrais harceler les développeurs une fois de plus...

Je veux dire par le dessin qu'il est d'une importance vitale de pouvoir supprimer lesordres en attente lorsqu'un certain prix est atteint. En tant que trader MT4, je suis beaucoup plus intéressé sans une telle option. S'il vous plaît dites-moi quels sont vos plans futurs dans cette direction. Merci.

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

Le terminal se bloque très souvent lorsque l'on travaille avec le testeur.

 
tol64:

Le terminal se bloque très souvent lorsque l'on travaille avec le testeur.

Les plantages du terminal sont signalés régulièrement aux développeurs en mode automatique. Mais si vous voulez, vous pouvez faire une demande au CD avec tous les détails et joindre les journaux.
 
tol64:

Le terminal se bloque très souvent lorsque l'on travaille avec le testeur.

Décrivez votre situation en détail au Service Desk, en précisant

  • Paramètres d'entrée de l'Expert Advisor pendant le test
  • fixer l'indicateur (l'indicateur sera retiré après la fixation).
 
Interesting:
Il semble que les développeurs reçoivent régulièrement et automatiquement des rapports de plantage de terminaux. Mais si vous voulez, vous pouvez faire une demande à l'AC, où vous spécifiez tous les détails et joignez les journaux.
Donc, cette information qui est dans Details>> est automatiquement envoyée aux développeurs si l'Internet ? Si c'est le cas, c'est génial. Tout devrait être automatisé.)))
 
ALozovoy:

Décrivez votre situation en détail au Service Desk, en précisant

  • Paramètres d'entrée de l'Expert Advisor pendant le test
  • fixer l'indicateur (l'indicateur sera retiré après la fixation).

Ok, je le ferai plus tard.