Ошибки, баги, вопросы - страница 3195
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Скорее всего тут нужно создавать указатель на CGraphic а потом его удалять
Можете кодом пример показать - пока не понял как.
В общем проблема оказалась в том, что код генерировал новое имя объекта
и удалялась только один последний объект (точка), как я понял.
Добавлю, что у CGraphic нет возможности получить координаты с кривой - получается дорога в один конец.
И получить имя кривой, связать её с индексом - не ясно как.
В статистике тестера неправильно подсчитывается общая комиссия (в составе Gross Loss), также Gross Profit.
И как можно получить размер комиссии для символа?
В статистике тестера неправильно подсчитывается общая комиссия (в составе Gross Loss), также Gross Profit.
Каждой сделке сопоставляется сумма следующих DEAL-свойств
Далее отрицательные числа складываются и получается Gross Loss, положительные - Gross Profit. Смысл этих показателей совсем не такой, как в MT4. Поэтому и PF обозначает несколько иное.
В отчете количество таких сделок в поле Total Deals.
Билд 3320 - решил оптимизировать код советника, ну думаю, есть хитрая фишка "Начать профилирование на исторических данных" - запускаю, выявляю точку избыточного потребления - оптимизирую - запускаю профилирование работает медленней, а если оптимизирую и запускаю обычную компиляцию - быстрей.
Запустил два раза подряд профилирование - ничего не менял в коде - время прохода отличается на 20 секунд и результаты разные калькуляции профилировщика.
Вторая попытка
Фин результат сходится.
Режим моделирования тиков OHLC.
Добавлено:
Закрыл все окна в терминале и ещё раз запустил
Повторный запуск пошел опять накручивать счетчики - ерунда какая то
Каждой сделке сопоставляется сумма следующих DEAL-свойств
Далее отрицательные числа складываются и получается 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 (), получим.... цену позиции!!!
„В действительности всё не так, как на самом деле.“ — (с) Антуан Мари Жан-Батист Рожер де Сент-Экзюпери Станислав Ежи Лец
Вопрос 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* будет отрабатывать без ошибок.