Всех приветствую! Кто разбирается в коде mql4, помогите пожалуйста решить проблему: хотел создать примитивного, полуавтоматического мартингейла с небольшим функционалом типа в какую сторону торговать, каким лотом и прочее софт ошибки при тестах не выдает, но в тестере, робот вообще не работает.
Ни одной сделки не открывает, хотя после нажатия на кнопку чтоб начать торговлю - должен запускаться Если у кого-то будет свободные пару минут, гляньте пожалуйста, в чем может быть причина, напишите, как надо, а то я вообще не понимаю
Здравствуйте, подскажите пожалуйста, как сделать так, чтобы при сохранении в metatrader 5 меню файл - сохранить в формате csv, не записывался столбец тиковых объемов?
Здравствуйте уважаемые спецы, может мне кто не будь подсказать как прописать на языке mql4 следующее, есть две линии А, и B, и линия A>B на сто пунктов, или A выше В на сто пунктов
Knelson #: Здравствуйте уважаемые спецы, может мне кто не будь подсказать как прописать на языке mql4 следующее, есть две линии А, и B, и линия A>B на сто пунктов, или A выше В на сто пунктов
и скрипт вырубается, повторные запуски не помогают и как я прочитал в комментариях
это нормальная ситуация и значит, что нет данных с сервера.
Однако я не до конца понял как в этом скрипте прописан путь к файлам данных.
В документации MQL5 написано:
Например, данные по символу EURUSD с торгового сервера MetaQuotes-Demo будут находиться в папке каталог_терминала\bases\MetaQuotes-Demo\history\EURUSD\.
И у меня торговый сервер MetaQuotes-Demo и там действительно есть файлы с разрешением .hcc и подкаталог \cache с файлами типа H4.hc
Но в скрипте initial_data.mq5,только одно место, где прописан путь
PrintFormat("Correlation coefficients saved to file %s\\Files\\%s",
bobozel1 #: Однако я не до конца понял как в этом скрипте прописан путь к файлам данных.
#define FileName"correlation.csv"//+------------------------------------------------------------------+//| Внешние параметры |//+------------------------------------------------------------------+inputdatetime Start = D'2015.01.01 00:00:00'; // Начало периодаinputdatetime End = D'2020.12.31 23:59:00'; // Конец периода
//--- Открываем файл для записи данныхint handle = FileOpen(FileName, FILE_WRITE | FILE_CSV | FILE_ANSI, "\t", CP_UTF8);
if(handle == INVALID_HANDLE)
{
PrintFormat("Error of open file %s: %d", FileName, GetLastError());
return;
}
FileOpen
Параметры
open_flags
[in] комбинация флагов, определяющая режим работы с файлом. Флаги определены следующим образом: FILE_READ файл открывается для чтения FILE_WRITE файл открывается для записи FILE_BIN двоичный режим чтения-записи (без преобразования из строки и в строку) FILE_CSV файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем) FILE_TXT простой текстовый файл (тот же csv, однако разделитель не принимается во внимание) FILE_ANSI строки типа ANSI (однобайтовые символы) FILE_UNICODE строки типа UNICODE (двухбайтовые символы) FILE_SHARE_READ совместный доступ по чтению со стороны нескольких программ FILE_SHARE_WRITE совместный доступ по записи со стороны нескольких программ FILE_COMMON расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files.
FileOpen
Примечание
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы".
Если файл требуется прочитать в определенной кодировке (указан параметр codepage со значением кодовой страницы), то необходимо обязательно выставить флаг FILE_ANSI. Без указания флага FILE_ANSI чтение текстового файла будет происходить в Юникоде без какого-либо преобразования.
Файл открывается в папке клиентского терминала в подпапке MQL5\Files (или каталог_агента_тестирования\MQL5\Files в случае тестирования). Если среди флагов указан FILE_COMMON, то файл открывается в общей папке всех клиентских терминалов \Terminal\Common\Files.
Можно открывать "именованные каналы" по следующим правилам:
Имя канала - строка, которая должна иметь вид: "\\servername\pipe\pipename", где servername - имя сервера в сети, а pipename - имя канала. Если каналы используются на одном и том же компьютере, имя сервера может быть опущено, но вместо него нужно поставить точку: "\\.\pipe\pipename". Клиент, который пытается соединиться с каналом, должен знать его имя.
Необходимо вызывать FileFlush() и FileSeek() на начало файла между последовательными операциями чтения из канала и записи в канал.
В приведенных строках используется специальный символ обратная косая черта '\', поэтому при написании имени в MQL5 программе '\' необходимо удваивать, то есть вышеприведенный пример написать в коде как "\\\\servername\\pipe\\pipename".
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.
Здравствуйте, это образно, а по сути есть два мувинга MA1 и МА2 как прописать что один мувинг больше другово на к примеру 10 пунктов ? МА1>МА2 ........
Knelson #: Здравствуйте, это образно, а по сути есть два мувинга MA1 и МА2 как прописать что один мувинг больше другово на к примеру 10 пунктов ? МА1>МА2 ........
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Думаю, надо упростить условия и попробовать использовать в начале штатные методы оптимизации, без дополнительных пользовательских функционалов.
Наконец, выяснилось, какой случайный фактор воздействовал на результаты: это задержка для эмуляции проскальзываний и реквотов.
В моих расчетах было 100мс.
После установки "без задержек, идеальное исполнение" все стало стабильным: на одинаковых исходных данных и результат оптимизации был одинаковым.
Спасибо за Вашу помощь и удачи!
Наконец, выяснилось, какой случайный фактор воздействовал на результаты: это задержка для эмуляции проскальзываний и реквотов.
В моих расчетах было 100мс.
После установки "без задержек, идеальное исполнение" все стало стабильным: на одинаковых исходных данных и результат оптимизации был одинаковым.
Спасибо за Вашу помощь и удачи!
Рад за Вас! Думал про задержку, но решил, что мало вероятно её использование.
Всех приветствую! Кто разбирается в коде mql4, помогите пожалуйста решить проблему: хотел создать примитивного, полуавтоматического мартингейла с небольшим функционалом типа в какую сторону торговать, каким лотом и прочее софт ошибки при тестах не выдает, но в тестере, робот вообще не работает.
Ни одной сделки не открывает, хотя после нажатия на кнопку чтоб начать торговлю - должен запускаться Если у кого-то будет свободные пару минут, гляньте пожалуйста, в чем может быть причина, напишите, как надо, а то я вообще не понимаю
Заранее благодарю
Код во вложении в блокноте
Здравствуйте уважаемые спецы, может мне кто не будь подсказать как прописать на языке mql4 следующее, есть две линии А, и B, и линия A>B на сто пунктов, или A выше В на сто пунктов
Добрый день,
Пытаюсь запустить первый скрипт из книги "Нейросети в алготрейдинге на MQL5", который формирует csv файл.
Называется initial_data.mq5
При запуске скрипта на первом шаге:
if(CopyClose(_Symbol, PERIOD_M5, Start, End, close) <= 0 ||
CopyOpen(_Symbol, PERIOD_M5, Start, End, open) <= 0 ||
CopyHigh(_Symbol, PERIOD_M5, Start, End, high) <= 0 ||
CopyLow(_Symbol, PERIOD_M5, Start, End, low) <= 0)
return;
CopyClose всегда равен -1
и скрипт вырубается, повторные запуски не помогают и как я прочитал в комментариях
это нормальная ситуация и значит, что нет данных с сервера.
Однако я не до конца понял как в этом скрипте прописан путь к файлам данных.
В документации MQL5 написано:
Например, данные по символу EURUSD с торгового сервера MetaQuotes-Demo будут находиться в папке каталог_терминала\bases\MetaQuotes-Demo\history\EURUSD\.
И у меня торговый сервер MetaQuotes-Demo и там действительно есть файлы с разрешением .hcc и подкаталог \cache с файлами типа H4.hc
Но в скрипте initial_data.mq5,только одно место, где прописан путь
PrintFormat("Correlation coefficients saved to file %s\\Files\\%s",
TerminalInfoString(TERMINAL_DATA_PATH), FileName);
Я вывел TERMINAL_DATA_PATH
2024.06.16 22:53:39.982 path (EURUSD,M5) dataPath =C:\Users\HP\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
Что делать, чтобы правильно прописать путь к этим файлам или он автоматически должен их по логике MQL5 подцеплять из каталога терминала?
Как все таки скачать данные в csv файл?
Однако я не до конца понял как в этом скрипте прописан путь к файлам данных.
Параметры
open_flags
[in] комбинация флагов, определяющая режим работы с файлом. Флаги определены следующим образом:
FILE_READ файл открывается для чтения
FILE_WRITE файл открывается для записи
FILE_BIN двоичный режим чтения-записи (без преобразования из строки и в строку)
FILE_CSV файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем)
FILE_TXT простой текстовый файл (тот же csv, однако разделитель не принимается во внимание)
FILE_ANSI строки типа ANSI (однобайтовые символы)
FILE_UNICODE строки типа UNICODE (двухбайтовые символы)
FILE_SHARE_READ совместный доступ по чтению со стороны нескольких программ
FILE_SHARE_WRITE совместный доступ по записи со стороны нескольких программ
FILE_COMMON расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files.
Примечание
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы".
Если файл требуется прочитать в определенной кодировке (указан параметр codepage со значением кодовой страницы), то необходимо обязательно выставить флаг FILE_ANSI. Без указания флага FILE_ANSI чтение текстового файла будет происходить в Юникоде без какого-либо преобразования.
Файл открывается в папке клиентского терминала в подпапке MQL5\Files (или каталог_агента_тестирования\MQL5\Files в случае тестирования). Если среди флагов указан FILE_COMMON, то файл открывается в общей папке всех клиентских терминалов \Terminal\Common\Files.
Можно открывать "именованные каналы" по следующим правилам:
В приведенных строках используется специальный символ обратная косая черта '\', поэтому при написании имени в MQL5 программе '\' необходимо удваивать, то есть вышеприведенный пример написать в коде как "\\\\servername\\pipe\\pipename".
Более подробно о работе с именованными каналами можно прочитать в статье "Связь с MetaTrader 5 через именованные каналы без применения DLL"
Как эти линии появились?
Здравствуйте, это образно, а по сути есть два мувинга MA1 и МА2 как прописать что один мувинг больше другово на к примеру 10 пунктов ? МА1>МА2 ........