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

 

Как думаете, как с рекурентной работать?

‌С lstm

+import numpy as np
+from keras.preprocessing import sequence
+from keras.models import Sequential
+from keras.layers import Dense, Activation, Embedding
+from keras.layers import LSTM
+from keras.datasets import imdb
+
+# Устанавливаем seed для повторяемости результатов
+np.random.seed(42)
+# Максимальное количество слов (по частоте использования)
+max_features = 5000
+# Максимальная длина рецензии в словах
+maxlen = 80
+
+# Загружаем данные
+(X_train, y_train), (X_test, y_test) = imdb.load_data(nb_words=max_features)
+
+# Заполняем или обрезаем рецензии
+X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
+X_test = sequence.pad_sequences(X_test, maxlen=maxlen)
+
+# Создаем сеть
+model = Sequential()

‌Как управлять входом, что зацикливать в цикле

 
+# Создаем сеть
+model = Sequential()
+# Слой для векторного представления слов
+model.add(Embedding(max_features, 32, dropout=0.2))
+# Слой долго-краткосрочной памяти
+model.add(LSTM(100, dropout_W=0.2, dropout_U=0.2))  # try using a GRU instead, for fun
+# Полносвязный слой
+model.add(Dense(1, activation="sigmoid"))
+
+# Копмилируем модель
+model.compile(loss='binary_crossentropy',
+              optimizer='adam',
+              metrics=['accuracy'])
+
+# Обучаем модель
+model.fit(X_train, y_train, batch_size=64, nb_epoch=7,
+          validation_data=(X_test, y_test), verbose=1)
+# Проверяем качество обучения на тестовых данных
+scores = model.evaluate(X_test, y_test,
+                        batch_size=64)
+print("Точность на тестовых данных: %.2f%%" % (scores[1] * 100))
 
Top2n:
Уже по всякому перепробывал

зарегистрируйтесь на http://ru.stackoverflow.com ресурс специально создан для того чтобы задавать вопросы по программированию , по любым языкам , в любое время суток , а заодно будем расширять базу правильных ответов на русском языке 

Stack Overflow на русском
Stack Overflow на русском
  • ru.stackoverflow.com
Вот как это работает: Любой может задать вопрос Любой может ответить Лучшие ответы получают голоса и поднимаются наверх
 
Top2n:

Как думаете, как с рекурентной работать?

‌С lstm

+import numpy as np
+from keras.preprocessing import sequence
+from keras.models import Sequential
+from keras.layers import Dense, Activation, Embedding
+from keras.layers import LSTM
+from keras.datasets import imdb
+
+# Устанавливаем seed для повторяемости результатов
+np.random.seed(42)
+# Максимальное количество слов (по частоте использования)
+max_features = 5000
+# Максимальная длина рецензии в словах
+maxlen = 80
+
+# Загружаем данные
+(X_train, y_train), (X_test, y_test) = imdb.load_data(nb_words=max_features)
+
+# Заполняем или обрезаем рецензии
+X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
+X_test = sequence.pad_sequences(X_test, maxlen=maxlen)
+
+# Создаем сеть
+model = Sequential()

‌Как управлять входом, что зацикливать в цикле

Судя по этим отрывкам кода Вы хотите исследовать/решать задачу предсказания текста. Сразу несколько вопросов:

  • Это каким боком к трейдингу?
  • Как Вы предполагаете связать код на Питоне с МТ4/5?

Конечно LSTM  относится к моделям машинного обучения, но textMining к трейдингу? 

Если у Вас есть опыт и наработки по этой теме, начните новую ветку, например: TextMiningPython. Если найдутся энтузиасты - они Вас поддержат. Я с интересом буду следить за развитием. Но начните все таки с более внятного описания входных, целевых данных, ссылок на источники откуда Вы берете данные и задачи, которую Вы хотите решить. Поскольку из Вашего поста понять о чем речь может только экстрасенс очень высокого уровня.

Удачи. 

 

есть такой сервис от гугла под названием google correlate https://www.google.com/trends/correlate

Он может искать коррелирующие запросы пользователей, запросы представлены в виде ВР. Интересный сервис тем что в него можно загружать свой ВР  и он будет искать такие запросы которые коррелируют с заданным ВР.

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

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

 дописал...........

