Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, эксперты, каково ваше мнение о данном решении?
Здравствуйте, эксперты, каково ваше мнение о данном решении?
Конечно. Это полное закрытие всего.
Иногда бывают ситуации (например, вы хотите немедленно закрыть слишком много открытых сделок), когда "оригинальная" версия не работает. Эта версия подходит для этого.
Конечно. Это полное закрытие всех сделок.
Иногда бывают ситуации (например, вы хотите немедленно закрыть слишком много открытых сделок), когда "оригинальная" версия не работает. Эта версия подходит для этого.
Здравствуйте,
У меня вопрос по поводу циклов while. Я хочу запускать текущего советника в цикле как можно чаще. Поэтому я решил поместить текущий код в цикл while с включенной в него функцией sleep, которая заставляет цикл while выполняться только каждые 1 миллисекунду.
Однако, когда я это сделал (у меня есть несколько вызовов функции Print("..."), которая отслеживает, что происходит в каждом цикле), я увидел, что код замирает и больше не выводится на экран.
Мне интересно, в чем может быть проблема. Можно ли запускать советника в цикле с частотой 1 мс? Не возникнет ли проблема, если пытаться, например, каждую миллисекунду получать с сервера последние данные о цене/аске? Не создаст ли это слишком большую нагрузку на сервер, что приведет к зависанию?
Возможно, это происходит из-за чего-то другого в моем алгоритме, но я не уверен.
Я запустил его на 200 мс циклах и все равно получил ту же проблему (хотя и не так быстро). Может ли быть проблема с печатью слишком большого количества строк в файл журнала?
Спасибо за любой совет по этому поводу.
с уважением,
C.
14967057:
У меня вопрос о циклах while. Я хочу запускать текущего советника в цикле как можно чаще.
Поэтому я думаю поместить текущий код в цикл while с включенной в него функцией sleep, которая заставляет while выполняться только каждые 1 миллисекунду.
Может ли возникнуть проблема при попытке получить последнюю цену покупки/продажи.
Может ли быть проблема с печатью слишком большого количества строк в файл журнала?
Здравствуйте,
Оказалось, что проблема, с которой я столкнулся, не связана с инкапсуляцией кода советника внутри цикла while с 1 мс sleep. Эта часть, кажется, в порядке (независимо от того, где я печатаю на экран или нет), так как у меня он работает уже последние полчаса без сбоев.
Проблема была связана с другим хитрым while в моем коде, который в конечном итоге привел к тому, что советник попал в ловушку бесконечного цикла.
Спасибо за ответы gooly и Roesder.
regards,
Привет всем. Прочитал эту тему и у меня возник вопрос. Я пытаюсь сделать код, который удаляет отложенный ордер (только STOP, без LIMIT), но только если был активирован другой отложенный ордер (стартовый OP_SELL или OP_BUY). Код получился такой (но есть ошибки, но я не знаю где). Не могли бы вы взглянуть на мой код?
OrdersTotal() не корректно...
Я был удивлен тем, что циклическая последовательность кода, использующая OrdersTotal(), не дает правильных результатов (наблюдал у двух разных брокеров).
Я использую MT4 версии 1090 на рабочем столе Linux Ubuntu-MATE 16.04, под управлением WINE 3.0.
Вот что я использовал...
for(int cc = 0; cc < OrdersTotal(); cc++)
{
if (!OrderSelect(cc, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol() ) continue;
if (OrderType() > 1) continue; //--игнорировать отложенные сделки
OpenTradecnt++; //--подсчитывается для каждой существующей живой позиции данного символа
Print("количество открытых сделок по этому символу: ", OpenTradecnt);
}
Я заметил у двух разных брокеров, что значение OrdersTotal() не всегда совпадает с тем, что отображается на вкладке "Торговля" брокера MT4. Сначала я подумал, что это брокер заставляет OrdersTotal() работать неправильно. Когда я заметил это у второго брокера, я начал задаваться вопросом, может ли MT4 иметь внутреннюю "проблему", или мой код был неправильным, или это проблема с MT4, правильно синхронизирующимся с сервером....?
Прочитав эту ветку форума, я задаюсь вопросом, изменит ли результаты изменение цикла for..loop на read:
for(int cc = OrdersTotal() - 1; cc >= 0; cc--)
{
...........
}
ИЛИ, существует ли флаг или строка кода, которая обеспечит правильную синхронизацию OrdersTotal() во время события OnTick()?
Любое разъяснение по этому поводу было бы очень полезным и будет высоко оценено!
Пожалуйста, используйте кнопку </>, чтобы вставить свой код.