Ответить
10.05.2016, 14:29
Аватар для Vanek_V
Vanek_V Vanek_V вне форума Интересующийся
Регистрация: 23.03.2015 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию ПОМОГИТЕ НАЧИНАЮЩЕМУ

Подскажите пожалуйста как в MQL 4 прописать условие, чтобы советник проверял динамику рынка в определенный промежуток времени (например, нахождение точек экстремума только в период с 01:00 до 13:00 каждого дня, а не за весь день)?
Если можно пропишите кодом.
Заранее спасибо.
10.05.2016, 17:53
Аватар для officialboob
officialboob officialboob вне форума Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,262
Поблагодарили 1,302 раз(а) / Репутация: 1261
Подскажите пожалуйста как в MQL 4 прописать условие, чтобы советник проверял динамику рынка в определенный промежуток времени (например, нахождение точек экстремума только в период с 01:00 до 13:00 каждого дня, а не за весь день)?
Если можно пропишите кодом.
Заранее спасибо.

Активация функции:

PHP код:
if(isTradeTimeInt(01,00,13,00)) {

//здесь любой код, который который должен работать с ограничением по времени



Функция:

PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени. *испр.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0int mb=0int he=0int me=0) {
  
datetime dbde;           // Время начала и окончания работы
  
int      hc;               // Часы текущего времени торгового сервера

  
db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
  
de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
  
hc=TimeHour(TimeCurrent());
  if (
db>=de) {
    if (
hc>=hede+=24*60*60; else db-=24*60*60;
  }

  if (
TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(
False);

Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!
17.05.2016, 08:38
Аватар для Andrew9999
Andrew9999 Andrew9999 вне форума Прохожий
Регистрация: 17.05.2016 / Сообщений: 1
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию mgl4 запись в файл

Подскажите пожалуйста как записывать строку в файл через каждую минуту? Не получается сделать задержку времени!!!!!!
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
int filehandle;
//ResetLastError();
filehandle=FileOpen("my_file.txt",FILE_WRITE|FILE_ TXT);
if(filehandle!=INVALID_HANDLE)
{
while(1)
{
FileWrite(filehandle,"строку надо записать в файл");
Sleep(60000); //функция не работает
}
FileClose(filehandle);
Print("FileOpen OK");
}
else Print("Операция FileOpen неудачна, ошибка ",GetLastError());

}
//+------------------------------------------------------------------+
18.05.2016, 00:07
Аватар для _SERG_
_SERG_ _SERG_ на форуме Активный участник
Регистрация: 21.07.2009 / Сообщений: 280
Поблагодарили 93 раз(а) / Репутация: 93
Подскажите пожалуйста как записывать строку в файл через каждую минуту? Не получается сделать задержку времени!!!!!!
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
int filehandle;
//ResetLastError();
filehandle=FileOpen("my_file.txt",FILE_WRITE|FILE_ TXT);
if(filehandle!=INVALID_HANDLE)
{
while(1)
{
FileWrite(filehandle,"строку надо записать в файл");
Sleep(60000); //функция не работает
}
FileClose(filehandle);
Print("FileOpen OK");
}
else Print("Операция FileOpen неудачна, ошибка ",GetLastError());

}
//+------------------------------------------------------------------+

А как ты пришел к выводу, что не работает ?

Цитата:
{
<------- Вставь сюда Prinr("[" + TimeToStr (TimeLocal(), TIME_DATE | TIME_SECONDS) +"]"); и посмотри лог, мож чё и поменяется.
FileWrite(filehandle,"строку надо записать в файл");
Sleep(60000); //функция не работает
}
18.05.2016, 06:57
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Подскажите пожалуйста как записывать строку в файл через каждую минуту? Не получается сделать задержку времени!!!!!!
А как ты пришел к выводу, что не работает ?
В тестере функция Sleep() не работает.
18.05.2016, 07:04
Аватар для ansol
ansol ansol на форуме Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,061
Поблагодарили 891 раз(а) / Репутация: 877
В тестере функция Sleep() не работает.
Скрипт в тестере?
Оригинально!
18.05.2016, 12:12
Аватар для _SERG_
_SERG_ _SERG_ на форуме Активный участник
Регистрация: 21.07.2009 / Сообщений: 280
Поблагодарили 93 раз(а) / Репутация: 93
В тестере функция Sleep() не работает.
Скрипт в тестере?
Оригинально!
Я в курсе ,что слип не работает и циклить скрипт на тестере не стоит, но человек свято верит в идентичность условий на "Демо"/"Реале", вот и задаю вопрос: "Как к такому віводу пришел?".

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

Последний раз редактировалось _SERG_; 18.05.2016 в 12:29.
18.05.2016, 12:47
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Я в курсе ,что слип не работает и циклить скрипт на тестере не стоит, но человек свято верит в идентичность условий на "Демо"/"Реале", вот и задаю вопрос: "Как к такому віводу пришел?".

Имея абсолютную уверенность в своих навыках, люди так же уверены и в том, с чем работают, не ставя эту уверенность под сомнение, проверяя её, и в дальнейшем используя как навык и опыт.
Не спорю, что большинство имеет как правило бесполезный опыт, в связи с чем занимается бОльшую часть времени поиском ошибок и нестыковок в т.ч. и не по своей вине.
Во завернул!
Да я что-то совсем не глянул на шапку. Вот и получилось что поумничал...
19.05.2016, 12:25
Аватар для derzerack
derzerack derzerack вне форума Новичок форума
Регистрация: 30.11.2012 / Сообщений: 12
Поблагодарили 1 раз в 1 сообщении / Репутация: 7
Уважаемые товарищи программисты. Необходимо сделать так чтобы при наступление условия открывался 1 отложенный ордер, а не куча. Задача осложняется тем что необходимо держать открытыми несколько отложек, планирую 3. Другими словами появилось условие открылась одна отложка, позже опять появляется условие открывается вторая. Далее при появлении условий удаляю лишнюю отложку и выставляю новую. Немогу понять как ограничить выставление отложек по количеству и цене. Чтоб в одну цену не устанавливалось 100500 ордеров. Заранее благодарен за ответ.
19.05.2016, 13:44
Аватар для vlad_123
vlad_123 vlad_123 на форуме Местный знаток
Регистрация: 29.01.2013 / Сообщений: 456
Поблагодарили 929 раз(а) / Репутация: 933
derzerack, перед открытием ордера пробегать уже открытые, и если разница между ценой открытия и текущей ценой меньше какого-то значения - не открывать.

На заказ не программирую.
19.05.2016, 18:16
Аватар для officialboob
officialboob officialboob вне форума Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,262
Поблагодарили 1,302 раз(а) / Репутация: 1261
Уважаемые товарищи программисты. Необходимо сделать так чтобы при наступление условия открывался 1 отложенный ордер, а не куча. Задача осложняется тем что необходимо держать открытыми несколько отложек, планирую 3. Другими словами появилось условие открылась одна отложка, позже опять появляется условие открывается вторая. Далее при появлении условий удаляю лишнюю отложку и выставляю новую. Немогу понять как ограничить выставление отложек по количеству и цене. Чтоб в одну цену не устанавливалось 100500 ордеров. Заранее благодарен за ответ.



PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders(string sy=""int op=-1int mn=-1) {
  
int ik=OrdersTotal(), ko=0ot;

  if (
sy=="0"sy=Symbol();
  for (
i=0i<ki++) {
    if (
OrderSelect(iSELECT_BY_POSMODE_TRADES)) {
      
ot=OrderType();
      if (
ot>&& ot<6) {
        if ((
OrderSymbol()==sy || sy=="") && (op<|| ot==op)) {
          if (
mn<|| OrderMagicNumber()==mnko++;
        }
      }
    }
  }
  return(
ko);

PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает цену открытия последнего открытого ордера. *        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenLastOrder(string sy=""int op=-1int mn=-1) {
  
datetime t=0;
  
double   r=0;
  
int      ik=OrdersTotal();

  if (
sy=="0"sy=Symbol();
  for (
i=0i<ki++) {
    if (
OrderSelect(iSELECT_BY_POSMODE_TRADES)) {
      if (
OrderSymbol()==sy || sy=="") {
        if (
OrderType()>=2) {
          if (
op<|| OrderType()==op) {
            if (
mn<|| OrderMagicNumber()==mn) {
              if (
t<OrderOpenTime()) {
                
t=OrderOpenTime();
                
r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(
r);

Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 19.05.2016 в 18:22.
20.05.2016, 09:46
Аватар для федорини
федорини федорини вне форума Прохожий
Регистрация: 30.07.2015 / Сообщений: 1
Поблагодарили 0 раз(а) / Репутация: 1
Добрый день ! Как написать индикатор я знаю. А если у меня два массива в которые я записал в программе MQL4 значения переменных и хочу построить график зависимости значений одного массива от значений другого массива. Может кто-нибудь подскажет хотя бы приблизительно как это написать на MQL4. В виде скрипта или индикатора. Заранее благодарен
20.05.2016, 12:04
Регистрация: 13.03.2009 / Сообщений: 2,394
Поблагодарили 1,974 раз(а) / Репутация: 2051
Сообщение от: федорини
Добрый день ! Как написать индикатор я знаю. А если у меня два массива в которые я записал в программе MQL4 значения переменных и хочу построить график зависимости значений одного массива от значений другого массива. Может кто-нибудь подскажет хотя бы приблизительно как это написать на MQL4. В виде скрипта или индикатора. Заранее благодарен
Я так понял хочешь сравнить 2 значения буферах. Скорее всего результат будет не соизмерим с графиком цены. Самое простое сделай индикатор с буфером в подвале. В буфер пиши значение после сравнения 2 буферов, которые можно получить по iCustom.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
20.05.2016, 16:55
Аватар для derzerack
derzerack derzerack вне форума Новичок форума
Регистрация: 30.11.2012 / Сообщений: 12
Поблагодарили 1 раз в 1 сообщении / Репутация: 7
derzerack, перед открытием ордера пробегать уже открытые, и если разница между ценой открытия и текущей ценой меньше какого-то значения - не открывать.
Огромное спасибо за ответ. Такой вариант работает. кнопки "спасибо" не нашёл, поэтому благодарю в этом сообщении.
20.05.2016, 17:01
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Огромное спасибо за ответ. Такой вариант работает. кнопки "спасибо" не нашёл, поэтому благодарю в этом сообщении.
Я нашёл кнопку и нажал за тебя. Будешь мне должен.
23.05.2016, 07:22
Аватар для haxbam
haxbam haxbam вне форума Интересующийся
Регистрация: 06.01.2011 / Сообщений: 11
Поблагодарили 3 раз(а) / Репутация: 4

Вопрос Нужна помошь в доработке индикатора.

Всем привет!
Нашел графический индикатор , скачал ,немного переделал его под свои нужды. Но я не знаю что нужно добавить в графический индикатор что бы с него эксперт мог считывать 2 разных сигнала HighSignal (строка 57) и LowSignal(строка 69).
Я так понимаю нужно обозначить имя индикатора и вставить буфер в который бы потом писались и считывались нужные переменные. Но как это сделать не пойму.
Помогите пожалуйста доделать этот индикатор ,и еще какой командой в эксперте можно считать с него значения ?
23.05.2016, 12:01
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Всем привет!
Нашел графический индикатор , скачал ,немного переделал его под свои нужды. Но я не знаю что нужно добавить в графический индикатор что бы с него эксперт мог считывать 2 разных сигнала HighSignal (строка 57) и LowSignal(строка 69).
Я так понимаю нужно обозначить имя индикатора и вставить буфер в который бы потом писались и считывались нужные переменные. Но как это сделать не пойму.
Помогите пожалуйста доделать этот индикатор ,и еще какой командой в эксперте можно считать с него значения ?
А он у тебя хоть что-то показывает? Рисует трендовые? Бывают-ли алерты?
23.05.2016, 17:48
Аватар для haxbam
haxbam haxbam вне форума Интересующийся
Регистрация: 06.01.2011 / Сообщений: 11
Поблагодарили 3 раз(а) / Репутация: 4
А он у тебя хоть что-то показывает? Рисует трендовые? Бывают-ли алерты?
Да! Конечно рисует! Свою задачу он полностью выполняет, вот только вытянуть из него результат в эксперта никак не могу.
23.05.2016, 19:08
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Да! Конечно рисует! Свою задачу он полностью выполняет, вот только вытянуть из него результат в эксперта никак не могу.
У меня совсем молчит, да и по коду вроде-бы долго придётся ждать, потому держи не проверенный вариант.
Из советника можно получить через iCustom() буфер 0 == 0 сигнал Buy, буфер 1 == 1 сигнал Sell
Ну а в принципе наверное сможешь подправить какие значения в буфер ставить.
haxbam 
24.05.2016, 12:28
Аватар для Минька
Минька Минька на форуме Активный участник
Регистрация: 13.07.2013 / Сообщений: 198
Поблагодарили 101 раз(а) / Репутация: 102
Всем привет! Возникла идея по закрытию свечи старшего таймфрейма (например М15), сделать расчет индикатора с младшего таймфрейма (например М1), то есть подсчитать 15 свечей для М1, а результат вывести на М15 и так для каждой свечи М15. Не соображу как сделать.
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 13:03. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO