Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1124

 
Alexey Viktorov:
Так любой устанавливает стоп по цене. Только пункты умножают на _Point и плюсуют к текущей цене. Но никто не запрещает указать конкретную цену.
Нужно чтобы он для всех открытых ордеров выставлял стоп по заданной цене. К примеру открывается три ордера а в советнике заранее прописан стоп допустим 1,32511... Вот такой надо) 
 
Anton Govorukhin:
Нужно чтобы он для всех открытых ордеров выставлял стоп по заданной цене. К примеру открывается три ордера а в советнике заранее прописан стоп допустим 1,32511... Вот такой надо) 
Берите любой советник с кодобазы, который использунт стопы в работе и код переделайте часть, где задают стоп. Это на 15 минут неспешной работы.
 

Приветствую мужики! Объясните мне логику работы сервера->терминала->советника. У меня это вопрос возник из за прописания в советник функции обработки ошибок. Насколько я понял по учебнику, ТИК это: СЕРВЕР ---> передаёт котировки цен ---> ТЕРМИНАЛ ---> даёт управление советнику ---> СОВЕТНИК (обработал тик-цикл) ---> в обратном направлении короч пошёл.

ВОПРОС: В самом начале когда сервер передаёт котировки, только котировки??? или в этом ТИКЕ есть сразу данные об различных ошибках на сервере (если конечно вдруг случается) ?

 

Тяжело программировать непонимая логики 

 
Evgeniy Oshurkevich:

Приветствую мужики! Объясните мне логику работы сервера->терминала->советника. У меня это вопрос возник из за прописания в советник функции обработки ошибок. Насколько я понял по учебнику, ТИК это: СЕРВЕР ---> передаёт котировки цен ---> ТЕРМИНАЛ ---> даёт управление советнику ---> СОВЕТНИК (обработал тик-цикл) ---> в обратном направлении короч пошёл.

ВОПРОС: В самом начале когда сервер передаёт котировки, только котировки??? или в этом ТИКЕ есть сразу данные об различных ошибках на сервере (если конечно вдруг случается) ?

 

Тяжело программировать непонимая логики 

Ошибки приходят независимо от тиков.
 
Vitalie Postolache:
Ошибки приходят независимо от тиков.

Я тогда не понимаю. Функции обработки ошибок нужны только для торговых случаев, я правильно понял? Это перед открытием ордера или перед модифицированием ордера. Так? Т.е. Перед тем как открыть ордер, я должен вначале убедиться что сейчас ошибок нет на серваке, если нет ошибок, то смело открываю ордер? 

Мужики, я советники создавал без прописании этих функции, меня брокер постоянно посылал куда подальше, скорее всего из за куча запросов и упрямства моего советника. И из за этого моему советнику больше не давали торговать. Кому не лень, объясните мне по русски, в учебнике пишут, да, что обязательно надо, а что и как, подробностей нет.

Если ошибки приходят независимо от ошибок, то тогда GetLastError() сам запрашивает у сервера есть ли ошибки? 

 
Evgeniy Oshurkevich:

Я тогда не понимаю. Функции обработки ошибок нужны только для торговых случаев, я правильно понял? Это перед открытием ордера или перед модифицированием ордера. Так? Т.е. Перед тем как открыть ордер, я должен вначале убедиться что сейчас ошибок нет на серваке, если нет ошибок, то смело открываю ордер? 

Мужики, я советники создавал без прописании этих функции, меня брокер постоянно посылал куда подальше, скорее всего из за куча запросов и упрямства моего советника. И из за этого моему советнику больше не давали торговать. Кому не лень, объясните мне по русски, в учебнике пишут, да, что обязательно надо, а что и как, подробностей нет.

Если ошибки приходят независимо от ошибок, то тогда GetLastError() сам запрашивает у сервера есть ли ошибки? 

Ну нету на сервере ошибок по клиентской части, никак, никогда, нигде, вообще нету, поймите это для начала.

Сервер возвращает цифровой код в ответ на торговый приказ клиента, только и всего. Код 0 - всё пучком, команда прошла без проблем. Код больше нуля - есть проблемы, терминал в журнал записывает код ошибки и расшифровку. 

