Ошибки, баги, вопросы - страница 2451
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если речь о FX, то там тики не сильно меняет цену (обычно). Но на других рынках ордер может серьёзно проскользнуть при потиковом подходе. Я все-таки за попытки между тиками - вреда не вижу, потенциальная польза - есть.
Надо пробовать...
Результат:
Гистерезис в действии... на примере работы неявного оператора копирования в структурах.
Наверное, чтобы обнаружить такое, нужно было в поисках ошибки в своем коде дойти до внутреннего состояния/упорства "здесь ничего не может не работать, но все равно проверю".
Наверное, чтобы обнаружить такое, нужно было в поисках ошибки в своем коде дойти до внутреннего состояния/упорства "здесь ничего не может не работать, но все равно проверю".
Код парсил поток байтов под определенный протокол.
Не сходились размеры распакованных и не распакованных данных (данных для следующего уровня инкапсуляции).
Код парсил поток байтов под определенный протокол.
Не сходились размеры распакованных и не распакованных данных (данных для следующего уровня инкапсуляции).
Гистерезис в действии... на примере работы неявного оператора копирования в структурах.
А в чем вопрос?
в MQL условная запись
// a = b;
равносильна
ArrayCopy( a, b );
Результат:
ArrayPrint( a ); }
2 2 3
А в чем вопрос?
Оператор копирования присваивания, на мой взгляд, должен копировать не только сами элементы массива, но и их количество, оставив действительным количество зарезервированной памяти.
А сейчас происходит практически следующее:
Исходный код:
Оператор копирования должен копировать не только сами элементы массива, но и их количество, оставив действительным количество зарезервированной памяти.
А почему тогда
в (1) случае ошибка, а во (2) все нормально!? Какая разница?
А такая что копированиe массивов происходит не по правилам a = b, а по правилам ArrayCopy( a, b )
Не по правилам a = b, потому что его нету, если бы оно было, то ошибки (1) не было бы
Если считать на каждом тике - это ресурсоёмко, особенно заметно в тестере стратегий. Не правильнее ли пересчёт делать только при событии Trade, т.е. когда реально меняется что-то в перечне открытых позиций? С OnTradeTransaction() упрощается контроль за вмешательством пользователя в работу советника. (есть прецеденты :)
В данном роботе тестил возможность закрытия сеток по схеме: убыточная + прибыльная > Х , то закрыть обе (как правило, на разных символах). Но сбой получается, т.к. не смотря на то, что они закрыты, тестер не знает об этом, и переходит к следующей итерации, ошибочно "спаривая" существующие с уже закрытыми. Т.е. пришлось добавить пересчёт после каждого закрытия.
Пересчёт у меня со сбросом счётчика и сначала по всем отрытым, не +1 / -1
Согласен, рисковано было изначально использовать OnTradeTransaction() Вообще, наверное, откажусь от неё в случаях когда запросы не асинхронные - одни проблемы от неё.
Нисколько не рискованно. Вопрос только в организации последовательности действий и событий. Барабашка правильно дальше сказал, закрыл пару и вышел из цикла до следующего тика. На следующем тике не факт что цены будут хуже чем есть. Может и лучше будет закрыть чуть позже, зато не будет путаницы что с чем закрылось.
Второй вариант: цикл организовать не по PositionsTotal, а по массиву созданному заранее. И при закрытии какой-то пары эти тикеты удалять из массива. Это не даст попасть закрытым позициям повторно на закрытие. В общем полёт фантазии и логика действий.