[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 385
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Виктор, ты не прав. Благодаря этой, несколько затянутой дискуссии, два программиста попутно отвечали на вопросы новичков, что пошло ветке только на пользу :))
Ну, я с удовольствием почитал. И было очень показательным отношение продвинутых (не знаю как уже вас теперь называть программистами или нет - запутался совсем теперь : )) ) - скажем так - специалистов, решающих продвинутые задачи : )) и их взгляды на, казалось бы, простые на первый взгляд задачи. Искренне надеюсь, что это без эмоциональных последствий дискуссия и дружеская, не смотря на все разногласия. У меня, к сожалению, разногласия (неразрешенности) тоже остались. Но я как раз тут исповедую философский подход. Если решение задачи таким путем не очевидно, значит, нужно найти иной путь. Но знать о проблематике очень полезно.
Спасибо Вам большое за дискуссию. Жалко, что не пришли к консенсусу. (Но, консенсус пока не сложился... (вспоминается песня "Там, вдали, у метро"))
И жаль, конечно, что на мои с Арлесом вопросы, не было очевидных ответов. Думаю, эти вопросы не только у нас с ним, но и у многих менее опытных спецов, которым сложно выстраивать самостоятельно и потоки и в.т., и именно поэтому они обращаются к написанным продвинутыми специалистами программам и оболочкам.
Ну, ничего. Со временем и эти вопросы разрулим. : )) Спасибо Вам большое за Ваши старания. Ведь позитивный настрой, в итоге, у всех сторон (хотя и расходящийся по способам решения). И это радует.
Кстати, в своих педагогических изысканиях я часто говорю: не все вопросы могут быть разрешены, мы часто не знаем на все ответы; поэтому они могут пока... остаться открытыми. (я пытаюсь найти деликатную концовку обсуждения) Еще раз Спасибо!Сергей, какие вопросы были неразрешены? Если это:
Т.е. отвечая на вопрос Arles , если у меня один советник произвел учет ордеров и на время "вздремнул" то в этот момент другой советник не перешедший границ выделенных средств (предположим 80% от депозита - в обоих советниках такой размер будет) выставит ордер (войдет в сделку по рынку). И когда 1-ый возобновит работу (а терминал по управлению капиталом уже был посчитан накануне), то он тоже может открыть сделку уже превышающую выделенные лимиты советником?
Если эту сит-ию (гипотетически) размножить на несколько советников, то может возникнуть такая, где Риск-Менеджмент окажется в критической сит-ии?
Я правильно понимаю данную многопоточность? - Если так, то с финансовой точки зрения это, конечно, бардак. Но, т.к. вероятность такового невелика на маленьких счетах, то это лишь гипотетически. А на больших счетах, наверное будут сами писать что-то. Но, все-таки, получается что это так?
И у меня вопрос - это официальная позиция или это лишь предположение и опыты наподобие моих?То на 378 странице есть код. Вот ещё раз:
Там, где задержка "имитация работы" вставляете обращение к депозиту или к другому ресурсу.Этот блок синхронизации можно в функцию превратить и поместить в библиотеку. Будет у Вас синхронная функция обращения к депозиту из любого советника.
Вместо индекса подставить хендл окна графика
Точно! А то с индексами не сразу сообразишь, что к чему.
Переделал.
===================
Хотя, индексация позволит правильно удалить глобальную переменную.
Надо бы в деините сделать декремент индекса. И удалять глобальную переменную, когда индекс равен нулю.
Только такой декремент не позволит дозагрузить скрипт после удаления. Индексы перепутаются.
Надо делать глобальный массив индексов всех модулей, что обращаются к ресурсу. Ну, и работать с ним.
Ещё можно сделать две глобальные переменные. Одна с последним индексом, другая с текущим количеством модулей. Индексы только увеличиваются. Пожалуй, это проще будет.
Или совсем не заморачиваться с глобальное переменной. Вручную удалять перед первым запуском.
1) Задача : каждый скрипт (советник) должен знать о наличии всех остальных.
2) Проблема : если произойдет сбой, то глобалки от сбойного будут висеть неприкаянные и очередь запнется.
3) Решение :
Каждый эксп организует 1 глобалку с именем - общий префикс + хендл окна + символ. значение глобалки - время последнего тика по этому инструменту. 2 общую глобалку со своим хендлом (после того как отработает пишет в нее свой хендл или обнуляет если самый старший)
Очередь организуем по возрастающей (хендлы), самый старший обнуляет вторую глобалку
в каждом экспе создаем три массива (за неимением структур) - символ\хендл\последнее время доступа\ время последнего тика.
все эксперты следят за (время посл. доступа\ время посл. тика) для всех и как только они разнятся (сбой по одному из експов) обе глобалки сбойного эксперта удаляются и он считается неактивным. его ячейки в массивах удаляются (массив перестраивается).
очередь восстанавливается
реально это будет делать эксп который стоит на самом активном графике (частые тики).
принормальном деините, каждый эксп убирает за собой
максимальный пропуск - один тик.
ЗЫ. а вообще лучше делать один мультивалютник
Сергей, какие вопросы были неразрешены? Если это:
То на 378 странице есть код. Вот ещё раз:
Там, где задержка "имитация работы" вставляете обращение к депозиту или к другому ресурсу.Этот блок синхронизации можно в функцию превратить и поместить в библиотеку. Будет у Вас синхронная функция обращения к депозиту из любого советника.
Это блок атомарного доступа и никакой синхронизации. Обращаться только к депозиту так нет смысла. Вызов любой из функций параметров депозита сам по себе будет атомарным, без всяких накрутов. Если делать атомарно, то всю работу советника. Вот так вот вы и решаете задачи - думаете, что что-то сделали, а на самом деле - иллюзию.
1) Задача : каждый скрипт (советник) должен знать о наличии всех остальных.
2) Проблема : если произойдет сбой, то глобалки от сбойного будут висеть неприкаянные и очередь запнется.
3) Решение :
Каждый эксп организует 1 глобалку с именем - общий префикс + хендл окна + символ. значение глобалки - время последнего тика по этому инструменту. 2 общую глобалку со своим хендлом (после того как отработает пишет в нее свой хендл или обнуляет если самый старший)
Очередь организуем по возрастающей (хендлы), самый старший обнуляет вторую глобалку
в каждом экспе создаем три массива (за неимением структур) - символ\хендл\последнее время доступа\ время последнего тика.
все эксперты следят за (время посл. доступа\ время посл. тика) для всех и как только они разнятся (сбой по одному из експов) обе глобалки сбойного эксперта удаляются и он считается неактивным. его ячейки в массивах удаляются (массив перестраивается).
очередь восстанавливается
реально это будет делать эксп который стоит на самом активном графике (частые тики).
принормальном деините, каждый эксп убирает за собой
максимальный пропуск - один тик.
ЗЫ. а вообще лучше делать один мультивалютник
Он не поймет, слишком сверху плохо видно))) У меня решена эта задача примерно в таком стиле. Приятно, что есть кто-то, кто въехал в суть задачи. Только у меня еще очередь выстраивается, в каком порядке начали задачи выполняться в такой и выполняются дальше по кругу.