Обсуждение статьи "Самооптимизирующийся советник на языках MQL5 и Python (Часть III): Реализация алгоритма Boom 1000"

 

Опубликована статья Самооптимизирующийся советник на языках MQL5 и Python (Часть III): Реализация алгоритма Boom 1000:

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

Мы проанализируем все синтетические рынки Deriv по отдельности, начав с самого известного — Boom 1000. Boom 1000 печально известен своим нестабильным и непредсказуемым поведением. Рынок характеризуется медленными, короткими и одинаковыми по размеру медвежьими свечами, за которыми случайным образом следуют бычьи свечи размером с небоскреб. Смягчить последствия бычьих свечей особенно сложно, поскольку тики, связанные со свечой, обычно не отправляются на клиентский терминал, а это означает, что все стоп-лоссы каждый раз срабатывают с гарантированным проскальзыванием.

Поэтому большинство успешных трейдеров используют стратегии, в основе которых лежит только покупка при торговле Boom 1000. Boom 1000 может падать в течение 20 минут на графике M1 и отыграть всё это падение за одну свечу! Таким образом, учитывая чрезмерно выраженный бычий характер рынка, успешные трейдеры придают больший вес покупке на Boom 1000.

Автор: Gamuchirai Zororo Ndawana

 
MetaQuotes:
Мы проанализируем все синтетические рынки Deriv по отдельности, начав с самого известного — Boom 1000.

Большое спасибо за статью! Давно присматриваюсь к этим индексам, но не знал, с какого боку к ним подступиться.

Пожалуйста, продолжайте!

 

#Instatiate the model model = MLPClassifier(hidden_layer_sizes=(30,10),max_iter=200) #Cross validate the model for i,(train,test) in enumerate(tscv.split(train_X)): model.fit(train_X.loc[train[0]:train[-1],:],ohlc_train_y.loc[train[0]:train[-1]]) validation_accuracy.iloc[i,0] = accuracy_score(ohlc_train_y.loc[test[0]:test[-1]],model.predict(train_X.loc[test[0]:test[-1],:]))


--------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[25], line 5 3 #Cross validate the model 4 for i,(train,test) in enumerate(tscv.split(train_X)): ----> 5 model.fit(train_X.loc[train[0]:train[-1],:],ohlc_train_y.loc[train[0]:train[-1]]) 6 validation_accuracy.iloc[i,0] = accuracy_score(ohlc_train_y.loc[test[0]:test[-1]],model.predict(train_X.loc[test[0]:test[-1],:])) File c:\Python\ocrujenie\.ordi\Lib\site-packages\sklearn\base.py:1389, in _fit_context.<locals>.decorator.<locals>.wrapper(estimator, *args, **kwargs) 1382 estimator._validate_params() 1384 with config_context( 1385 skip_parameter_validation=( 1386 prefer_skip_nested_validation or global_skip_validation 1387 ) 1388 ): -> 1389 return fit_method(estimator, *args, **kwargs) File c:\Python\ocrujenie\.ordi\Lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py:754, in BaseMultilayerPerceptron.fit(self, X, y) 736 @_fit_context(prefer_skip_nested_validation=True) 737 def fit(self, X, y): 738 """Fit the model to data matrix X and target(s) y. 739 740 Parameters (...) 752 Returns a trained MLP model. 753 """
...
476 "Found input variables with inconsistent numbers of samples: %r" 477 % [int(l) for l in lengths] 478 ) ValueError: Found input variables with inconsistent numbers of samples: [4139, 4133]

Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...


я испробовал несколько инструментов и на каждом ваша модель выдает ошибку из-за несоответствия размеров входных данных (X) и целевых переменных (y).
 
Janis Ozols # :

Большое спасибо за статью! Я давно анализировал эти индексы, но не был уверен, с какой стороны к ним подойти.

Пожалуйста, продолжайте!

Не за что, Янис.

Я обязательно продолжу. Многое нужно осветить, но я найду время.

 
Aliaksandr Kazunka # :

#Установка модели model = MLPClassifier(hidden_layer_sizes=(30,10),max_iter=200) #Кросс-валидация модели for i,(train,test) in enumerate(tscv.split(train_X)): model.fit(train_X.loc[train[0]:train[-1],:],ohlc_train_y.loc[train[0]:train[-1]]) validation_accuracy.iloc[i,0] = accuracy_score(ohlc_train_y.loc[test[0]:test[-1]],model.predict(train_X.loc[test[0]:test[-1],:]))


------------------------------------------------------------------------------ ValueError Traceback (most recent call last) Cell In[25] , line 5 3 #Cross validate the model 4 for i,(train,test) in enumerate (tscv.split(train_X)): ----> 5 model.fit(train_X.loc[train[ 0 ] :train[ -1 ],:],ohlc_train_y.loc[ train [ 0 ] :train [ -1 ] ] ) 6 validation_accuracy.iloc[i, 0 ] = accuracy_score(ohlc_train_y.loc[test[ 0 ]:test[ -1 ] ] ,model.predict(train_X.loc[test[ 0 ]:test [ -1 ], :])) Файл c:\Python\ocrujenie\.ordi\Lib\site-packages\sklearn\base.py:1389 , in _fit_context.<locals>.decorator.<locals>.wrapper (estimator, *args, **kwargs) 1382 estimator._validate_params() 1384 с config_context( 1385 skip_parameter_validation=( 1386 prefer_skip_nested_validation or global_skip_validation 1387 ) 1388 ) -> 1389 return fit_method(estimator, *args, **kwargs) Файл c:\Python\ocrujenie\.ordi\Lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py:754 , in BaseMultilayerPerceptron.fit (self, X, y) 736 @_fit_context ( prefer_skip_nested_validation=True ) 737 def fit ( self , X , y): 738 " " " Подгонка модели к данным матрица
...
476 "Input variables found with inconsistent number of samples: %r " 477 % [ int (l) for l in lengths] 478 ) ValueError : Входные переменные с несоответствующим количеством выборок: [4139, 4133]

Выводимые данные усечены. Просмотрите как прокручиваемый элемент или откройте в текстовом редакторе . Настройте параметры вывода ячеек .. .


Я попробовал несколько инструментов, и в каждом из них ваша модель выдает ошибку из-за несоответствия размеров входных данных (X) и целевых переменных (y).

Здравствуйте, Александр, вы можете использовать код в качестве шаблона, а затем внести необходимые изменения на своей стороне. Я бы также рекомендовал вам попробовать разные индикаторы, попробовать разные вариации общей идеи, изложенной в статье. Это поможет нам быстрее понять глобальную истину.