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

 
LRA:

int       Флаги=FILE_WRITE+FILE_TXT+FILE_COMMON;

int Инфо = FileOpen(fName,Флаги);

FileWrite(Инфо, ТоЧтоНадо);  На другом терминале читаем. Курсор на FileOpen и F1 - получим справку

Спасибо, посмотрю!
 

Всем привет.

 У меня в строке определения торгового события (появления новой свечи) не обновляется массив таймсерии, точнее при появлении новой свечи не меняется его значение, почему так?

if(T[i]!=iTime(NULL,TF[i],1))

 

 T[i] в первый раз задаётся при запуске эксперта, далее при открытии новой свечи значение обновляется.

Параметр I задаётся на основе входных параметров.

Что интересно, в версии где для работы я использовал сразу несколько ТФ, из-за чего приходилось использовать цикл for, всё работало хорошо, а тут сбой, не обновляется и всё тут...(

 
Igemon:

Всем привет.

 У меня в строке определения торгового события (появления новой свечи) не обновляется массив таймсерии, точнее при появлении новой свечи не меняется его значение, почему так?

 

 T[i] в первый раз задаётся при запуске эксперта, далее при открытии новой свечи значение обновляется.

Параметр I задаётся на основе входных параметров.

Что интересно, в версии где для работы я использовал сразу несколько ТФ, из-за чего приходилось использовать цикл for, всё работало хорошо, а тут сбой, не обновляется и всё тут...(

Видимо не правильно было выдернуто из цикла...

Вот пользовательская функция для определения нового бара

bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

Входящие переменные:

tf - период графика или значение периода для определения появления нового бара.

lastbar - переменная переданная по ссылке для хранения времени последней свечи.

void OnTick()
{
// хотим определить наступление нового дня
 static datetime lastDay, lastHour;
 bool newDay, newHour;
 newDay = NewBar(PERIOD_D1, lastDay);
 if(newDay)
 Print("наступил новый день");
// и нового часа
 newHour = NewBar(PERIOD_H1, lastHour);
 if(newHour)
 Print("наступил новый час");
}
 
AlexeyVik
bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

При первом вызове из советника сразу сообщает о новом баре. Исправляется добавлением вызовов функции в OnInit()

При первом вызове из скрипта сразу сообщает о новом баре.Затем всегда false. Исправляется добавлением в начало функции RefreshRates()

 
LRA:

При первом вызове из советника сразу сообщает о новом баре. Исправляется добавлением вызовов функции в OnInit()

При первом вызове из скрипта сразу сообщает о новом баре.Затем всегда false. Исправляется добавлением в начало функции RefreshRates()

1. При первом вызове true это вполне нормально, если баров ещё небыло, то тот который появился уже будет новым. При необходимости, если того требует стратегия можно и таким способом отказаться от нового бара и ещё несколькими. На вскидку, не раздумывая я представляю ещё два.

static datetime lastDay = iTime(_Symbol, PERIOD_D1, 0);, lastHour = iTime(_Symbol, PERIOD_H1, 0);

или

if(lastbar != curbar && lastbar > 0)

2. Зачем из скрипта определять новый бар??? Это глупость в какой степени?

 

Но тут то почему не робит...(( вроде всё норм(

extern int TFrame=1;

datetime T[6];
int TF[6]={1,5,15,30,60,240};
int i=TFrame-1;

int OnInit()
   {
   T[0]=iTime(NULL,1,1);
   T[1]=iTime(NULL,5,1);
   T[2]=iTime(NULL,15,1);
   T[3]=iTime(NULL,30,1);
   T[4]=iTime(NULL,60,1);
   T[5]=iTime(NULL,240,1);
   for(int q=0;q<=5;q++)
      Print(T[q]);
   return(INIT_SUCCEEDED);
   }
 
void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
 

Igemon:

void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
Простите, Игемон, а зачем сиё безрассудство? Какой добрый человек вам это присоветовал?
 
Доброго времени суток всем. Подскажите кто нибудь : как можно обеспечить нормальную работу советника, то есть выполнение заданного алгоритма, при перезапуске терминала или разрыве интернета ?
 
artmedia70:
Простите, Игемон, а зачем сиё безрассудство? Какой добрый человек вам это присоветовал?
Что не так? Остальной код я просто не вставил, так как там всё норм. Цикл нужен чтобы не зависить от тиков, при определении событий, чтобы не перезагружать ПК стоит sleep на 100 млсек