Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 240
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1) - Эта часть открывает файл 11112222.txt для чтения с него данных:
//=================================BUY=========================================
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
2) - Далее идет условие, если handle2>0
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
3) - Вот эта часть для чего я не понял:
Print(FileReadString(handle2));
4) - Эта часть закрывает файл:
FileClose(handle2); // закрытие текстового файла
5) - Так как условие handle2>0 выполнено, то есть файл 11112222.txt содержит в себе 1, то открывается ордер на покупку:
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
1) открывает файл, но не читает его содержимое.
2) хендл файла ВСЕГДА больше нуля. Соответственно условие будет выполнено всегда, если файл существует независимо от его содержимого.
3) Это как раз и есть чтение содержимого файла. Правда не понимаю почему сделано чтение строки если прочесть надо число... Но всё-же это уже может относиться к другой проблеме. А сейчас главное расписать последовательность действий.
4) Конечно файл надо закрыть и он закрывается.
И только следующим пунктом надо поставить условие в зависимости от прочитанного в пункте 3, но никак не вторым пунктом.
1) открывает файл, но не читает его содержимое.
2) хендл файла ВСЕГДА больше нуля. Соответственно условие будет выполнено всегда, если файл существует независимо от его содержимого.
3) Это как раз и есть чтение содержимого файла. Правда не понимаю почему сделано чтение строки если прочесть надо число... Но всё-же это уже может относиться к другой проблеме. А сейчас главное расписать последовательность действий.
4) Конечно файл надо закрыть и он закрывается.
И только следующим пунктом надо поставить условие в зависимости от прочитанного в пункте 3, но никак не вторым пунктом.
Не-е-е... INVALID_HANDLE имеет значение -1
Вот когда он получит ошибку открытия файла, тогда он и получит сигнал на продажу...
Прочие константы
Специальные константы, используемые для указания состояния параметров и переменных. Mогут быть следующими величинами:
Константа
Описание
Значение
NULL
Ноль любого типа. Также указывает пустое состояние строки
0
EMPTY
Указывает пустое состояние параметра
-1
EMPTY_VALUE
Пустое значение в индикаторном буфере
2147483647 (0x7FFFFFFF)
CLR_NONE, clrNONE
Отсутствие цвета. Значение по умолчанию, указатель пустого значения. Используется в пользовательских индикаторах
-1
CHARTS_MAX
Максимально возможное количество одновременно открытых графиков в терминале
100
INVALID_HANDLE
Некорректный хэндл
-1
IS_DEBUG_MODE
Признак работы mq5-программы в режиме отладки
в режиме отладки не равно нулю, в противном случае 0
IS_PROFILE_MODE
Признак работы mq5-программы в режиме профилирования
в режиме профилирования не равно нулю, в противном случае 0
WHOLE_ARRAY
Означает количество элементов, оставшееся до конца массива, то есть, будет обработан весь массив
0
WRONG_VALUE
Константа может неявно приводиться к типу любого перечисления
-1
Не Видел эту тему, потому создал новую. Посмотрите пожалуйста https://www.mql5.com/ru/forum/206126
1) открывает файл, но не читает его содержимое.
2) хендл файла ВСЕГДА больше нуля. Соответственно условие будет выполнено всегда, если файл существует независимо от его содержимого.
3) Это как раз и есть чтение содержимого файла. Правда не понимаю почему сделано чтение строки если прочесть надо число... Но всё-же это уже может относиться к другой проблеме. А сейчас главное расписать последовательность действий.
4) Конечно файл надо закрыть и он закрывается.
И только следующим пунктом надо поставить условие в зависимости от прочитанного в пункте 3, но никак не вторым пунктом.
Уважаемые гуру MQL - если вам не трудно, то помогите мне пожалуйста с этим кодом, пол дня ковыряю поисковики но подобного найти не могу.
Там же походу дело в нескольких строчках, для знающего - дело трех минут)))
Как в dll в c++ принять строку из mql4 и переделать ее в char*?
Вот такой код же правильный?Всем привет! Подскажите пожалуйста, написал советник где-то год назад, работал все нормально было. Все это время не пользовался им. Сейчас при установке на график ничего не происходит. Может это быть из-за того что поменялся Build? Сейчас Build терминала 1090.
Там же походу дело в нескольких строчках, для знающего - дело трех минут)))
Потратил 2 часа. Надо систему проверять по частям. Запустите оба советника сразу на соседних графиках - все будет видно. Советник 1 = Запись в файл
//+------------------------------------------------------------------+ //| Запись в файл -1 0 1 1.mq4 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Инициализация - установка интервала таймера | //+------------------------------------------------------------------+ void OnInit() { EventSetTimer(7); } //+------------------------------------------------------------------+ //| Деинициализация - удаление метки | //+------------------------------------------------------------------+ void OnDeinit(const int Зачем) { ObjectDelete("Семафор"); } //+------------------------------------------------------------------+ //| По таймеру каждые 7 секунд | //+------------------------------------------------------------------+ void OnTimer() { int x=0; if(rand()<20000) { x=1; if(rand()<16000) x=-1; } ObjectCreate("Семафор",OBJ_LABEL,0,0,0); ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0); // Создание ObjectSet("Семафор", OBJPROP_CORNER, 3); // В правый нижний угол ObjectSet("Семафор", OBJPROP_XDISTANCE, 0); // Координата X ObjectSet("Семафор", OBJPROP_YDISTANCE, 40); // Координата Y ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow); ChartRedraw(0); Sleep(2000); int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE); if(handle == -1) { ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon); ChartRedraw(0); return; } ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue); ChartRedraw(0); FileWriteInteger(handle, x, 4); Sleep(2000); ObjectSetText("Семафор","",20,"Arial",White); ChartRedraw(0); FileClose(handle); }
Советник 2 = Чтение файла
//+------------------------------------------------------------------+ //| Чтение файла -1 0 1 2.mq4 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Инициализация - установка интервала таймера | //+------------------------------------------------------------------+ void OnInit() { EventSetTimer(1); } //+------------------------------------------------------------------+ //| Деинициализация - удаление метки | //+------------------------------------------------------------------+ void OnDeinit(const int Зачем) { ObjectDelete("Семафор"); } //+------------------------------------------------------------------+ //| По таймеру каждую секунду | //+------------------------------------------------------------------+ void OnTimer() { int x=0; ObjectCreate("Семафор",OBJ_LABEL,0,0,0); ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0); // Создание ObjectSet("Семафор", OBJPROP_CORNER, 2); // В правый нижний угол ObjectSet("Семафор", OBJPROP_XDISTANCE, 0); // Координата X ObjectSet("Семафор", OBJPROP_YDISTANCE, 40); // Координата Y ObjectSetText("Семафор","",20,"Arial",Yellow); ChartRedraw(0); Sleep(500); int handle = FileOpen("123.txt", FILE_BIN | FILE_READ); // Получаем НОМЕР файла в ОС if(handle == -1) // Если производится запись, файл занят, будет ошибка { ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon); ChartRedraw(0); return; } x = FileReadInteger(handle,4); // Получаем СОДЕРЖИМОЕ файла ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue); ChartRedraw(0); FileClose(handle); }
Всем привет! Подскажите пожалуйста, написал советник где-то год назад, работал все нормально было. Все это время не пользовался им. Сейчас при установке на график ничего не происходит. Может это быть из-за того что поменялся Build? Сейчас Build терминала 1090.
Вполне возможно, было много нововведений. Начните с проверки на ошибки при компиляции. С директивой #PropertyStrict
Вполне возможно, было много нововведений. Начните с проверки на ошибки при компиляции. С директивой #PropertyStrict
Нет такой директивы...
Такая есть:
Вполне возможно, было много нововведений. Начните с проверки на ошибки при компиляции. С директивой #PropertyStrict
Нет такой директивы...
Такая есть:
Но я не могу открыть файл советника который на компе с расширением ex4, но через MetaEditor этого файла нет. Подскажите пожалуйста в чем может быть причина.