Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2056
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Матрица - размерность массива 2, вектор - одномерный массив. Ничего сложного. НО кто придумал назвать вектором одномерный массив (вернее кто придумал понятно), вот его логику понять видимо не смогу никогда))))
В Учебнике по МТ4 так хорошо всё объяснялось. На пальцах иногда разжёвывали. А тут... порог вхождения слишком велик. Даже просто перечитывая справочник, что такое вектор, что такое матрица, я не понимаю, как их использовать.
В том же примере
//--- генерируем обучающую выборку
if(!CreateData(m_data, m_target, train))
return;
...
...
bool CreateData(matrix &data, matrix &target, const int count){
//--- инициализируем матрицы исходных данных и результатов
if(!data.Init(count, 3) || !target.Init(count, 1))
return false;
//--- заполняем матрицу исходных данных случайными значениями
data.Random(-10, 10);
//--- рассчитываем целевые значения для обучающей выборки
vector X1 = MathPow(data.Col(0) + data.Col(1) + data.Col(1), 2);
vector X2 = MathPow(data.Col(0), 2) + MathPow(data.Col(1), 2) + MathPow(data.Col(2), 2);
if(!target.Col(X1 / X2, 0))
return false;
//--- возвращаем результат
return true;
}
Как это? Куда здесь сувать показания индикатора исторические и фактические, как создать наборы сетов и к ним фактических данных... Какая-то форма записи необычная.
Через цикл в обычный массив загоняешь разницу цен или показания индикаторов: первые 10 значений истории загнял, а последнее - фактическое значение, то есть то, что должно получится. И нейросеть проверяет это. В примерах из здешних статей так и делается, но вот этот шаблон из справочника, он кажется каким-то... более умным, чтоли. Если все пытаются подогнать веса в тестере стратегий, то тут обратное распространение ошибки, круто же.
Но, блин, перепрофилировать данный шаблон под практикум форекса прямо засада
В Учебнике по МТ4 так хорошо всё объяснялось. На пальцах иногда разжёвывали. А тут... порог вхождения слишком велик. Даже просто перечитывая справочник, что такое вектор, что такое матрица, я не понимаю, как их использовать.
В том же примере
//--- генерируем обучающую выборку
if(!CreateData(m_data, m_target, train))
return;
...
...
bool CreateData(matrix &data, matrix &target, const int count){
//--- инициализируем матрицы исходных данных и результатов
if(!data.Init(count, 3) || !target.Init(count, 1))
return false;
//--- заполняем матрицу исходных данных случайными значениями
data.Random(-10, 10);
//--- рассчитываем целевые значения для обучающей выборки
vector X1 = MathPow(data.Col(0) + data.Col(1) + data.Col(1), 2);
vector X2 = MathPow(data.Col(0), 2) + MathPow(data.Col(1), 2) + MathPow(data.Col(2), 2);
if(!target.Col(X1 / X2, 0))
return false;
//--- возвращаем результат
return true;
}
Как это? Куда здесь сувать показания индикатора исторические и фактические, как создать наборы сетов и к ним фактических данных... Какая-то форма записи необычная.
Через цикл в обычный массив загоняешь разницу цен или показания индикаторов: первые 10 значений истории загнял, а последнее - фактическое значение, то есть то, что должно получится. И нейросеть проверяет это. В примерах из здешних статей так и делается, но вот этот шаблон из справочника, он кажется каким-то... более умным, чтоли. Если все пытаются подогнать веса в тестере стратегий, то тут обратное распространение ошибки, круто же.
Но, блин, перепрофилировать данный шаблон под практикум форекса прямо засада
А где Вы вообще взяли этот код? Смотрю в хелпе ME, там как бы и нет таких методов ( .Random) - очень странно, а в коде всплывает.
Вообще там похоже ещё хелп не поспевает за вводимыми функциями, к примеру в хелпе
void matrix.FromBuffer(const int rows, const int cols, const scalar array[], const int count=-1, const int offset=0)
frombuffer
Создает матрицу из одномерного массива
но по факту получаю ошибку
А так функцию можно было бы поменять на нечто такое
В общем как то так запустилось - заполняйте массив своими данными, как угодно. Целевую так же надо переделать, что б заполнялась.
В общем как то так запустилось - заполняйте массив своими данными, как угодно. Целевую так же надо переделать, что б заполнялась.
Спасибо большое, что разобрались! Попробую
В общем как то так запустилось - заполняйте массив своими данными, как угодно. Целевую так же надо переделать, что б заполнялась.
Алексей, подскажите, пожалуйста, ещё, как работать с векторами?
Да белиберда они там делают - возводят в степень числа в столбцах по разному и суммируют, потом делят друг на друга...Для заполнения целевыми матрица target - ей нужен одномерный массив - но я сам не понял, как передать. Возможно, что через вектор только, но как его заполнить - не понятно. Поразбирайтесь со статьёй тут, может поймете лучше меня. Новый дизайн статей не позволяет мне их нормально открывать на нетбуке - может позже ещё посмотрю.
Да белиберда они там делают - возводят в степень числа в столбцах по разному и суммируют, потом делят друг на друга...Для заполнения целевыми матрица target - ей нужен одномерный массив - но я сам не понял, как передать. Возможно, что через вектор только, но как его заполнить - не понятно. Поразбирайтесь со статьёй тут, может поймете лучше меня. Новый дизайн статей не позволяет мне их нормально открывать на нетбуке - может позже ещё посмотрю.
В Учебнике по МТ4 так хорошо всё объяснялось. На пальцах иногда разжёвывали. А тут... порог вхождения слишком велик. Даже просто перечитывая справочник, что такое вектор, что такое матрица, я не понимаю, как их использовать.
В том же примере
//--- генерируем обучающую выборку
if(!CreateData(m_data, m_target, train))
return;
...
...
bool CreateData(matrix &data, matrix &target, const int count){
//--- инициализируем матрицы исходных данных и результатов
if(!data.Init(count, 3) || !target.Init(count, 1))
return false;
//--- заполняем матрицу исходных данных случайными значениями
data.Random(-10, 10);
//--- рассчитываем целевые значения для обучающей выборки
vector X1 = MathPow(data.Col(0) + data.Col(1) + data.Col(1), 2);
vector X2 = MathPow(data.Col(0), 2) + MathPow(data.Col(1), 2) + MathPow(data.Col(2), 2);
if(!target.Col(X1 / X2, 0))
return false;
//--- возвращаем результат
return true;
}
Как это? Куда здесь сувать показания индикатора исторические и фактические, как создать наборы сетов и к ним фактических данных... Какая-то форма записи необычная.
Через цикл в обычный массив загоняешь разницу цен или показания индикаторов: первые 10 значений истории загнял, а последнее - фактическое значение, то есть то, что должно получится. И нейросеть проверяет это. В примерах из здешних статей так и делается, но вот этот шаблон из справочника, он кажется каким-то... более умным, чтоли. Если все пытаются подогнать веса в тестере стратегий, то тут обратное распространение ошибки, круто же.
Но, блин, перепрофилировать данный шаблон под практикум форекса прямо засада
Синтаксиса не знаю. В Дата вместо рандом суете клоз, видимо как то Дата.Массив клоз., А вот с целевыми надо думать, возможно найти на участке массива клоз экстремумы, или через зигзаг пропустить и отобрать, или тупо по три максимальных максимума и минимума с раздвижкой 5-10 баров отобрать.
Хорошо! Гляну,спасибо
Пожалуйста.
Если не получилось, вот пример доковырял...
Если не получилось
Ууу, видать это надолго...
Пожалуйста.
Если не получилось, вот пример доковырял...
Благодарю Вас! Сейчас попробую