В советнике не просто нужно учитывать обработку кода возврата сервера, программист обязан учитывать ошибки до отсылки команды на сервер и предотвращать отсылку неправильных значений в торговых приказах, которые приведут к ошибкам. Тогда торговлю советниками не забанят. А иначе - получите  распишитесь.

Пример: На счёте не хватает  средств на покупку 1 лота евордоллара, советник этого не учитывает и бомбит сервер приказами купить этот 1 лот каждый тик. Естественно сервер такой счёт в лучшем случае поставит на ручной режим.

Если советник сначала проверит маржу, нелбходимую на покупку 1 лота, потом сравнит это значение и свободние средства на счёте, увидит, что средств не хватит и торговать не станет, а вместо этого предупредит трейдера, то всё в порядке, это пример хорошего поведения.

И так надо учитывать все возможные варианты ошибок, где можно - исправлять значение, где нельзя - просто блокировать торговлю и выдавать трейдеру предупреждение о неполадках.

 
Evgeniy Oshurkevich:

Я тогда не понимаю. Функции обработки ошибок нужны только для торговых случаев, я правильно понял? Это перед открытием ордера или перед модифицированием ордера. Так? Т.е. Перед тем как открыть ордер, я должен вначале убедиться что сейчас ошибок нет на серваке, если нет ошибок, то смело открываю ордер? 

Мужики, я советники создавал без прописании этих функции, меня брокер постоянно посылал куда подальше, скорее всего из за куча запросов и упрямства моего советника. И из за этого моему советнику больше не давали торговать. Кому не лень, объясните мне по русски, в учебнике пишут, да, что обязательно надо, а что и как, подробностей нет.

Если ошибки приходят независимо от ошибок, то тогда GetLastError() сам запрашивает у сервера есть ли ошибки? 

Принцип: собираетесь совершить торговую операцию, логически нужно понимать "хватит-ли денег на сделку?" делаем проверку на достаточность средств. Следующий шаг: "А правильный-ли уровень у ордеров, позволяет дистанция или нет?" - проверка. Это проверка на вашей стороне чтоб не трогать сервер.

Далее: проверки пройдены и прошли успешно - отправляем приказ на сервер и ждём ответ, функция GetLastError() принимает ответ от сервера, если нет ошибок "0", если есть ошибки, то возвращает код ошибки, соответственно и возвращает ваш приказ на доработку. Дальше задача состоит в том, чтоб обработать полученную ошибку и принять решение, бомбить сервер повторно, или всё-же успокоиться. Коды ошибок есть в справке.

PS. пока писал, уже ответили) 

 
Vitalie Postolache и Vitaly Muzichenko Большое Вам человеческое СПАСИБО!!! )) Представляете, до меня дошло наконец таки)) 
 
Evgeniy Oshurkevich:
Vitalie Postolache и Vitaly Muzichenko Большое Вам человеческое СПАСИБО!!! )) Представляете, до меня дошло наконец таки)) 
Прекрасно) Тогда допишу. Представьте ситуацию: ваш ДЦ котирует в пятницу до 23-59, но торговые запросы обрабатывает только до 23-50, у вас стоит советник и у него там где-то пересеклись стохастики и он начинает отправлять запрос на сервер и получает ошибку "Рынок закрыт", но тики то идут и он снова отправляет приказ на каждом тике, проверки то нет. Как думаете, понравиться это серверу? Такие вещи так-же желательно учитывать.
 
Vitaly Muzichenko:
Прекрасно) Тогда допишу. Представьте ситуацию: ваш ДЦ котирует в пятницу до 23-59, но торговые запросы обрабатывает только до 23-50, у вас стоит советник и у него там где-то пересеклись стохастики и он начинает отправлять запрос на сервер и получает ошибку "Рынок закрыт", но тики то идут и он снова отправляет приказ на каждом тике, проверки то нет. Как думаете, понравиться это серверу? Такие вещи так-же желательно учитывать.
Да я уже понял, и на этом спасибо, перед любым торговым приказом уже прописал везде функцию обработки ошибок, я вот пока зациклился как теперь тормозить советник, если будут ошибки именно из за моей ошибки, и где именно прописать. Т.е. пытался открыть ордер, но произошла ошибка, как её получить? К примеру OrderSend(....); совершил операцию, как получить инфо удачно ли сработал?
Причина обращения: