Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 182

 

Здраствуйте.

Есть такая функция NewBar(sy, ТF). Она смотрит открылся ли новый бар. Мне надо на часовом графике получить сигнал о появлений нового бара с запаздываем 5 мин. То есть я хочу получать сигнал в 0.05, 1.05,м 2.05, ..........., 10.05, 11.05 и т.д.Здараствуйте


Как это сделать ? Может возможно как то саму функцию переделать ?

 
hoz:

Ну убрал я #property library, а предупреждения то как не было так и нет, в то время как функции start тоже нет..

Предупреждения о чем?
 
Vinin:

Предупреждения о чем?


Как же о чём... Вот:

sergeev:
он нужен, если не хотите видеть предупреждения про отсутствующую start

 
gince:

Здраствуйте.

Есть такая функция NewBar(sy, ТF). Она смотрит открылся ли новый бар. Мне надо на часовом графике получить сигнал о появлений нового бара с запаздываем 5 мин. То есть я хочу получать сигнал в 0.05, 1.05,м 2.05, ..........., 10.05, 11.05 и т.д.Здараствуйте


Как это сделать ? Может возможно как то саму функцию переделать ?


Объявляешь глобально:

datetime = bdt_lastBarTime;

В ИНИТЕ:

bdt_lastBarTime = 0;

В СТАРТЕ:

if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

g_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Вместо Time[0]; можешь пометить iTime(), чтобы получать новый бар не текущего, а другого таймфрейма.

 
hoz:


Объявляешь глобально:

В ИНИТЕ:

В СТАРТЕ:

Вместо Time[0]; можешь пометить iTime(), чтобы получать новый бар не текущего, а другого таймфрейма.


Только вот проблема. Имена переменных не совпадают. А-яй-яй. То ли невнимательность, то ли привычка
 
Vinin:

Только вот проблема. Имена переменных не совпадают. А-яй-яй. То ли невнимательность, то ли привычка

Это невнимательность. Подкорректирую.

Объявляешь глобально:

datetime = bdt_lastBarTime;

В ИНИТЕ:

bdt_lastBarTime = 0;

В СТАРТЕ:

if (bdt_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

bdt_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Вместо Time[0]; можешь пометить iTime(), чтобы получать новый бар не текущего, а другого таймфрейма.

 

навскидку, только конкретно для этой задачи.

bool NewBar05()
{
static bool newbar;
if (Minute()==5 && !newbar) 
   {
   newbar=true;
   return true;
   } 
if (Minute()>5 && newbar)  newbar=false;
   return  false;
}
    
 
xxxKillxxx:

Товарищ, извините меня еще раз, но у меня возникла проблема.... Я смог извлечь нужные блоки по закрытию, соблюдая синтаксис ( на самом деле я в програмировании совсем не бум-бум) и, ошибок и предупреждений небыло.Но при запуске советника, сделки все равно не закрываются. Проблема в том что я немогу выложить код советника, а решить проблему ну очень сильно нужно, если вас не затруднит, потратить на меня еще раз свое драгоценное время пожалуйста, объясните мне какие могут быть варианты для решения проблемы, если это важно, могу сказать только что советник создавался на forex generator 4.

Пожалуйста, если не трудно объясните причины.( желательно на пальцах методом тык-мык а то я только так и програмирую) Заранее благодарен.


Ну мой код или уже участок кода вашего советника закрывает указанный профит от 0.1% и выше. На на forex generator 4 вы смогли сделать чтото что бы эквити была выше баланса ?
 
Roger:

навскидку, только конкретно для этой задачи.


Всем спасибо помогающим.

Вопрос был таков.

<Есть такая функция NewBar(sy, ТF). Она смотрит открылся ли новый бар. Мне надо на часовом графике получить сигнал о появлений нового бара с запаздываем 5 мин. То есть я хочу получать сигнал в 0.05, 1.05,м 2.05, ..........., 10.05, 11.05 и т.д. >

Поясняю вопрос. Функция должна вернуть истину через каждый час, но с задержкой 5 мин. Т. е. когда кончаеться формировка бара 1.05 и появляеться бар 2.05, то с появлением последнего функция возвращает истину. Функция дает истину с появлением бара в 1.10, 2.10 и т.д.

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

По вашим наводкам попробовал так, но неработает.

bool isNewBar5 ()
{

    static int   LastBar = 0; 
    datetime      curbar = iTime (Symbol(), 60, 0) +300; 
    int                h = Hour();
    if (LastBar != curbar && h == h + 1 && Minute() == 5)
    {
        LastBar = curbar;
        return (true);
    }
    else
    {return (false);}
}
 
gince:

Здраствуйте.

Есть такая функция NewBar(sy, ТF). Она смотрит открылся ли новый бар. Мне надо на часовом графике получить сигнал о появлений нового бара с запаздываем 5 мин. То есть я хочу получать сигнал в 0.05, 1.05,м 2.05, ..........., 10.05, 11.05 и т.д.Здараствуйте


Как это сделать ? Может возможно как то саму функцию переделать ?


int bt=((TimeCurrent()-5*60)/3600)*3600;

Значение bt будет меняться в 5 минут каждого часа. Можно в конце не умножать на 3600, будет номер бара от начала эпохи, этого достаточно для определения нового бара.