Ошибки, баги, вопросы - страница 529

 

Мой вопрос далеко уже улетел.)) Повторюсь. 

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

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

Кто-нибудь сталкивался с подобной проблемой? 
 
Yedelkin:
Дык, посмотрите приведённый автором код. И в каком случае вызывается PositionGetDouble :)

Ну да, получаем данные после после того как определились что позиций в принципе нет и выбор конкретной позиции закончился неудачей...

Странно это как-то.

 
papaklass:

To Vedelkin

Еще раз. В справке сказано, что для гарантированного получения свежих данных о позиции рекомендуется вызывать функцию PositionSelect( Symbol() ) непосредственно перед обращением за ними. Приведенный мною код опровергает это утверждение. С точки зрения логики, сам код абсурден, но он подчеркивает неправильность утверждения в справке.

Теперь:

А косяк в том, что при отсутствии позиции функция PositionGetDouble(POSITION_VOLUME) должна возвращать ноль. Все. ИМХО.

Нет, вы  ошибаете....

Возвращать ноль если есть (PositionSelect() ) позиция с объем=0.  

Или вы думаете что  если нет позиция надо возвращат и цена откритие =0 ?!?

 
papaklass:

А косяк в том, что при отсутствии позиции функция PositionGetDouble(POSITION_VOLUME) должна возвращать ноль.

:) "Косяк" в том, что при отсутствии открытой позиции бессмысленно запрашивать её данные и делать на основании этих данных дальнейшие расчёты.

..Ну вот, допустим, Вы достоверно знаете, что позиция отсутствует. Зачем же запрашивать данные о ней (делать лишние шаги), если уже известно, что позиции нет? Проще чуть переписать код. 

papaklass:

Еще раз. В справке сказано, что для гарантированного получения свежих данных о позиции рекомендуется вызывать функцию PositionSelect( Symbol() ) непосредственно перед обращением за ними. Приведенный мною код опровергает это утверждение. С точки зрения логики, сам код абсурден, но он подчеркивает неправильность утверждения в справке.

Приведённый ранее код говорит только  том, что автор "для гарантированного получения свежих данных" вызывает функцию  PositionSelect(), функция рапортует о своём неудачном завершении, но автор продолжает требовать получения свежих данных о позиции. Правильно?

Но тогда получается следующее:

  • (а) неудачное завершение функции  PositionSelect означает, что свежие данные о позиции не были скопированы в программное окружение (как того хотелось бы автору);
  • и (б) последующие вызовы PositionGetDouble, PositionGetInteger и PositionGetString будут возвращать данные, скопированные когда-то ранее при удачной работе функции  PositionSelect.

 Иными словами, разработчики рекомендуют вызывать функцию, чтобы при её удачном завершении продолжать работу со свежими данными о позиции, и совершенно ничего не обещают, если функция вернула false. ...При  получении false разработчики рекомендуют несколько иные процедуры :)

2. Более того, рассмотрим новую версию кода:

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

 Здесь при неудачном завершении функции PositionSelect() предлагается тут же "расчитывать объем позиции при отсутствии позиции". Но кто сказал, что неудачное завершение функции PositionSelect() автоматически означает отсутствие позиции? Причины неудачи с работой функции PositionSelect() могут быть разными.

 

Хочу еще раз пристать к разработчикаи...

Рисунком хочу сказать что жизнено важно иметь возможность удалять отложенные ордера при достижении указанной цены. Без такой возможности мне как трейдеру МТ4 значительно интересней. Скажите пожалуйста какие ваши дальнейшие планы в этом направлении. Спасибо. 

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

При работе с тестером очень часто вылетает терминал. 

 

 
tol64:

При работе с тестером очень часто вылетает терминал.

Отчеты о крахах терминала вроде как регулярно поступают разработчикам в автоматическом режиме. Но при желании можно оформить заявку в СД, где указать все подробности и прикрепить логи.
 
tol64:

При работе с тестером очень часто вылетает терминал. 

 

Опишите вашу ситуацию подробно в Cервисдеск, где укажите

  • входные  параметры эксперта при тестировании
  • приложите индикатора (после исправления индикатор будет удален).
 
Interesting:
Отчеты о крахах терминала вроде как регулярно поступают разработчикам в автоматическом режиме. Но при желании можно оформить заявку в СД, где указать все подробности и прикрепить логи.
То есть та информация, которая находится в разделе Details>> автоматически отправляется к разработчикам при условии включенного интернета? Если так, то вообще здорово. Всё должно быть автоматизированно.)))
 
ALozovoy:

Опишите вашу ситуацию подробно в Cервисдеск, где укажите

  • входные  параметры эксперта при тестировании
  • приложите индикатора (после исправления индикатор будет удален).

Ок, чуть позже сделаю.