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

 

Синхронизация - это тоже понятие относительное. Синхронизация чего с чем? Синхронизаия для обеспечения атомарного доступа? А очередь кто будет строить? Жунко, может в вашей библитеке и очередь нормально выстраивается, если код с МСДН взят, потому-что там все правильно сделано. А вы просто слизали не понимая что он делает - как мартышка очки. А может и как всегда загнали отсебятину. Потому-что не понимаете. Уприраетесь же  путаете синхронизацию для обеспечения атомарного доступа и выстраивание очереди. 

 
Sepulca:
Накупили много ядер процессорных. И теперь какое за кем в очередь не разберёмся)))))))))

Неа, это и одноядерных процессоров касается, многозадачность - это функция операционной системы.
 
Chiripaha:

Я проверил с увеличением PauseBar и получил как раз эти палки на 1 и 5-ти минутках. Но никак не врублюсь как правильно их объехать. Я понимаю, что нужно записать, вероятно (но не очевидно), если значение

в

значение предыдущих баров - примерно что-то вроде этого:

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


Этот вариант в тестере работает адекватно. 
Объехал вот так:

        if(FirstChanel) 
        { 
          if(Up[i-2]==0 && Down[i-2]==0)
          {
            Up[i-1]   = high;   
            Down[i-1] = low; 
          } 
          else
          {
            Up[i-1]   = Up[i-2];   
            Down[i-1] = Down[i-2]; 
          }  
        }

 И везде где было [i] сместил на 1 бар назад 

И вот здесь:

   Comment("DrawChannel =",DrawChannel,"\n",
           "limit =",limit); // изначально значение было равно 1
  
   limit = Bars-IndicatorCounted()-1; 
   if(limit >= 1)                    limit = Bars-1; // и это условие не выполнялось, поставил >= и начало считать
Файлы:
 
Доброго времени суток. Походил по форуму но не нашел конкретного ответа возможно ли чтобы советник работал сразу с несколькими валютными парами? Вроде на некоторых сайтах где торгуют советниками в их описаниях есть такая возможность, но хотелось бы удосовериться.Если можно, киньте ссылку о способе такой реализации. Спасибо.
 
Trendy:

Походил по форуму но не нашел конкретного ответа возможно ли чтобы советник работал сразу с несколькими валютными парами? 

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

возможно. советник ограничен только количеством символов вашего ДЦ.

ответа вы не нашли, потому что ваш вопрос глупый по сути.

Если можно, киньте ссылку о способе такой реализации

https://www.mql5.com/ru/code
 
Integer:


1. Видимо у вас проблемы с пониманием. Я то понимаю о чем вобще разговор.

2. Спасибо, но не спрашивал советов. Тем более, что разгвор идет о синхронизации того, что уже не в одном потоке.

3. А как положено по науке. По какой науке? По вашей собственной? Когда-нибудь поймете, что надо, только замороченного в этом ничего нет. Языки и алгоритмы программирования не дураки придумывали и создавали. Но почему-то они обеспечены средствами синхронизации и создания очереди.

4. Очень не ошибаюсь. Если бы правильная....Если бы была синзхронизация. Но в том коде который вы привели здесь немного раньше нет синхронирзации, только атомарный доступ. 

3. По науке системного программирования. Рихтера читай. Он твою замороченность на очередях просветлит.

4. Что такое синхронизация? Это и есть атомарный доступ к какому-либо ресурсу. Мой код это обеспечивает. Очередь строится системой. Модули исполняются пропорционально времени их исполнения. Порядок исполнения не важен. Всё делает система. Это не дураки придумали. Попробуй доказать обратное на конкретном примере. Проанализируй лог. Увидишь, что всё исполняется правильно без твоих заморочек на твои особые очереди.

Кстати, это в MQL4, как языке, есть функция с атомарным доступом. В С++ таких нет. Их надо самому писать, как оболочки WinAPI-функций. Лучше это реализовать в классе.

Integer:

Еще раз, на всякий случай для тех кто в танке на подводной лодке и еще в каске. Здесь показан только атомарный доступ. Порядок отработки функций здесь будет - как ветер дунет. В этом коде не обеспечивается равномерного исполнения функций. Поэтому нет гарантии, что какая-то функция не останется за боротом очень долго. Уповать на слуйность в програмировании только от того у процессора частота высокая, это смешно, даже при очень высокой частоте процессора.

Ещё раз для тех, кто не в танке. Порядок исполнения обеспечивает система. Что такое равномерное исполнение? Как можно обеспечить равномерное исполнение потоков, время исполнения и количество которых не известно? Зачем так заморачиваться? За тебя уже подумали и сделали. Пользуйся объектами синхронизации.
Конечно, не исключаю случаев, когда требуется особая очередь исполнения потоков. Это высшей степени заморочка :-)) Надо избегать такого кода. Ибо, тут есть парадокс. Зачем исполнять задачу в нескольких потоках, чтобы потом их сводить в один? Пользуй однопоточное исполнение. Тогда не нужна будет синхронизация.

Есть ещё один случай, когда нужна очередь. Но не очередь исполнения потоков, а порядок обработки полученных данных от потоков (результатов работы потоков). Это наиболее частая задача для очередей.

Integer:

Синхронизация - это тоже понятие относительное. Синхронизация чего с чем? Синхронизаия для обеспечения атомарного доступа? А очередь кто будет строить? Жунко, может в вашей библитеке и очередь нормально выстраивается, если код с МСДН взят, потому-что там все правильно сделано. А вы просто слизали не понимая что он делает - как мартышка очки. А может и как всегда загнали отсебятину. Потому-что не понимаете. Уприраетесь же  путаете синхронизацию для обеспечения атомарного доступа и выстраивание очереди. 

И ещё раз для тех, кто... :-))

 Синхронизация это обеспечение атомарного доступа к какому-либо ресурсу. Очередь строится системой. Исполнение гарантируется, порядок - нет. В MSDN, скорее всего, код правильный, но неудобный. Пиши свой класс для удобной синхронизации. Свой класс написал по принципу класса Андрея Постникова. Он любезно показал, как правильно надо синхронизировать. Правда, это не один класс. Получилось по классу на каждый объект синхронизации, ещё один класс-замок на всё и пространство имён для функций ожидания.
 Собственно, выше всё уже ответил.

 

Жунко, вы безнадежны. Если вам тяжело думать, не думайте, плюньте на это дело вообще, не ваше это...

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

 
Integer:

Жунко, вы безнадежны. Если вам тяжело думать, не думайте, плюньте на это дело вообще, не ваше это...

Если бы что-то было не проверено и не доказано, и не полез бы в спор. Проблема в тм, что вы, Вадим не способны на конструктивные разговоры. Хорошо хоть, что вы сами подтверждаете, что синхронизация только для атомарного доступа, но не для постороения очереди.

Куда уж мне... Я ж не программист, как некоторые :-))
 
Zhunko:

Синхронизация это обеспечение атомарного доступа к какому-либо ресурсу.
Очередь строится системой. 


Бурные аплодисменты! На тему кода со страницы 378. Даже если терминал и регулирует порядок очереди, он не может знать в каком случае функция исполнялась, а в каком была отклонена. 
 
Еще, насчет регулирования системой. Если создано несколько потоков - да, система будет регулировать. Но если кто-то с боку полез в эти потоки, тут уже надо обо всем подумать самостоятельно, чуда от системы не будет. 
Причина обращения: