Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1. - страница 44

 
TheXpert:

Нереально без контроля в самом советнике.

В общем виде, видимо, да.

Но если условиться, что перерасчет должен производиться не чаще, чем раз в Х мс, то можно решить просто и в лоб.


TheXpert:

Мало того, не нужно.

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

 
Andrey Khatimlianskii:

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

скорее всего можно сделать, в fxsaber стиле, с переопределением функций входа через дефайны

 
можно "в лоб" попробовать: читать тики например, по времени с начала последнего минутного бара и до текущего момента. проверять их количество, т.е. сравнивать размер полученного массива - если остался прежним, значит и тик еще прежний, уже обсчитанный. придёт новый тик - массив подрастёт; придёт новый бар - уменьшится
 
Andrey Khatimlianskii:

Нет, это точно будет медленнее сравнения бид/аск/мс.

Какая проблема с надежностью? Важен же только факт изменения чего либо.

А может - неизменности, тик ведь один и тот-же, ни bid, ни ask не изменились. 

 
Andrey Khatimlianskii:

В общем виде, видимо, да.

Но если условиться, что перерасчет должен производиться не чаще, чем раз в Х мс, то можно решить просто и в лоб.


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

а в чём шаманство, кроме инклуда еще одну строчку вставить в начало 

OnTick(){ Count_tick++;

Если не помогает дефайн, помогает Ctrl-H  :)

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

//include file
static int Count_tick=0;
void SameTick(int &tick, bool &same_tick) { if(tick<Count_tick){tick=Count_tick;return ;} else same_tick=true; return ;}
#define SameTick() static int my_tick=0;bool same_tick=false;SameTick(my_tick, same_tick)

// EA file

func1(){SameTick();   if (same_tick)... }
func2(){SameTick();   if (same_tick) ...}...

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

 
Igor Zakharov:
можно "в лоб" попробовать: читать тики например, по времени с начала последнего минутного бара и до текущего момента. проверять их количество, т.е. сравнивать размер полученного массива - если остался прежним, значит и тик еще прежний, уже обсчитанный. придёт новый тик - массив подрастёт; придёт новый бар - уменьшится

Ну, конечно! Есть же Volume (который тиковый). Это и есть уникальный номер тика (в рамках бара, но этого достаточно)!

Проверю, дает ли ускорение такой финт.

 
TheXpert:

скорее всего можно сделать, в fxsaber стиле, с переопределением функций входа через дефайны

Aleksey Mavrin:

а в чём шаманство, кроме инклуда еще одну строчку вставить в начало 

Если не помогает дефайн, помогает Ctrl-H  :)

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

Похоже, да. Если Volume будет медленным, задефайню все что нужно.


Спасибо всем за участие!

 
Aleksey Mavrin:

а в чём шаманство, кроме инклуда еще одну строчку вставить в начало 

Если не помогает дефайн, помогает Ctrl-H  :)

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

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

Aleksey Mavrin:

а в чём шаманство, кроме инклуда еще одну строчку вставить в начало 

Если не помогает дефайн, помогает Ctrl-H  :)

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

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

Static только в момент прикрепления к графику инициализируется, поэтому будет ошибка расчетов. 

static int Count_tick=0;
 
Алексей Тарабанов:

Static только в момент прикрепления к графику инициализируется, поэтому будет ошибка расчетов. 

Не понял в чём будет ошибка. Она же на глоб. уровне объявляется, без разницы.

 
Andrey Khatimlianskii:

Ну, конечно! Есть же Volume (который тиковый). Это и есть уникальный номер тика (в рамках бара, но этого достаточно)!

если во время обработки тика придет новый тик, он возможно поменяется?

Причина обращения: