[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 376

 
Integer:

Да. Но только если этот первы ордер рыночный. Если отложенный, то ничего не будет.
Да, точно. - Важное уточнение. Не доглядел.
 
Chiripaha:

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

У меня эти "опыты" получились случайно. Я писал программы тоже для параллельной работы - сейчас я ушел от этого способа, т.к. у меня это эффективности не увеличило (может в других проектах реализуется). В итоге получалась такая штука, что пока первая программа не будет обработана - не получатся данные то вторая не запускалась (или точнее, ругалась). И последовательность эта зависела от того, на какое окно я поставил (т.е. в каком порядке) блоки советников. - Отсюда вывод - Раз последовательность окон важна, значит, советники обрабатываются последовательно, а не параллельно. И последовательность эта зависит от нумерации окон в списке терминала.

В этом вся сущность полученного опыта была.

Но, опять же, возможно, это неправильная интерпретация полученных мной результатов. Поэтому и настойчиво пытаюсь разрешить теперь уже и этот вопрос, а не только с "слипом" связанный.

Я имел ввиду on-line работу советников. А Вы говорите о тестировании. Это про тестер? А как в тестере могут одновременно работать несколько советников???
 
TarasBY:
Я имел ввиду on-line работу советников. А Вы говорите о тестировании. Это про тестер? А как в тестере могут одновременно работать несколько советников???

Нет - это я некорректно (с потерей последовательности) выразился. - Под тестированием я имел ввиду не тестер - а тестировщиков программ на этапе отладки и выявления особенностей их работы. В данном случае из-за нехватки документированной информации я выявлял особенности работы мт4. (приходится к этому периодически прибегать)

Конечно, я тоже сейчас говорю о работе советников в онлайне.

 
Chiripaha:

Нет - это я некорректно (с потерей последовательности) выразился. - Под тестированием я имел ввиду не тестер - а тестировщиков программ на этапе отладки и выявления особенностей их работы. В данном случае из-за нехватки документированной информации я выявлял особенности работы мт4. (приходится к этому периодически прибегать)

Конечно, я тоже сейчас говорю о работе советников в онлайне.

Если разработчик заявляет о возможности терминала одновременно отдавать серверу несколько торговых приказов, то как это осуществить, осуществляя работу последовательно?
 

Спасибо всем ответившим. Попробую изменить код, чтоб советник не завершал работу пока OrdersTotal не покажет наличие открытого ордера. Тогда 2-ой уж точно увидит, что ордер есть. Надеюсь.

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

 
Arles:

Спасибо всем ответившим. Попробую изменить код, чтоб советник не завершал работу пока OrdersTotal не покажет наличие открытого ордера. Тогда 2-ой уж точно увидит, что ордер есть. Надеюсь.

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

Print() не может служить основанием для таких заключений. Вы видели исходники данной функции? Чтобы быть уверенным - каким моментом принт выводит время? Вывод в файл точно осуществляется последовательно, и принт может записывать время именно на момент вывода в файл, а не на момент совершения события, которое он описывает.
 
TarasBY:
Если разработчик заявляет о возможности терминала одновременно отдавать серверу несколько торговых приказов, то как это осуществить, осуществляя работу последовательно?

Мне сложно что-то сказать на это. Я вообще себе слабо представляю как с этими разработчиками можно напрямую общаться, чтобы понять, что они заявляют.

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

Дело в том, что такая позиция (с последовательной работой), на мой взгляд, довольно естественная и правильная. Именно поэтому я раньше даже как-то и не уточнял этот вопрос. Правильная от того, что иначе могут возникать недочеты при финансовом учете позиций. Но, правда, это можно отсекать на уровне сервера - он будет проверять - правильно там что-то или нет. Но, даже в этом случае, при работе советников и терминала возникало бы слишком много лишних и ошибочных команд, которые забивали бы своим лишним "мусором" торговый поток. И т.п.

 
Chiripaha:

Мне сложно что-то сказать на это. Я вообще себе слабо представляю как с этими разработчиками можно напрямую общаться, чтобы понять, что они заявляют.

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

Дело в том, что такая позиция (с последовательной работой), на мой взгляд, довольно естественная и правильная. Именно поэтому я раньше даже как-то и не уточнял этот вопрос. Правильная от того, что иначе могут возникать недочеты при финансовом учете позиций. Но, правда, это можно отсекать на уровне сервера - он будет проверять - правильно там что-то или нет. Но, даже в этом случае, при работе советников и терминала возникало бы слишком много лишних и ошибочных команд, которые забивали бы своим лишним "мусором" торговый поток. И т.п.

Почитайте - при последовательной обработке такой "огород не нужно было бы городить". (И не забывайте - Любая статья модерируется разработчиками.)

P.S. Я тоже привык опираться на собственный опыт и логику, а не на чужие слова. :)

 
TarasBY:

Почитайте - при последовательной обработке такой "огород не нужно было бы городить". (И не забывайте - Любая статья модерируется разработчиками.)

P.S. Я тоже привык опираться на собственный опыт и логику, а не на чужие слова. :)

Вы только учтите, что я не утверждаю. А как раз, наоборот, спрашиваю - так ли это или нет? : )) И привожу в качестве аргументов то, что получал на практике.

И вопрос со "слипом" пока для меня так и остался не подтвержденным. Т.е. открытым. : ))

Я догадываюсь про модерацию. - Но опять же - предполагать, не значит констатировать. Если это и так, то искренне надеюсь получить Официальный комментарий на предмет Sleep. А то на форуме рассуждений на подобие моих предположений много, а официальные сложно найти (кроме справочника, разумеется - но именно в нем на эту тему скудная и не понятная информация. Иначе, не было бы столько разговоров тут.) А заодно пусть и уточнят на счет последовательности и параллельности. - Мне было бы тоже полезным это понимать.

 
Chiripaha:

Мне сложно что-то сказать на это. Я вообще себе слабо представляю как с этими разработчиками можно напрямую общаться, чтобы понять, что они заявляют.

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

Дело в том, что такая позиция (с последовательной работой), на мой взгляд, довольно естественная и правильная. Именно поэтому я раньше даже как-то и не уточнял этот вопрос. Правильная от того, что иначе могут возникать недочеты при финансовом учете позиций. Но, правда, это можно отсекать на уровне сервера - он будет проверять - правильно там что-то или нет. Но, даже в этом случае, при работе советников и терминала возникало бы слишком много лишних и ошибочных команд, которые забивали бы своим лишним "мусором" торговый поток. И т.п.

Все скрипты и советники работают каждый в своём потоке. Торговые приказы от них собираются в отдельную очередь. Затем, распределяются по свободным торговым потокам. Количество свободных торговых потоков может быть равно 8.

Print() выводит то, что есть для вывода на момент вывода. Определить наличие многопоточности можно через лог. Сделайте вывод в самом начале функции start() и в самом конце. Между ними поставте задержку. Запустите несколько экспертов на разных инструментах. Посмотрите в лог. Увидите, что между выводами одного эксперта будут выводы от других экспертов.

void start()
 {
  Print(Symbol(), " Start");
  Sleep(3000);
  Print(Symbol(), " End");
 }
Причина обращения: