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

 
Integer:

Он не поймет))) У меня решена эта задача примерно в таком стиле. Приятно, что есть кто въехал в суть задачи. Только у меня еще очередь выстраивается, в каком порядке начали задачи выполняться в такой и выполняются дальше по кругу.

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

MACD показывает скорость в пунктах за время. Если под скоростью изменений подразумевается ускорение, то надо взять производную от MACD.

Весьма интересные результаты получаются. Сейчас эксперт пишу на эту тему.


Бред! Значит, чтобы узнать не скорость, а ускорение - надо брать производную, а чтобы скорость - макд, а почемуж не производную от чего-то там?
 
FAQ:

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


Да. Хэндлы не ипользуются.
 
Zhunko:

MACD показывает скорость в пунктах за время. Если под скоростью изменений подразумевается ускорение, то надо взять производную от MACD.

Весьма интересные результаты получаются. Сейчас эксперт пишу на эту тему.


Так будет правильно?

for(int i=0; i<limit; i++) velocity[i]=(Close[i]-Close[i+1])/Point;
for(i=0; i<limit; i++) acceleration[i]=velocity[i]-velocity[i+1];

 В английском не мастак, если что не так, извините. Получаем скорость в пунктах за минуту и ускорение в пунктах в минуту за минуту. Или ошибаюсь?

 А, забыл пояснить. Поскольку Δt=1, то я на единицу делить не стал, думал так понятно. 

 

Эта...

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

Zhunko:

Сергей, какие вопросы были неразрешены? Если это:

Chiripaha:

Т.е. отвечая на вопрос Arles , если у меня один советник произвел учет ордеров и на время "вздремнул" то в этот момент другой советник не перешедший границ выделенных средств (предположим 80% от депозита - в обоих советниках такой размер будет) выставит ордер (войдет в сделку по рынку). И когда 1-ый возобновит работу (а терминал по управлению капиталом уже был посчитан накануне), то он тоже может открыть сделку уже превышающую выделенные лимиты советником?

Если эту сит-ию (гипотетически) размножить на несколько советников, то может возникнуть такая, где Риск-Менеджмент окажется в критической сит-ии?

Я правильно понимаю данную многопоточность? - Если так, то с финансовой точки зрения это, конечно, бардак. Но, т.к. вероятность такового невелика на маленьких счетах, то это лишь гипотетически. А на больших счетах, наверное будут сами писать что-то. Но, все-таки, получается что это так?

И у меня вопрос - это официальная позиция или это лишь предположение и опыты наподобие моих?

 То на 378 странице есть код. Вот ещё раз:

Там, где задержка "имитация работы" вставляете обращение к депозиту или к другому ресурсу.

Этот блок синхронизации можно в функцию превратить и поместить в библиотеку. Будет у Вас синхронная функция обращения к депозиту из любого советника.


Верно, под нерешенным вопросом я имел ввиду именно этот список вопросов.

То, что Вы нашли решение - это очень хорошо и я Вашу позицию понимаю и принимаю. НО! - Как я и писал прям в следующем посте за постом с вопросами, - это Вы уже предложили следующее решение, когда можно самому создать программу в которой эти вопросы будут разрешены автором (программистом) программы. И это хорошо. Но это уже следующий шаг. То, что Вы в дискуссиях этот шаг подробно препарировали - тоже очень хорошо для понимания и тем более несведущих новичков типа меня. И то, что вы сейчас предложили практические примеры решения этого. - Замечательно. Т.е. Вы таким образом предложили решение этой задачи (косвенно подтверждая ее наличие и необходимость разрешения). НО!

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

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

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

====================================

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

Chiripaha:

... если у меня один советник произвел учет ордеров и на время "вздремнул" то в этот момент другой советник не перешедший границ выделенных средств (предположим 80% от депозита - в обоих советниках такой размер будет) выставит ордер (войдет в сделку по рынку). И когда 1-ый возобновит работу (а терминал по управлению капиталом уже был посчитан накануне), то он тоже может открыть сделку уже превышающую выделенные лимиты советником?

Если эту сит-ию (гипотетически) размножить на несколько советников, то может возникнуть такая, где Риск-Менеджмент окажется в критической сит-ии?

Еще немножко пояснюсь. Я не уверен, что это сильно критический момент. Поэтому рассматриваю его пока гепотетически. Поскольку скорость решения задач высокая и, вероятно, решения в компе будут "пролетать" сквозь широкий канал битности компа. - Но может я и неправ в этом, т.к. по словам Арлеса - у него как раз и получается по 2 ордера на круг. Значит, проблема есть.

 
gyfto:

А, забыл пояснить. Поскольку Δt=1, то я на единицу делить не стал, думал так понятно. 
А эта дельта всегда будет единица? или она может быть изменяющейся? Если не постоянный параметр, то лучше его (параметр) в формулу ввести.
 
Integer:

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

Думал до тебя за ночь наконец-то дойдёт смысл сказанного мной... :-(( Печально, что не дошло.

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

Сейчас задача - синхронизировать обращение к ресурсу. Моего кода достаточно. При этом эксперты работают независимо и параллельно.

Integer:

Бред! Значит, чтобы узнать не скорость, а ускорение - надо брать производную, а чтобы скорость - макд, а почемуж не производную от чего-то там?
 Вопрос не понял. 
 
Zhunko:

Думал до тебя за ночь наконец-то дойдёт смысл сказанного мной... :-(( Печально, что не дошло.

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

Сейчас задача - синхронизировать обращение к ресурсу. Моего кода достаточно. При этом эксперты работают независимо и параллельно.

 Вопрос не понял. 


Жунко,  т_ы  д-и_Б*и%л#о^и=д. Этож как надо угораздиться до такой тупости. Мозгов нет даже осознать проблему задачи, хоть бы не выпендривался своей возвышенностью. С тобой даже разговаривать бесполезно - абсолютно не врубаешься. Но зато такую позицию занимаешь... типа все знаешь и понимаешь, только ничего ты не знаешь и не понимаешь, кодишь на уровне нубо-ламера-детсадника. И понимание всего на таком же уровне. Но зато самомнение...

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

 
Zhunko:

 Вопрос не понял. 


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


Да, всегда единица, потому что
Time[i] - Time[i+1] = const = 1
 Другое дело, если работать не ТФ М1, а тиковым, то там да - от бида к биду Δt будет переменной.
Zhunko:

 Вопрос не понял. 

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