Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Войди в его положение. Жизнь на чужбине, вдали от Родины не проходит бесследно. Появляется раздражительность, злость на себя, что когда то совершил непоправимую ошибку, став гастарбайтером.)
Я вот специально if(OrderSelect(i,SELECT_BY_POS)) выделил отдельным блоком. Чтобы возвращать при отладке значение ошибки. else {// пишем про ошибку выбора как душе угодно и возвращаем из неё, например EMPTY}.
А давайте придумайте ситуацию, когда при наличии в рынке выбираемого ордера произойдёт ошибка его выбора. Пообсуждаем. Я ещё ни разу не столкнулся.
А назовите хотя бы одну причину, когда правильно созданный цикл перебора ордеров может вернуть "false".
Ой, не заметил, что Артем уже спросил, упс. И все же.
А какая разница?
В общем случае может вернуть. Ну и что, что наблюдения при каких-то условиях или даже наборе разных условий показали, что не возвращает false?
Мы же не знаем деталей реализации этой функции, и никаких "предполаганий" по этому поводу документация не даёт. А вдруг при очередном наборе условий у очередного брокера функция вдруг начнёт возвращать false?
На заданный вопрос по поводу причины/ситуации все равно отвечу, потому что это легко: причиной может быть ошибка реализации этой функции, допущенная командой разработчиков при выходе очередной версии MT. Надеюсь, это достаточно вероятное событие, чтобы его всерьёз можно было учитывать?
Предположим, что из-за этой гипотетической ошибки, функция начала случайным образом, но, в среднем, только для каждого 5-го запроса, возвращать false.
Обычно заранее нельзя придумать то, чего не знаешь. Поэтому нет особого смысла спрашивать о том, из-за чего это могло бы быть. Когда случится, тогда и можно будет с легкостью объяснить, из-за чего.
Но незнание того, что могло бы случиться в будущем не мешает от этого защищаться. Может оказаться так, что какие-то верхнеуровневые алгоритмы из-за полученного ложного значения наломают немало дров. Они же не будут знать, что значение - ложное.
Если же будут знать, что значения нет, а если есть, то оно - истинное, то, при отсутствии собственных ошибок, дров не наломают. И поэтому информация о невозможности вычислить значение должна выдаваться не только в режиме отладки, но и в боевом.
есть ли возможность загружать внешние данные в индикатор ,скажем из текстового файла?
Например есть дневная цена и по ней нужно построить линию на любом графике, таймфреме?
DATE Price
04.12.2014 100.00
03.12.2014 101.12
02.12.2014 102.45
01.12.2014 103.23
28.11.2014 102.43
27.11.2014 101.90
Примеры использования функции OpenPosition().
1. Купить 0.1 лота текущего инструмента
2. Продать 0.2 лота EURUSD
3. Продать 0.12 лота USDCAD со стопом 20 пунктов
4. Купить 0.15 лота USDJPY с тейком 40 пунктов
5. Продать 0.1 лота GBPJPY со стопом 23 и тейком 44 пункта
В прицепе скрипт для тестирования функции OpenPosition(). Первые 4 примера закомментированы.я не знаю ответите вы мне или нет . я сижу и туплю не знаю как мой советник сделать мультивалютным!
А назовите хотя бы одну причину, когда правильно созданный цикл перебора ордеров может вернуть "false".
Ой, не заметил, что Артем уже спросил, упс. И все же.
Да легко!
После очередного обновления терминал перезагрузился и стал показывать ордера только за последний день. По истории ордеров не видно. Функция должна что-то вернуть - типа нет истории.
Брокер удалил некоторые ордера.
Дырка в оперативе. Память у вас посыпалась и функция берет мусорную ячейку памяти. При этом на мониторе могут появляться прострелы. А могут и не появляться. Могут быть и другие проблемы с железом.
терминал перезагрузился и "потерял" связь с сервером. Сидел когда то на НА Мт3 за прокси сервером. Инет был диалапный и жестко лимитрованный по времени и поскрости и качество инета было ужасное. Так вижу тики приходят, график двигается. При поппытке открыть ордер терминал писал типа "нет связи с сервером".
В МТ4 сталкивался с проблемой и до сих пор существует: Приходит тик и черный(пустой) экран чарта. Совтеник выдает ошибку деленеия на ноль и робот слетает. Дернешь график мышкой или приходит новый тик - все нормально. Поэтому при делении сначала делаю проверку на что будем делить и если не равно нулю то идем дальше!
Уважаемый KimIV, использую ваши функции закрытия всех позиций при достижении определённой прибыли и столкнулся с ситуацией , когда в процессе закрытия за счёт срабатывания отложенного ордера появляется ещё одна позиция, которая остаётся не закрытой. Сейчас я ввёл дополнительную проверку такой ситуации и повторный вызов вашей функции. Как вы считаете стоит ввести такую доработку внутри функции после окончания основного цикла закрытия?
Это функции ClosePosBySortLots() и ClosePositions();
Есть коды функции для удаления отложенных ордеров при чем есть для онлайна и для тестов на истории - https://forum.mql4.com/ru/38949#434195
можете пояснить, в чем разница между тестами и онлайном?