Пожалуйста разместите код в сообщении правильно: Правильно вставляем код на форуме
Возможно это поможет: https://www.mql5.com/ru/docs/basis/types/object_pointers
- www.mql5.com
Это как упражнение по программированию надеюсь? Если да, то похвально.
Вы же не собираетесь ЭТО использовать в торговле? Если да, то :
Есть более надежные и проверенные варианты реализации нейросетей.
Поройтесь по статьям и форуму на этом сайте.
Удачи
Добрый день коллеги!
Есть задача: перевести код нейросети написанный на С++ в MQL5.
На этом куске кода у меня ступор:
Желтым выделил строчки непонятные мне.
Может кто нибудь объяснить логику данного кода?
(я понимаю что * это ссылка на ячейку, но что значит строчка выделенная красным я не понимаю)
Или как бы это выглядело в MQL5, это я пойму))
ещё одна ссылка после которой должно настать просветление https://www.mql5.com/ru/articles/36
MLPP04Acts[40+u] += *w++ * MLPP04Acts[0+i]
*w++ разыменовывание указателя, т.е. то значение которое находится по адресу w нужно инкрементировать )
обычно вместе с указателями сразу изучают и ссылки, если будет попадатся такой значёк "&" в коде, боятся его не нужно ) http://www.quizful.net/post/cpp-for-beginners-pointers-and-references
- 2010.03.25
- MetaQuotes Software Corp.
- www.mql5.com
*w++ разыменовывание указателя, т.е. то значение которое находится по адресу w нужно инкрементировать )
С фига ли?
Инкремент более приоритетная операция - здесь увеличится указатель.
Смысл такой: получаем данные по указателю, после этого указатель переводим на следующий объект.
А че ж простые указатели тут в mql5 не пашут? А я то думал будто mql5 срисован с С++ на все сто. Размечтался....
ок, поехали
double *w = MLPP04Weights, *t = MLPP04Thresholds;
-- как бы w и t указатели на массивы MLPP04Weights и MLPP04Thresholds
точнее
w это MLPP04Weights[0]
t это MLPP04Thresholds[0]
for ( i=0; i < 40; ++i ) MLPP04Acts[40+u] += *w++ * MLPP04Acts[0+i]; /* Subtract threshold */ MLPP04Acts[40+u] -= *t++;
-- получение значений из массивов с последующим переходом на следующий элемент, короче перевожу ;)
указатели double *w, *t заменяем на простые индексы
int w =0;
int t=0;
и далее по тексту используем их как индексы массивов
for ( i=0; i < 40; ++i )
MLPP04Acts[40+u] += MLPP04Weights[w++] * MLPP04Acts[0+i];
/* Subtract threshold */
MLPP04Acts[40+u] -= MLPP04Thresholds[t++];
по идее результат будет аналогичным ;)
Какие индексы? Это веса и пороги сети. Их на массивы переделывать надо.
веса, пороги это и есть массивы ;)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день коллеги!
Есть задача: перевести код нейросети написанный на С++ в MQL5.
На этом куске кода у меня ступор:
Желтым выделил строчки непонятные мне.
Может кто нибудь объяснить логику данного кода?
(я понимаю что * это ссылка на ячейку, но что значит строчка выделенная красным я не понимаю)
Или как бы это выглядело в MQL5, это я пойму))