Вот еще статейка которая позволит более глубоко понять суть сервиса от гугла http://forbes.net.ua/opinions/1336134-google-pomogaet-ustanovit-zhdut-li-ukraincy-krizisa 

в‌ статье показано что была найдена сильная связь между показателями  Динамики реального промышленного производства  

в Украине с запросами   поиска словосочетания «потребительский кредит» в Украине

Google Correlate
  • www.google.com
Google Correlate finds search patterns which correspond with real-world trends.
 
mytarmailS:

есть такой сервис от гугла под названием google correlate https://www.google.com/trends/correlate

Он может искать коррелирующие запросы пользователей, запросы представлены в виде ВР. Интересный сервис тем что в него можно загружать свой ВР  и он будет искать такие запросы которые коррелируют с заданным ВР.

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

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


Кореляция это здорово, но помнится на НШ были такие индикаторы как энтропия и ещё что то даже и не припомню, а тут вдруг захотелось поднять записи...... Может из этого что то и выйдет полезное....
 
mytarmailS:

есть такой сервис от гугла...

интересно, в‌от код, но гугл ничего коррелирующего не нашёл

library(lubridate)
library(rusquant) #install.packages("rusquant", repos="http://R-Forge.R-project.org")


#для недельных баров, сдвиг на одну дату назад ибо в сша первый день недели это воскресенье
getSymbols("EURUSD",src = "Finam", period="week", from = 0)
eurusdTime <- as.character(ymd(time(EURUSD))-days(1))


# #для месячных баров
# getSymbols("EURUSD",src = "Finam", period="month", from = 0) #месячные бары вместо недельных
# eurusdTime <- as.character(ymd(time(EURUSD))) #для месячных баров



#либо первый вариант, либо второй, зависит от того как в гугле данные относятся к дате - с отставанием или опережением. я не знаю.
eurusdOpen <- as.numeric(scale(c(diff(as.numeric(EURUSD$EURUSD.Open))[-1], 0, 0)))
# eurusdOpen <- as.numeric(scale(c(diff(as.numeric(EURUSD$EURUSD.Open)), 0)))


write.table(matrix(c(eurusdTime,eurusdOpen), ncol=2), file="table.csv", sep=",", dec=".", row.names = FALSE, col.names = FALSE)

 
Dr.Trader:

‌интересно, в‌от код, но гугл ничего коррелирующего не нашёл

Спасибо!!!

т‌ам диференциировать не надо, теряется структура ряда и тренд, scale"лить тоже не нужно, корреляция при расчетах нивелирует абсолютные значения...  максимум что можно сделать это тренд удалить для поиска каких то сезонных фичей что ли, да и то под вопросом надо ли...

П‌опробуйте и все получиться

library(lubridate)
library(rusquant) #install.packages("rusquant", repos="http://R-Forge.R-project.org")


#для недельных баров, сдвиг на одну дату назад ибо в сша первый день недели это воскресенье
getSymbols("EURUSD",src = "Finam", period="week", from = 0)
eurusdTime <- as.character(ymd(time(EURUSD))-days(1))


eurusdOpen <- as.numeric(EURUSD$EURUSD.Open)


DT <- matrix(c(eurusdTime,eurusdOpen), ncol=2)


write.table(DT,file="table.csv", sep=",", dec=".", row.names = FALSE, col.names = FALSE)

‌‌Правда связи находит мягко говоря странные ))  от хип-хоп форумов до запросов про коней :)  

‌Вопрос как теперь выявить что есть реальная связь а что просто случайное совпадение

Документация по MQL5: Математические функции / MathAbs
Документация по MQL5: Математические функции / MathAbs
  • www.mql5.com
Математические функции / MathAbs - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
mytarmailS:

т‌ам диференциировать не надо, теряется структура ряда и тренд

Точно, да. Гугл так не может, он ищет корреляцию только с другими трендами, а не с их приростами, жаль, получается не так полезно.

mytarmailS:

scale"лить тоже не нужно


‌Нужно, согласно FAQ (mean=0, sd=1, как раз то что scale делает). Хотя судя по графику тренда гугл сам делает scale за вас если вы забыли.

 

http://prntscr.com/eighfp

  франция  ‌‌:)

Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
Причина обращения: