Uninit reason 5 что значит
Ещё примеры использования функции SetOrder().
Для наглядности нужно выбрать инструмент с большим минимально допустимым уровнем стоп-лосса/тейк-профита в пунктах. Я выбрал AUDCAD, у которого этот уровень в выбранном мной для тестирования ДЦ равен 10 пунктам.
1. Установка ордера BuyLimit лотом 0.1 на 5 пунктов ниже текущей цены. Я специально выбрал уровень установки ордера меньше минимально допустимого уровня, чтобы получить ошибку 130 (Неправильные стопы) и показать, как функция SetOrder её отработает.
Содержимое протокола (читается снизу вверх):
2008.03.17 09:06:24 test_SetOrder AUDCAD,M5: removed
2008.03.17 09:06:24 stdlib AUDCAD,M5: removed
2008.03.17 09:06:24 stdlib AUDCAD,M5: uninit reason 0
2008.03.17 09:06:24 test_SetOrder AUDCAD,M5: uninit reason 0
2008.03.17 09:06:24 test_SetOrder AUDCAD,M5: open #21616412 buy limit 0.10 AUDCAD at 0.9180 ok
2008.03.17 09:06:15 test_SetOrder AUDCAD,M5: SetOrder(): Скорректированы ценовые уровни
2008.03.17 09:06:15 test_SetOrder AUDCAD,M5: Ask=0.919 Bid=0.918 sy=AUDCAD ll=0.1 op=Buy Limit pp=0.9185 sl=0 tp=0 mn=0
2008.03.17 09:06:15 test_SetOrder AUDCAD,M5: Error(130) set order: invalid stops, try 1
2008.03.17 09:06:15 stdlib AUDCAD,M5: loaded successfully
2008.03.17 09:06:14 test_SetOrder AUDCAD,M5: loaded successfully
Из протокола видно, что функция попыталась поставить ордер по 0,9185 (pp=0.9185), но торговый сервер не принял такую заявку, вернул ошибку 130. Тогда функция корректирует уровень установки ордера в соответствии с минимально допустимым уровнем и предпринимает следующую торговую попытку, которая заканчивается удачно. Ордер установлен по 0,9180.
2. Установка ордера BuyStop лотом 0.3 на 6 пунктов выше текущей цены со стопом 9 пунктов
Содержимое протокола (читается снизу вверх):
2008.03.17 09:27:36 test_SetOrder AUDCAD,M5: removed
2008.03.17 09:27:36 stdlib AUDCAD,M5: removed
2008.03.17 09:27:36 stdlib AUDCAD,M5: uninit reason 0
2008.03.17 09:27:36 test_SetOrder AUDCAD,M5: uninit reason 0
2008.03.17 09:27:36 test_SetOrder AUDCAD,M5: open #21617419 buy stop 0.30 AUDCAD at 0.9209 sl: 0.9195 ok
2008.03.17 09:27:26 test_SetOrder AUDCAD,M5: SetOrder(): Скорректированы ценовые уровни
2008.03.17 09:27:26 test_SetOrder AUDCAD,M5: Ask=0.9198 Bid=0.9188 sy=AUDCAD ll=0.3 op=Buy Stop pp=0.9204 sl=0.9195 tp=0 mn=0
2008.03.17 09:27:26 test_SetOrder AUDCAD,M5: Error(130) set order: invalid stops, try 1
2008.03.17 09:27:26 stdlib AUDCAD,M5: loaded successfully
2008.03.17 09:27:25 test_SetOrder AUDCAD,M5: loaded successfully
Этот пример показывает, как произошло изменение уровня установки ордера с 0,9204 на 0,9209. При этом уровень стопа остался прежним sl=0.9195. То есть стоп в пунктах увеличился с 9 до 14.
3. Установка ордера SellLimit лотом 0.5 на 8 пунктов выше текущей цены со стопом 9 пунктов и тейком 7 пунктов
Содержимое протокола:
2008.03.17 10:38:50 test_SetOrder AUDCAD,M5: removed
2008.03.17 10:38:50 stdlib AUDCAD,M5: removed
2008.03.17 10:38:50 stdlib AUDCAD,M5: uninit reason 0
2008.03.17 10:38:50 test_SetOrder AUDCAD,M5: uninit reason 0
2008.03.17 10:38:49 test_SetOrder AUDCAD,M5: open #21620553 sell limit 0.50 AUDCAD at 0.9190 sl: 0.9201 tp: 0.9179 ok
2008.03.17 10:38:40 test_SetOrder AUDCAD,M5: SetOrder(): Скорректированы ценовые уровни
2008.03.17 10:38:40 test_SetOrder AUDCAD,M5: Ask=0.919 Bid=0.918 sy=AUDCAD ll=0.5 op=Sell Limit pp=0.9188 sl=0.9197 tp=0.9179 mn=0
2008.03.17 10:38:40 test_SetOrder AUDCAD,M5: Error(130) set order: invalid stops, try 1
2008.03.17 10:38:40 stdlib AUDCAD,M5: loaded successfully
2008.03.17 10:38:39 test_SetOrder AUDCAD,M5: loaded successfully
В этом примере снова сделана попытка установить лимитный ордер слишком близко к рынку. Уровень установки ордера скорректирован вверх на 2 пункта с 0.9188 до 0.9190. Уровень стопа также подправлен, но на 4 пункта с 0.9197 до 0.9201. Неизменным остался только уровень тейка, что привело к его увеличению в пунктах с 9 до 11.
переменная знаешь что такое? это ячейка в памяти, с возможностью изменения. int это тип переменной
Для тестирования торговой системы в МТ4 на исторических данных, необходимо загрузить архив котировок, выбираю интересующую валютную пару, выбираю все таймфрэймы в т.ч. и минутный, загружаю. При тестировании никаких рассогласований графика не возникает, но есть проблема, существенно влияющая на результаты тестирования и оптимизации. В котировках часто встречаются разрывы по времени, к примеру на графике H1, после свечки 7 мая 2010г, идет сразу свечка относящаяся к 8 июля 2010г. т.е. разрыв в 1 месяц. и такие разрывы встречаются регулярно. Повторное скачивание архива котировок ситуацию не исправляет. Места на жестком диске для скачивания котировок более чем достаточно.
Вопрос: как корректно закачать все котировки без временных разрывов в МТ4?
Подскажите, что значит такая вот хрень в логах? Как можно этого избежать? Эксперт торгует с помощью этого индюка, после ошибки торговля замирает пока не перезагрузишь терминал так как при перезагрузке эксперта может снова вылететь.
22:39:53 Zigzag CLJ1,M5: removed
Может это из-за того, что я пользуюсь терминалом на удаленном серваке и у себя на компе одновременно?
В каких случаях код причины деинициализации = 6 (=REASON_ACCOUNT)?
В описании языка говорится, что этот код выводится, когда активирован другой счет.
Если в одном терминале заведены несколько счетов от разных ДЦ,
то при переключении между этими счетами должен выводиться этот код или нет?
Переключаю счета. Код не выводится. Что понимается под словосочетанием Активирован другой счет?
Так В каких случаях код причины деинициализации = 6 (=REASON_ACCOUNT)?
Метатрейдер билд 215.
Необходимо обратить внимание на очерёдность поступления информации. С момента переключения счёта сначала обновляются переменные окружения, а (как бы) потом происходит собственно соединение со счётом. В индикаторе и обычном эксперте, возможно, это и не видно. Я использую зацикленный эксперт, здесь эта проблема добавляет хлопот.
В описании языка говорится, что этот код выводится, когда активирован другой счет.
Если в одном терминале заведены несколько счетов от разных ДЦ,
то при переключении между этими счетами должен выводиться этот код или нет?
Переключаю счета. Код не выводится. Что понимается под словосочетанием Активирован другой счет?
Так В каких случаях код причины деинициализации = 6 (=REASON_ACCOUNT)?
Метатрейдер билд 215.
Я смотрю на вкладке Эксперты. Там эти коды выводятся:
А вот код 6 ни разу не видел, чтобы выводился.
эта конструкция не работает. При смене таймфрейма работает. При смене счета не работает.
Я смотрю на вкладке Эксперты. Там эти коды выводятся:
А вот код 6 ни разу не видел, чтобы выводился.
эта конструкция не работает. При смене таймфрейма работает. При смене счета не работает.
Попробуйте исполнить Ваш код сразу после включения терминала на счетах надёжных ДЦ.
Эта ошибка теряющаяся. Нужно немного поэкспериментировать.
Rosh, с твоим примером понятно. Попробую так сделать. О результатах напишу.
Rosh, с твоим примером понятно. Попробую так сделать. О результатах напишу.
Я так понял, что функция RefreshAccountInfo() в программе Specification.mq4 подменяет работу функции UninitializeReason() в случае, когда происходит смена счета.
То есть это говорит о том, что в функции UninitializeReason() значение 6 не работает или работает неправильно.
С помощью функций, подобных RefreshAccountInfo(), латаются ошибки языка mql4.
В таком случае из описания:
Возвращает код причины завершения экспертов, пользовательских индикаторов и скриптов. Возвращаемые значения могут быть одним из кодов деинициализации. Эту функцию можно также вызывать в функции init() для анализа причин деинициализации предыдущего запуска. необходмо убрать соответствующую строчку. И описание должно быть таким:
|