Ошибки, баги, вопросы - страница 3120
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Путь несмышлёныши ставят побольше, а действительную оценку поставь и тебе угроза репрессий?
У Вас путаница в голове. Несмышлёныши с хорошими оценками — абсолютно мифические персонажи, в природе не существующие. Хорошие оценки ставят как раз "смышлёныши", которые скачали, разобрались в программе и научились стабильно зарабатывать с её помощью или хотя бы видят в перспективе хорошее в ней подспорье. А вот несмышлёныши потому так и зовутся, что ни в чём разобраться не могут, в том числе и в качественном продукте, поэтому с разочарованием бросают его и идут выражать своё мнение в виде плохой оценки. Плохую оценку могут, конечно, влепить так же и "смышлёныши", которые во всём разобрались и им не понравилось, это нормально, но сейчас речь не о них.
Либо дедуля совсем умом поехал, либо объясните мне, почему значение комиссии нельзя динамически менять в соответствующем поле, как меняется, например, Средства, Свободная маржа, Цена, Прибыль?.. Пусть себе и Комиссия отображается, а когда ордер захлопнется, во вкладке История пущай будет окончательный вариант начисленной комиссии.
Конечно, рассчитать комиссию можно и до закрытия сделки. Так же, как можно рассчитать размер маржи для кросса, несмотря на то, что он зависит от нескольких переменных и постоянно меняется.
Безусловно, существует множество правил начисления комиссии (раздельно за вход/выход, в деньгах/в процентах, за лот/за сделку, в зависимости от объема, и т.д.), но что мешает дать доступ к этим настройкам через SymbolInfo и AccountInfo функции?
О реальных причинах остается только догадываться.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Бета-версия платформы MetaTrader 5 build 2155: Области видимости в MQL5, глобальное обновление тестера стратегий и встроенного хостинга
MetaQuotes, 2019.09.20 16:36
Комиссия
Здесь отображается информация о комисcиях, взимаемых брокером при совершении сделок по инструменту. Показываются все подробности расчета:
Например, следующая запись означает, что комиссия начисляется немедленно при совершении сделок входа и выхода. При объеме сделки от 0 до 10 лотов комиссия взимается в размере 1.2 USD за операцию. При объеме сделки от 11 до 20 лотов комиссия будет взиматься в размере 1.1 USD за каждый лот сделки.
0 - 10 | 1.2 USD за сделку
11 - 20 | 1.1 USD за лот
Безусловно, существует множество правил начисления комиссии (раздельно за вход/выход, в деньгах/в процентах, за лот/за сделку, в зависимости от объема, и т.д.), но что мешает дать доступ к этим настройкам через SymbolInfo и AccountInfo функции?
О реальных причинах остается только догадываться.
Несколько лет Терминал показывал DEAL_SL/DEAL_TP, но только недавно это появилось в MQL. Похоже, просто не до этого было. Так и здесь.
Если кто в курсе, подскажите. Если заливаешь в CodeBase новую версию существующего кода, то у предыдущих проголосовавших сбрасывается запрет на повторное голосование и они могут заново проголосовать за новую версию? Сам я в этом сильно сомневаюсь, но если бы была такая возможность, было бы справедливо сбрасывать предыдущую оценку в замен новой (которая гипотетически призвана быть не ниже предыдущей), поскольку код развивается и новая версия может удовлетворить голосовавшего в большей степени, а старая оценка за старый код станет уже недействительной. (Правда, с ростом функционала растёт и код, а потому могут быть и новые ошибки и глюки, ещё более забористые. Может быть всякое... и новая оценка может оказаться ниже, но меня это устраивает.)
Да хватит уже волосы рвать за низкую оценку ваших …кодов. Если человек поставил вашему коду оценку 1, то это не означает, что код такой и есть. Ну переделайте его хоть 100 раз… и все 100 раз этот код будет оценен именно так. Разве это так трудно понять?
Да хватит уже волосы рвать за низкую оценку ваших …кодов. Если человек поставил вашему коду оценку 1, то это не означает, что код такой и есть. Ну переделайте его хоть 100 раз… и все 100 раз этот код будет оценен именно так. Разве это так трудно понять?
Возможно, Ваше резюме и отражает реальное положение дел в сфере голосования и это печалит. Но я печалюсь не о себе — эти виртуальные звёздочки с чаем не выпьешь и в кошелёк на положишь, я разочаровываюсь в концепции способа презентации продуктов для новых пользователей, беспокоясь именно о них. Там, где нет достоверной оценки/рейтинга, пользователи просто не смогут эффективно искать желаемый продукт по критерию "Сортировка по рейтингу". Получается, рейтинговая система — пустышка и остаётся искать нужный продукт по названию/описанию, а не доверяться бестолковому количеству звёзд. А то так и будут вылавливать всякое... то, что плавает на поверхности (заслуженно или не очень), а то, что им действительно нужно, будет недосмотрено. Я просто предложил это изменить в сторону большей продуманности. Но если с такой действительностью никто бороться не собирается, я умываю руки.
Возможно, Ваше резюме и отражает реальное положение дел в сфере голосования и это печалит. Но я печалюсь не о себе — эти виртуальные звёздочки с чаем не выпьешь и в кошелёк на положишь, я разочаровываюсь в концепции способа презентации продуктов для новых пользователей, беспокоясь именно о них. Там, где нет достоверной оценки/рейтинга, пользователи просто не смогут эффективно искать желаемый продукт по критерию "Сортировка по рейтингу". Получается, рейтинговая система — пустышка и остаётся искать нужный продукт по названию/описанию, а не доверяться бестолковому количеству звёзд. А то так и будут вылавливать всякое... то, что плавает на поверхности (заслуженно или не очень), а то, что им действительно нужно, будет недосмотрено. Я просто предложил это изменить в сторону большей продуманности. Но если с такой действительностью никто бороться не собирается, я умываю руки.
Ну раз так, давай-те рассмотрим ваш код
На каждом тике срабатывает доступ к глоб.переменным, за один раз аж 4 запроса
Из этого следует, что на личной машине использовать такой код НЕЛЬЗЯ, можно где-то на чужой, на которой не жалко жёсткого диска.
В цикле при переборе за один цикл нужно 3 раза вызвать ArraySize, а их там две, это лишняя нагрузка на процессор, так тоже делать нежелательно, производительность кода падает.
В ДеИните удаление объектов происходит странным образом, тут ничего страшного нет, но плохой пример для начинающих, если сделать нормально, то при создании объектов ввести префикс и по нему удалять без лишних пересчётов.
Я за ваш код ставлю 2 балла.
За работу индикатора - не знаю, не запускал.
Объективно?
Ну раз так, давай-те рассмотрим ваш код
На каждом тике срабатывает доступ к глоб.переменным, за один раз аж 4 запроса
Из этого следует, что на личной машине использовать такой код НЕЛЬЗЯ, можно где-то на чужой, на которой не жалко жёсткого диска.
В цикле при переборе за один цикл нужно 3 раза вызвать ArraySize, а их там две, это лишняя нагрузка на процессор, так тоже делать нежелательно, производительность кода падает.
В ДеИните удаление объектов происходит странным образом, тут ничего страшного нет, но плохой пример для начинающих, если сделать нормально, то при создании объектов ввести префикс и по нему удалять без лишних пересчётов.
Я за ваш код ставлю 2 балла.
За работу индикатора - не знаю, не запускал.
Объективно?
1. На каждом тике есть обращение к ГП именно для того, чтобы на каждом тике, а также при каждой переинициализации (например, переходах по ТФам) не выполнялся весь основной и более тяжёлый код в OnCalculate() и работа индикатора происходила быстрее. Обсчёт новых данных — только с появлением нового младшего бара D1, что намного реже, чем на каждом тике.
2. Над кодом я работал вдумчиво и основательно, однако оставил некоторые непроверенные избыточные операции сравнения в if(), потому что точно знаю, что производительность от этого не пострадает.
3. Про НЕЛЬЗЯ — сильно преувеличено. Можете скачать и убедиться лично: индикатор летает.
4. Не знал, что ГП скидываются на ЖД, а потом оттуда же читаются каждый раз при обращении к ним в пределах запущенной сессии MT5. Мне до сих пор думается, что с ЖД они однократно считываются в ОЗУ при запуске терминала и живут уже там, а индикатор обращается за ними в ОЗУ, а не к ЖД.
5. Не считаю, что ArraySize() — дорогая функция. А если и дорогая, то в конкретно данном коде этого заметно не будет. Оптимизацию на этот счёт я бы, возможно, провёл в первом своём индикаторе, где эта функция встречается часто, а сам индикатор гораздо более сложный и ресурсоёмкий.
6. В OnDeinit() я использую:
где как раз и есть удаление по префиксу " l" (при создании объектов использовались имена " label" и " line".
7. Вы сейчас сделали то, что должен сделать пользователь, скачавший и разобравшийся в коде. Вы нашли недочёты — это тоже часть обучения MQL.
8. Итого: 1.) мой главный аргумент дозволенности неидеального кода именно этого индикатора — простота, компактность да и без того скорость... плюс идеальная работа задуманного; 2.) мой второй главный аргумент неидеального кода — отсутствие даже плохих аналогов по части скорости и универсальности (см. обсуждение чужого оригинала) и наличие улучшений по сравнению с оригиналом, который, кстати говоря, узконаправлен и не свёрнут в компактные циклы по части большого числа однотипно повторяющихся блоков.
9. Несмотря на п. 7., разобрались Вы в чужом коде не особо. Ваша оценка в 2 балла слишком занижена. Я бы пока не рекомендовал Вам оценивать программные продукты по коду. Про объективность ничего не скажу, ибо просто потому, что от какого-либо одного пользователя невозможно ждать объективности в принципе. Объективная оценка (рейтинг) возможна только в виде суммы оценок нескольких вменяемых пользователей и уж никак не обязана быть непременно высокой.
1. На каждом тике есть обращение к ГП именно для того, чтобы на каждом тике, а также при каждой переинициализации (например, переходах по ТФам) не выполнялся весь основной и более тяжёлый код в OnCalculate() и работа индикатора происходила быстрее. Обсчёт новых данных — только с появлением нового младшего бара D1, что намного реже, чем на каждом тике.
2. Над кодом я работал вдумчиво и основательно, однако оставил некоторые непроверенные избыточные операции сравнения в if(), потому что точно знаю, что производительность от этого не пострадает.
3. Про НЕЛЬЗЯ — сильно преувеличено. Можете скачать и убедиться лично, что индикатор летает.
4. Не знал, что ГП скидываются на ЖД, а потом оттуда же читаются каждый раз при обращении к ним в пределах запущенной сессии MT5. Мне до сих пор думается, что с ЖД они однократно считываются в ОЗУ при запуске терминала и живут уже там, а индикатор обращается за ними в ОЗУ, а не к ЖД.
5. Не считаю, что ArraySize() — дорогая функция. А если и дорогая, то в конкретно данном коде этого заметно не будет. Оптимизацию на этот счёт я бы, возможно, провёл в первом своём индикаторе, где эта функция встречается часто, а сам индикатор гораздо более сложный и ресурсоёмкий.
6. В OnDeinit() я использую:
где как раз и есть удаление по префиксу " l" (при создании объектов использовались имена " label" и " line".
7. Вы сейчас сделали то, что должен сделать пользователь, скачавший и разобравшийся в коде. Вы нашли недочёты — это тоже часть обучения MQL.
8. Итого: 1.) мой главный аргумент дозволенности неидеального кода именно этого индикатора — простота, компактность да и без того скорость... плюс идеальная работа задуманного; 2.) мой второй главный аргумент неидеального кода — отсутствие аналогов по части скорости и универсальности (см. обсуждение чужого оригинала) и наличие улучшений по сравнению с оригиналом, который, кстати говоря, узконаправлен и не свёрнут в компактные циклы по части большого числа однотипно повторяющихся блоков.
9. Несмотря на п. 7., разобрались Вы в чужом коде не особо. Ваша оценка в 2 балла слишком занижена. Я бы пока не рекомендовал Вам оценивать программные продукты по коду. Про объективность ничего не скажу, ибо просто потому, что от какого-либо одного пользователя невозможно ждать объективности в принципе. Объективная оценка (рейтинг) возможна только в виде суммы оценок нескольких вменяемых пользователей и уж никак не обязана быть непременно высокой.
Удаление по префиксу, это так: ObjectsDeleteAll(0,"pref_"); // "pref_label" и " pref_line"
Добавьте хотя if первой строкой в OnCalculate, чтобы обращение было на новом баре, а не на каждом тике, как сейчас
Удаление по префиксу, это так: ObjectsDeleteAll(0,"pref_"); // "pref_label" и " pref_line"
Добавьте хотя if первой строкой в OnCalculate, чтобы обращение было на новом баре, а не на каждом тике, как сейчас
Кстати сказать, по поводу п. 7.: ошибки я встречал даже в Документации к MQL5, которые не исправляются уже много лет.
Удаление по префиксу, это так: ObjectsDeleteAll(0,"pref_"); // "pref_label" и " pref_line"
Удалять так, как предлагаете, нет разумной возможности, так как начало префикса динамическое: либо {D1}, либо {W1}, либо {MN1}, а уж потом идёт неизменяемый префикс в виде " l...". Можно поменять местами динамический и статический префиксы и спокойно удалять по Вашему варианту, но это неразумно, поскольку неудобно воспринимать информацию как "R1 {D1}", а удобнее "{D1} R1". Всё это я давно продумал и сделал именно как сделал.