Укажите пожалуйста на ошибки

  • Автор темы Andrei72
  • Дата начала

000

New member
внимание, вопрос:
эти 5минутные бары считаются как?
начиная с предыдущего минутного бара?
или начиная с конца последней 5минутки? но тогда где начало - с начала всех баров?
вот этот момент вообще не ясен.
Начало всех баров в начале торг. сессии.
 
Начало всех баров в начале торг. сессии.
спасибо, а как определить, каким по счету минутным баром в пятиминутке является текущий бар?

ну т.е. вот у нас рисуется новая пятиминутка:
нарисовали первую минутку, потом вторую, потом третью - вот эта третья текущая
как узнать, что она третья?

типа функции: n = NumberOfFive(); // функция ывыдает результат, если эта первая минутка в новой пятиминутке - то 1, если вторая - 2, если третья 3, если четвертая 4, если пятая 5, если опять первая 1 и т.д.
 

Commenced

New member
почему то за последние 3 бара минуток?

а это на что:
time5m = TimeFrameCompress( High, in5Minute);// заношу в массив цены хаев на 5минутках
Потому что ты его разжал, а потом начал искать самый высокий хай находясь в минутках. т.е. система будет смотреть мах значение time5m за последние 3 бара минуток.
 

000

New member
спасибо, а как определить, каким по счету минутным баром в пятиминутке является текущий бар?

ну т.е. вот у нас рисуется новая пятиминутка:
нарисовали первую минутку, потом вторую, потом третью - вот эта третья текущая
как узнать, что она третья?

типа функции: n = NumberOfFive(); // функция ывыдает результат, если эта первая минутка в новой пятиминутке - то 1, если вторая - 2, если третья 3, если четвертая 4, если пятая 5, если опять первая 1 и т.д.
Посмотри время бара в минутах и посчитай. Если в настройках Ами установлено время начала бара (а так и должно быть), то если время бара в минутах заканчивется на 0 или 5, то он первый, если на 1 или 6 то второй и т.д.
 
Потому что ты его разжал, а потом начал искать самый высокий хай находясь в минутках. т.е. система будет смотреть мах значение time5m за последние 3 бара минуток.
я сначала нашел максимальный хай на 5минутках, а потом его разжал о_О
в хелпе аналогия с МА была
 
Посмотри время бара в минутах и посчитай. Если в настройках Ами установлено время начала бара (а так и должно быть), то если время бара в минутах заканчивется на 0 или 5, то он первый, если на 1 или 6 то второй и т.д.
действительно просто, как я сам не додумался...
а если время конца бара?
 
написал функцию
function NumberOfFive()
{
result = 0;
BarTime = Minute();
while( BarTime > 0 )
{ BarTime = BarTime - 5; }
BarTime = BarTime +5;
result = BarTime;
return result;
}



в строке while( BarTime > 0 )
определяет ошибку: Error 6. Condition in IF, WHILE, FOR ..... You cannot use array here, please use []

как же я ненавижу эти массивы.... ффффф

вроде простейшая ерунда, создать ряд
123451234512345
а фиг реализуешь на этих массивах.
 
о как извратился:

function NumberOfFive()
{
result = 0;
BarTime = Minute();
StrTime = NumToStr(BarTime);
newstring = StrRight( StrTime, 5);
Num = StrToNum(newstring);
Num = IIf (Num >=5, Num-5, Num);
result = num+1;

return result;
}

n = NumberOfFive();
Plot(n, "n", colorBlue);

считаю, что такая обработка данных через строку - это мегаизврат в программировании, но все работает =)
 
теперь задумался, как аналогичную функцию на часах построить :(
там посложнее - в тридцать минут каждого часа начало отсчета (из-за того что биржа в 10-30 открывается).
(кстати, 15минутный клиринг на часах вообще почему-то не учитывается)

а вот и результат:
function NumberOfHour()
{

BarTime = Minute();
Num = IIf (BarTime>29, BarTime -30, BarTime+30);
result = num+1;

return result;
}

доволен собой =)
как-то подозрительно все сразу получается.
небось ошибок где-то наклепал.
 
а вот и глюки!
при попытке вычислить ЛОЙ нового незавершенного часа:

CurrentLow = LLV(L, NumberOfHour());

амиброкер просто зависает.

хм... чето подумал он подумал и отвис =)
что ж так медленно работает-то, вроде циклов нет.
может вместо NumberOfHour() брать его последнее значение?
 

000

New member
о как извратился:

function NumberOfFive()
{
result = 0;
BarTime = Minute();
StrTime = NumToStr(BarTime);
newstring = StrRight( StrTime, 5);
Num = StrToNum(newstring);
Num = IIf (Num >=5, Num-5, Num);
result = num+1;

return result;
}

n = NumberOfFive();
Plot(n, "n", colorBlue);

считаю, что такая обработка данных через строку - это мегаизврат в программировании, но все работает =)
Проверять лень. Я бы сделал так
Код:
function NumberOfFive() { 
  BarTime = Minute();
  Num = round(frac(BarTime/5)*5)+1;
  return Num; 
}
 
спасибо
а что насчет
CurrentLow = LLV(L, NumberOfHour());

на графике работает верно, но тормозит просто безбожно
(правда у меня загружены 4 года минуток.... видимо он их все обрабатывает).
как ему сказать что все не надо, а только пару деньков последних?

когда ставлю lastValue (NumberOfHour()) - то результат неправильный, а просто с NumberOfHour() результат правильный, но безбожно тормозит - около минуты
 

000

New member
спасибо
а что насчет
CurrentLow = LLV(L, NumberOfHour());

на графике работает верно, но тормозит просто безбожно
(правда у меня загружены 4 года минуток.... видимо он их все обрабатывает).
как ему сказать что все не надо, а только пару деньков последних?

когда ставлю lastValue (NumberOfHour()) - то результат неправильный, а просто с NumberOfHour() результат правильный, но безбожно тормозит - около минуты
Поробуй таким макаром
Код:
SetChartOptions(0, chartShowDates );

StartWeekly = DayOfWeek() < Ref(DayOfWeek(), -1);
CurrentLow = LLV(L, BarsSince(StartWeekly ));

Plot(C, "", colorBlack, styleCandle);
Plot(CurrentLow, "", colorRed);
 
эээ не
там суть в том, чтобы находить ЛОЙ текущего незаконченного часа.
хм а вообще принцип интересный, сча попробую на часы перепрограммить
 

Commenced

New member
а вот и глюки!
при попытке вычислить ЛОЙ нового незавершенного часа:

CurrentLow = LLV(L, NumberOfHour());

амиброкер просто зависает.

хм... чето подумал он подумал и отвис =)
что ж так медленно работает-то, вроде циклов нет.
может вместо NumberOfHour() брать его последнее значение?
Ты это хочеш получить?

r=IIf(Hour()==Ref(Hour(),-1),0,1);
f=BarsSince(r)+1;
CurrentLow = LLV(L, f);
Plot( CurrentLow, "CurrentLow", colorBlue );
Plot(C, "", colorBlack, styleBar);
 
Ты это хочеш получить?

r=IIf(Hour()==Ref(Hour(),-1),0,1);
f=BarsSince(r)+1;
CurrentLow = LLV(L, f);
Plot( CurrentLow, "CurrentLow", colorBlue );
Plot(C, "", colorBlack, styleBar);
примерно
этот код немного некорректно работает,
т.к. час длится с 10-30 до 11-30.
а тут уже в 11-00 меняется значение в большую сторону, чего быть не может, т.к. лой не может стать выше в течение часа - только ниже
 

Commenced

New member
примерно
этот код немного некорректно работает,
т.к. час длится с 10-30 до 11-30.
а тут уже в 11-00 меняется значение в большую сторону, чего быть не может, т.к. лой не может стать выше в течение часа - только ниже
У меня нет :) Да возьми ты тогда L с сжатый с часовика и все, какраз будет llv часа.
 
У меня нет :) Да возьми ты тогда L с сжатый с часовика и все, какраз будет llv часа.
тогда система будет в будущее заглядывать!
а мне нужно, чтобы лой незавершенного часа был именно лоем незавершенного часа, а не завершенного.

моя функция CurrentLow = LLV(L, NumberOfHour());
тоже работает, только тормозит около минуты - как бы запретить тестеру временно анализировать весь интервал - оставив только пару дней?
--
а с 10-30 час так, т.к. как раз сжатые часы считаются с 10-30.
если я буду свое время вводить, тогда будет конфликт со встроенными функциями ами.
т.е. у меня час в 11 начинается, а у амиброкера в 10-30.
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху