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

 

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

И получить имя кривой, связать её с индексом - не ясно как.

 

В статистике тестера неправильно подсчитывается общая комиссия (в составе Gross Loss), также Gross Profit.

И как можно получить размер комиссии для символа?


 
Petros Shatakhtsyan #:

В статистике тестера неправильно подсчитывается общая комиссия (в составе Gross Loss), также Gross Profit.

Каждой сделке сопоставляется сумма следующих DEAL-свойств

  • DEAL_COMMISSION
  • DEAL_SWAP
  • DEAL_PROFIT
  • DEAL_FEE

Далее отрицательные числа складываются и получается Gross Loss, положительные - Gross Profit. Смысл этих показателей совсем не такой, как в MT4. Поэтому и PF обозначает несколько иное.


В отчете количество таких сделок в поле Total Deals.

 

Билд 3320 - решил оптимизировать код советника, ну думаю, есть хитрая фишка "Начать профилирование на исторических данных" - запускаю, выявляю точку избыточного потребления - оптимизирую - запускаю профилирование работает медленней, а если оптимизирую и запускаю обычную компиляцию - быстрей.

Запустил два раза подряд профилирование - ничего не менял в коде - время прохода отличается на 20 секунд и результаты разные калькуляции профилировщика.

Вторая попытка

Фин результат сходится.

Режим моделирования тиков OHLC.

Добавлено:

Закрыл все окна в терминале и ещё раз запустил

Повторный запуск пошел опять накручивать счетчики - ерунда какая то


 
fxsaber #:

Каждой сделке сопоставляется сумма следующих DEAL-свойств

  • DEAL_COMMISSION
  • DEAL_SWAP
  • DEAL_PROFIT
  • DEAL_FEE

Далее отрицательные числа складываются и получается Gross Loss, положительные - Gross Profit. Смысл этих показателей совсем не такой, как в MT4. Поэтому и PF обозначает несколько иное.


В отчете количество таких сделок в поле Total Deals.

Чтобы использовать DEAL_COMMISSION, надо копаться в истории и поискать все сделки символа.

И поскольку все брокерские компании указывают размер комиссии для каждого символа, а также кредитное плечо,то можно было получить размер комиссии символа,

например задавая: SYMBOL_COMMISSION, а также реальное плечо символа:  SYMBOL_LEVERAGE.

Они значительно ускорят расчеты.

 

PositionGetDouble

Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функции PositionGetSymbol или PositionSelect. Свойство позиции должно быть типа double.  Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

double  PositionGetDouble(
   ENUM_POSITION_PROPERTY_DOUBLE  property_id      // идентификатор свойства
   );

2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool  PositionGetDouble(
   ENUM_POSITION_PROPERTY_DOUBLE  property_id,     // идентификатор свойства
   double&                        double_var       // сюда примем значение свойства
   );

Параметры

property_id

[in]  Идентификатор свойства позиции. Значение может быть одним из значений перечисления ENUM_POSITION_PROPERTY_DOUBLE.

double_var

[out]  Переменная типа double, принимающая  значение запрашиваемого свойства.

Возвращаемое значение

Значение типа double. В случае неудачного выполнения возвращает 0.

движок форума зачем-то разделил выделенный текст на несколько отдельных после придания ему стиля "Предупреждение", но пост не об этом.


Вопрос 1. функцией PositionGetDouble () получаем значение, к примеру SL или TP позиции, получаем 0.0, что это будет означать, что SL или TP у позиции нет, или что получена ошибка при выполнении функции? - неизвестно.

Вопрос 2. у брокера Just2Trade при исполнении функции OrderSend () структура MqlTradeResult значение price (Цена в сделке, подтверждённая брокером) всегда возвращает 0.0, чья это ошибка, MT5 или брокера? - очевидно, что брокера, но не это самое интересное, а то, что в тестере эта функция заполняет структуру результата нормально. таким образом, советник, отлаженный и протестированный в тестере, не сможет нормально работать на счете брокера в некоторых случаях построения логики. причем если сразу же запросить цену позиции после выполнения функции  OrderSend () функцией  PositionGetDouble (), то получим 0.0 (см. Вопрос 1), но, подождав 1 секунду, запросив снова цену позиции функцией PositionGetDouble (), получим.... цену позиции!!!


„В действительности всё не так, как на самом деле.“ —  (с) Антуан Мари Жан-Батист Рожер де Сент-Экзюпери Станислав Ежи Лец

 
Andrey Dik #:

Вопрос 1. функцией PositionGetDouble () получаем значение, к примеру SL или TP позиции, получаем 0.0, что это будет означать, что SL или TP у позиции нет, или что получена ошибка при выполнении функции? - неизвестно.

Ошибка может быть получена только в случае, если ни разу до этого не была удачно вызвана PositionSelect*-функция. Но в таком случае и POSITION_TICKET будет нулевой.

Вопрос 2. у брокера Just2Trade при исполнении функции OrderSend () структура MqlTradeResult значение price (Цена в сделке, подтверждённая брокером) всегда возвращает 0.0, чья это ошибка, MT5 или брокера? - очевидно, что брокера, но не это самое интересное, а то, что в тестере эта функция заполняет структуру результата нормально. таким образом, советник, отлаженный и протестированный в тестере, не сможет нормально работать на счете брокера в некоторых случаях построения логики.

Видимо, речь идет про маркет-ордер. Описанное поведение правильное, просто еще не получили представление, как устроено. Собственно, для этого и пишутся торговые библиотеки.

причем если сразу же запросить цену позиции после выполнения функции  OrderSend () функцией  PositionGetDouble (), то получим 0.0 (см. Вопрос 1), но, подождав 1 секунду, запросив снова цену позиции функцией PositionGetDouble (), получим.... цену позиции!!!

Если PositionSelect выполнился удачно, то PositionGet* будет отрабатывать без ошибок.

 
fxsaber #:

Ошибка может быть получена только в случае, если ни разу до этого не была удачно вызвана PositionSelect*-функция. Но в таком случае и POSITION_TICKET будет нулевой.

Видимо, речь идет про маркет-ордер. Описанное поведение правильное, просто еще не получили представление, как устроено. Собственно, для этого и пишутся торговые библиотеки.

Если PositionSelect выполнился удачно, то PositionGet* будет отрабатывать без ошибок.

наверное Вы полагаете, что знаете терминал лучше разработчиков, коли берёте на себя смелость отвечать за них?

подключитесь к Just2Trade и проверьте свои заявления, дабы убедиться в своей неправоте: если нашлось время на пост здесь, то найдете так же время сделать и это.

 
Andrey Dik #:

наверное Вы полагаете, что знаете терминал лучше разработчиков, коли берёте на себя смелость отвечать за них?

По работе с ордерами знаю лучше.

подключитесь к Just2Trade и проверьте свои заявления, дабы убедиться в своей неправоте: если нашлось время на пост здесь, то найдете так же время сделать и это.

Код бага, пожалуйста.

 
fxsaber #:

1. По работе с ордерами знаю лучше.

2. Код бага, пожалуйста.

1. пипец какое самомнение, даже не знаю, хорошо это или плохо в данном случае. но, попрошу не отвечать мне больше здесь по этой ошибке. можно мне дождаться ответа разработчиков, а? ну пожалуйста!!!

2. Вы наверное издеваетесь?! какой код бага нужен? извольте проверить свои утверждения на указанном брокере. подозреваю, что не поняли о чем вообще речь.


Убедительная просьба, не пишите здесь больше об этой ошибке, не засерайте комментами мой вопрос разработчикам! 

Причина обращения: