Я совсем потерялся - страница 2

 
zortharg: Я не просил никого создавать что-то коммерчески ценное для меня. Я не прошу кого-то "написатьмой метод ЗА МЕНЯ", WHRoeder. Мне просто нужна отправная точка.
  1. Похоже, что так и есть.
    zortharg: Я спрашивал, напишет ли кто-нибудь такую книгу.
  2. Я дал вам три ссылки для начала: learn to code много отправных точек.
 
zortharg:

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


Смотрите здесь
 

Я на пороге того, чтобы собрать все воедино. Но я еще не дошел до конца. Есть вещи, которые не имеют никакого смысла. Например:

https://docs.mql4.com/array/ArrayCopySeries

Это не имеет смысла. Что если объявленный мною массив не будет иметь одинаковый размер? В принципе, гарантируется, что он не будет таким. Я не хочу выходить за конец массива, поэтому я могу объявить массив больше, чем я ДУМАЮ, но что, если он когда-нибудь будет больше? А что, если он меньше? Если в "массиве" больше записей, чем данных о валюте, то оставшиеся заполняются 0? А что происходит для массивов с двойным индексом? Например, предположим, я объявляю массив размером [16384][6], а данные, которые я хочу скопировать в [0:16383,0], имеют длину 3000. Как бы я это сделал? Нужно ли мне установить еще одну переменную массива на данные о валюте, которая будет однократно индексированной переменной (размером 16384, а не 16384 x 6), и тогда в ее первые 3000 записей будут записаны данные о валюте, а в записи с 3000 по 16383 - 0, а затем я должен буду переместить содержимое временной переменной в массив размера [16384][6]? Вот такая у меня сейчас головоломка.

 
zortharg:

Я на пороге того, чтобы собрать все воедино. Но я еще не дошел до конца. Есть вещи, которые не имеют никакого смысла. Например:

https://docs.mql4.com/array/ArrayCopySeries

Это не имеет смысла. Что, если объявленный мною массив не будет того же размера? В принципе, гарантируется, что он не будет таким. Я не хочу выходить за пределы массива, поэтому я могу объявить массив больше, чем я ДУМАЮ, но что, если он когда-нибудь будет больше? А что, если он меньше? Если в "массиве" больше записей, чем данных о валюте, то оставшиеся заполняются 0? А что происходит для массивов с двойным индексом? Например, предположим, я объявляю массив размером [16384][6], а данные, которые я хочу скопировать в [0:16383,0], имеют длину 3000. Как бы я это сделал? Нужно ли мне установить еще одну переменную массива на данные о валюте, которая будет однократно индексированной переменной (размером 16384, а не 16384 x 6), и тогда в ее первые 3000 записей будут записаны данные о валюте, а в записи с 3000 по 16383 - 0, а затем я должен буду переместить содержимое временной переменной в массив размера [16384][6]? Вот такая у меня сейчас головоломка.

Я думаю, вам стоит еще раз прочитать документацию. Там говорится, цитирую: "Для массива данных не выделяется реальная память и ничего не копируется".

Он просто устанавливает ссылку, поэтому вы не устанавливаете размер массива назначения. Вы просто объявляете его. Посмотрите еще раз на пример в документации. В объявлении нет размера.

datetime daytimes[];
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
 

Значит, я должен загружать исторические цены по одной за раз с помощью iclose? https://docs.mql4.com/series/iClose Проблема с этим, как я вижу, заключается в том, что данные могут обновляться, пока я нахожусь в середине загрузки. Было бы очень хорошо загружать все в виде блока. Я предполагаю, что могу загрузить время с помощью iTime, ПОТОМ использовать iclose и ПОТОМ снова использовать iTime на том же индексе, и если он изменился, то начался новый интервал времени бара, и мне нужно вернуться на номер индекса назад. Правильно ли я рассуждаю или я чего-то не понимаю?

 

Я не думаю, что мы говорим на одном языке. Сначала вы спрашиваете о функции ArrayCopySeries, теперь вы хотите загрузить все данные через iClose.

Нет необходимости загружать все данные - они всегда доступны для вас в любое время, когда вам это потребуется.

Что вы пытаетесь сделать?

Зачем вам нужно копировать все данные в массиве в другой массив, если вы уже можете получить полный доступ к ним из первого?

Вы пытаетесь передать информацию во внешнюю DLL для обработки? Если да, то вам следует использовать функцию "CopyRates" - https://www.mql5.com/en/docs/series/copyrates.

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

 

Я решил подробно перечитать ваше первое сообщение, чтобы понять, чего именно вы пытаетесь добиться, и понял, что вы действуете совершенно неправильно.

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

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

Также прочитайте различные статьи, объясняющие, как можно подойти к написанию советника:

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

 

Никто не дал мне ни малейшего представления о том, как что-либо сделать, они говорят мне, чтобы я сам разобрался в этом или заплатил кому-то другому, прочитайте первые несколько сообщений в этой теме и вы увидите это. Наглость людей на этом форуме! Они отказываются мне что-либо сказать, а потом насмехаются надо мной за то, что я еще не знаю о "нормальных методах". О, расскажите! Но это подозрительно не похоже на идеал в любом случае. То, что я пытаюсь сделать, это загрузить данные валютного рынка в оперативную память моего компьютера, произвести вычисления, а затем заставить мой компьютер загрузить ордера на покупку и продажу для торговли на валютном рынке. Вот что я хочу сделать. Если вычисления производит не мой компьютер, то что же тогда производит вычисления? Какой-то удаленный компьютер? Я не могу отправлять и получать данные через Интернет каждый раз, когда хочу получить доступ к исторической цене, если я хочу получить доступ к этой цене 1000 раз в процессе вычислений, время, которое потребуется для доступа к ней, замедлит вычисления в тысячи или миллионы раз. Это одна из причин, почему в архитектуре компьютеров существует оперативная память, чтение и запись на жесткий диск занимают гораздо больше времени. Здесь тот же принцип, мне нужно хранить данные в массиве на моем компьютере, потому что делать запрос через Интернет каждый раз, когда я хочу получить доступ к определенной части информации, плохо.

Какое у вас представление о том, что должен делать торговый робот?

 
zortharg:

Никто не дал мне ни малейшего понятия о том, как что-либо сделать, они говорят мне выяснить это самому или заплатить кому-то другому, прочитайте первые несколько сообщений в этой теме и вы увидите это. Наглость людей на этом форуме! Они отказываются мне что-либо сказать, а потом насмехаются надо мной за то, что я еще не знаю о "нормальных методах". О, расскажите! Но это подозрительно не похоже на идеал в любом случае. То, что я пытаюсь сделать, это загрузить данные валютного рынка в оперативную память моего компьютера, произвести вычисления, а затем заставить мой компьютер загрузить ордера на покупку и продажу для торговли на валютном рынке. Вот что я хочу сделать. Если вычисления производит не мой компьютер, то что же тогда производит вычисления? Какой-то удаленный компьютер? Я не могу отправлять и получать данные через Интернет каждый раз, когда хочу получить доступ к исторической цене, если я хочу получить доступ к этой цене 1000 раз в процессе вычислений, время, которое потребуется для доступа к ней, замедлит вычисления в тысячи или миллионы раз. Это одна из причин, почему в архитектуре компьютеров существует оперативная память, чтение и запись на жесткий диск занимают гораздо больше времени. Здесь тот же принцип, мне нужно хранить данные в массиве на моем компьютере, потому что делать запрос через Интернет каждый раз, когда я хочу получить доступ к определенной части информации, плохо.

Какое у вас представление о том, что должен делать торговый робот?

MetaTrader и среда MQL работают не так! Как я уже сказал! Не нужно заново загружать данные в оперативную память, потому что это уже было сделано за вас. Прекратите пытаться научить нас кодировать на MQL4. Это вам нужно отбросить свои предвзятые идеи о том, как писать код, и сначала узнать, какие инструменты и среда у вас под рукой.

Если вы не хотите, чтобы люди на вас ругались, то не ленитесь и прочитайте документацию (от начала до конца). На этом сайте есть много ссылок на документацию и примеры кода.

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

Вы не ребенок и не нуждаетесь в том, чтобы вас кормили с ложечки. Учитесь, читая совершенно БЕСПЛАТНУЮ документацию здесь и на многих других сайтах. Вы даже можете пойти и купить книги о том, как написать советника на MQL4 или MQL5 (например, "Программирование советников" Эндрю Р. Янга).

Однако если вы ищете учителя, то это совсем другое дело. Обычно вы платите за услуги "личного тренера". Готовы ли вы платить? Я уверен, что многие согласились бы на такое предложение в разделе " Работа"(https://www.mql5.com/en/job).

Кроме того, самым первым человеком, оставившим здесь комментарий для вас, был "ubzen", и первое, что он сделал, это порекомендовал вам начать с чтения "Вводной книги" и "Справочной документации", поскольку вы утверждали, что уже хорошо программируете на других языках. ОЧЕНЬ РАЗУМНЫЙ СОВЕТ!

И еще одно - если бы вы использовали свои маленькие серые клеточки и сделали поиск здесь, в разделе "Статьи", вы бы нашли эту очень старую, но все еще актуальную статью:

Итак, перестаньте жаловаться и лениться и займитесь "Исследованиями" в рамках НИОКР. Вы знакомы с этим, не так ли?

 
zortharg:

Никто не дал мне ни малейшего понятия о том, как что-либо сделать, они говорят мне, чтобы я сам разобрался в этом или заплатил кому-то другому, прочитайте первые несколько сообщений в этой теме и вы увидите это. Наглость людей на этом форуме! Они отказываются мне что-либо сказать, а потом насмехаются надо мной за то, что я еще не знаю о "нормальных методах". О, расскажите! Но это подозрительно не похоже на идеал в любом случае.

Почему они должны вам помогать? Почему вы думаете, что у них есть какие-то обязательства перед вами? Они такие же пользователи, как и вы. ... кому вы помогли на этом форуме?
Причина обращения: