Вопросы по MQL4 - страница 9

 
Правильно ли полагать, что:
1. Взаимное закрытие ордеров происходит автоматически без вмешательства маркет-мейкера?
2. Модификация открытых ордеров ( в случае соблюдения принятых дистанций ) происходит автоматически без вмешательства маркет-мейкера?
3. Удаление и модификация отложенных ордеров ( в случае соблюдения принятых дистанций ) происходит автоматически без вмешательства маркет-мейкера?
 
Правильно ли полагать, что:
1. Взаимное закрытие ордеров происходит автоматически без вмешательства маркет-мейкера?
2. Модификация открытых ордеров ( в случае соблюдения принятых дистанций ) происходит автоматически без вмешательства маркет-мейкера?
3. Удаление и модификация отложенных ордеров ( в случае соблюдения принятых дистанций ) происходит автоматически без вмешательства маркет-мейкера?

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

Следует ли считать, что то же касается автоматической подтяжки ТрейлингСтоп?
Существуют ли вообще различия для маркет-мейкера по источникам формирования упраляющего воздействия (советник или МТ)?
 
да. так как брокер не знает, кто двигает стопы - трейдер вручную, эксперты (или скрипты) или клиентский терминал с механизмом трейлинг-стопов.
 
1) а почему после перекомпиляции индикатор получает Bars==0 в init()?

2) относительно медленно работает обращение к элементам массива. это можно ускорить только громоздкими конструкциями или ещё как-то?
   static int know;   static double caa,cbb,ccc,cdd,cee,cff, cgg;
   if(b-know!=0){
      if (b-know==1){ 
         caa=cbb;  cbb=ccc; ccc=cdd; cdd=cee; cee=cff; cff=cgg; cgg=Close[b+6];/*vzad po istorii*/
      }else 
         if (b-know==-1){
            cgg=cff; cff=cee; cee=cdd; cdd=ccc; ccc=cbb; cbb=caa; caa=Close[b]; /*vperjod*/
         }else{ 
            caa=Close[b];  cbb=Close[b+1]; ccc=Close[b+2]; cdd=Close[b+3]; cee=Close[b+4]; cff=Close[b+5];cgg=Close[b+6];}  know=b;
         }
 
Slawa,
ещё раз спасибо. Более, чем понятно.

Myxu,
попробуй использовать ArrayCopy();
 
Slawa, Вы часто помогаете мне определиться с важными деталями поэтому позволю себе обратиться к Вам лично.
Если в одном окне работают одновременно советник и скрипт, в случае, если они приблизительно в одно время подают на сервер приказы о модификации:
- советник модифициует Бай в момент t_о, Sovet=OrderModify(..)
- скрипт модифициует БайЛимит в момент t_o +1ms, Script=OrderModify(..)
Дальнейшие события:
-сервер возвращает ИСТИНА по факту успешного исполнения модификации (мне не известно какого) ордера,
(какая из переменных обретёт значение ИСТИНА - Sovet или Script ?)
а через 1 мс..
-сервер возвращает ЛОЖЬ по факту успешного исполнения модификации (мне не известно какого) ордера

Вопрос.
1. Правильно ли считать, что запросы на сервер сконтруированы таким образом, что являются именованными и поставленные им в соответствие ответы сервера не перепутаются, а каждый из ответов попадёт на возвращение в свой OrderModify() ?
2. Если нет, то существует ли какой-нибудь штатный способ различать ответы сервера? (кроме практики создания очередного приказа после получения ответа на предыдущий)?

(у меня есть ещё несколько подобных вопросов; если не критично, то прошу ответить на форуме MQL4, вопрос там продублирован, и если можно, вести обсуждение там, поскольку там удобнее представлять коды)
 
цитата из нового словаря
===
Для проведения торговых операций из экспертов и скриптов предусмотрен всего один поток, который запускается в программном торговом контексте. Поэтому, если этот контекст занят торговой операцией какого-либо эксперта, то другой эксперт или скрипт не может в этот момент вызывать торговые функции из-за ошибки 146 (ERR_TRADE_CONTEXT_BUSY). Для определения возможности выполнять торговые операции необходимо использовать функцию IsTradeAllowed(). Для чёткого разделения доступа к торговому контексту можно использовать семафор на основе глобальной переменной, значение которой необходимо менять при помощи функции GlobalVariableSetOnCondition().
===
Вы не сможете одновременно торговать несколькими экспертами (или экспертом и скриптом). в ветке "ошибка № 6" приведён пример разруливания ситуации через семафор
 
Slawa,
спасибо за ответ. Очень важные сведения. Кое-что проясняется.

Но есть ещё вопросы.
Оказывает ли влияние то, что
Для проведения торговых операций из экспертов и скриптов предусмотрен всего один поток..

на исполнение ордеров в одном советнике или скрипте по след. схемам?:
а=OrderModify(..номер1);
в=OrderModify(..номер2);


OrderModify(..номер1);
OrderModify(..номер2);


Правильно ли считать, что:
- в первом примере OrderModify(..номер2) не начнёт исполняться до тех пор, пока не исполнится оператор присваивания а= после получения ответа сервера на OrderModify(..номер1)?
- во втором примере OrderModify(..номер2) начнёт исполняться немедленно, не дожидаясь ответа сервера на OrderModify(..номер1)?

 
в обоих случаях запуск функций будет последовательным. в отличие от тройки, сейчас все функции (имеются в виду прежде всего торговые функции) синхронны
Причина обращения: