Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 1874

 
Maxim Dmitrievsky:

а посмотри кривульки за 2 часа сразу

между часами перекос получается у меня

или там и есть 24 значения в каждой?

ето так и есть! 24 значения в каждой...

12   5-ти минуток  5-ого часа и 12    5-ти минуток 6-ого часа вместе  получ. один ряд в 24 знач.

 
mytarmailS:

ето так и есть! 24 значения в каждой...

12   5-ти минуток  5-ого часа и 12 5-ти минуток 6-ого часа вместе  получ. один ряд в 24 знач.

а че по сотням? нарисуй все сразу, там в конце где-то перекосы по моему

 
Maxim Dmitrievsky:

а че по сотням? нарисуй все сразу, там в конце где-то перекосы по моему

потому что слишком много линий, ничего не видно..

вот все  сразу

-----------------------

Что то ты напортачил при создании датасета для кластеров

 
mytarmailS:

потому что слишком много линий, ничего не видно..

вот все  сразу

-----------------------

Что то ты напортачил при создании датасета для кластеров

понял.. спасибо

З.Ы количество часов в датасете разное

5-часовки: 139

6-часовки: 140

в каком-то месте часа не хватает или час лишний. 

не знаю почему у тебя все ровно, видимо пакет сам что-то делает

решение: делаем реиндекс датафрейма с частотой 5 минут, добавляются NaN на место пропущенных баров. Делаем fillNa по ближайшим значениям. Наконец-то %)

 
Зачем NaN? Цена же не менялась - подставляйте цену Close предыдущего бара.
 
Maxim Dmitrievsky:

понял.. спасибо

у меня тоже разное число  5ти часов и 6ти часов, но все работает норм, вроди как..

вектор с часами  hrs

hrs
   [1]  9  9  9  9  9  9  9  9  9  9  9  9 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11
  [32] 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 14 14
  [63] 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16
  [94] 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 18 19 19 19 19
 [125] 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21
 [156] 21 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23 23 23  0  0  0  0  0  0
 [187]  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1  2  2  2  2  2  2  2  2  2  2  2  2  3
 [218]  3  3  3  3  3  3  3  3  3  3  3  4  4  4  4  4  4  4  4  4  4  4  4  5  5  5  5  5  5  5  5
 [249]  5  5  5  5  6  6  6  6  6  6  6  6  6  6  6  6  7  7  7  7  7  7  7  7  7  7  7  7  8  8  8
 [280]  8  8  8  8  8  8  8  8  8  9  9  9  9  9  9  9  9  9  9  9  9 10 10 10 10 10 10 10 10 10 10
 [311] 10 10 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13


код - если наступил час 5 то берем индексы от этого места и добавляем 24 часа, те берем полноценные два часа, и вывод результата

for(i in 2:length(x$close)){
  
  if(hrs[i] == 5 & hrs[i-1] == 4){
    
    ii <- i:(i+23)
    
    print(  hrs[ii] )}

получаем

[1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
 [1] 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6
......
.....
....

все четко работает , как надо, я хз что там у тя не так

 
mytarmailS:

у меня тоже разное число  5ти часов и 6ти часов, но все работает норм, вроди как..

вектор с часами  hrs


код - если наступил час 5 то берем индексы от этого места и добавляем 24 часа, те берем полноценные два часа, и вывод результата

получаем

все четко работает , как надо, я хз что там у тя не так

зачем ты двойку делишь на длину датафрейма в цикле? ) Я не понимаю каракули R, к сожалению

если разное кол-во часов (а оно может быть разным из-за пропусков), то получение строк в цикле приводит к сдвигам. Т.е. берется час одного дня и час другого дня, например. Или отсутствуют какие-то 5-минутки, из-за этого сдвиг будет на 5 минут одного часа от другого.
 
Maxim Dmitrievsky:

зачем ты двойку делишь на длину датафрейма в цикле? ) Я не понимаю каракули R, к сожалению

я не делю там никакой двойки

напимер:

2 :10  значит  -  взять от 2 до 10     ==     2,3,4,5,6,7,8,9,10

 
mytarmailS:

я не делю там никакой двойки

вот код на нормальном языке :З

выбрасываю из датасета все часы, кроме нужных. Здесь никак не ошибешься.

Дальше просто беру 5-минутки каждого часа и делаю из них столбцы, последовательно

# leave only n hours in the dataset
    prices = prices.drop(prices.index[~prices.index.hour.isin([first_hour,first_hour+1])])

# get the df datetime indexes objects
    minute = prices.index.minute
    hour = prices.index.hour

# filter df to combine hourly patterns into rows by minute and hour
  grouped_prices = pd.DataFrame()
    for h in range(first_hour,first_hour+2):
       for i in range(0,60,5):
          grouped_prices[str(i) + " " + str(h)] = prices.iloc[(minute==i) & (hour==h)].reset_index()['close']
 
Maxim Dmitrievsky:

вот код на нормальном языке :З

каракули какие то , фу, ничего не понятно

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