[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 610

 
xant:

Просьба подсказать как сделать запись в файл. 

Советник в процессе работы рассчитывает значение 4 переменных, значения которых хранятся в памяти, и если терминал не перегружать, то все в порядке. Однако после перезагрузки терминала он теряет эти значения, и при первом запуске все они опять ==0.

Нужно сделать так, чтобы при первом запуске он считывал значения из файла, затем, если они в процессе работы поменяются, то он новые значения опять записывал в файл.  Причем нужно, чтобы он создавал файл с уникальным именем, может быть производным от валютной пары, потому что в терминале висит несколько советников, и чтобы записи другу другу не мешали. 

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


Используйте глобальные переменные терминала  GlobalVariable   Они сохраняют значения при перезагрузке терминала.

 Написать подробнее как их использовать?
 
i999i:

Спасибо за ответ , но я имел ввиду как узнать пробит ли текущий фрактал или нет до появления следующего фрактала

Предыдущий фрактал может быть и не пробит при появлении следующего в том же направлении. Еще раз прочитайте Вильямса.  Он подробно описывает различные способы работы с фракталами.  
 
rigonich:

Предыдущий фрактал может быть и не пробит при появлении следующего в том же направлении. Еще раз прочитайте Вильямса.  Он подробно описывает различные способы работы с фракталами.  

все-же хотелось бы узнать как определить была ли цена выше значения фрактала с момента его появления до текущего времени
 
i999i:

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

int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара).
Параметры:
symbol - Символьное имя инструмента, на данных которого будет производиться поиск. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
type - Идентификатор таймсерии. Может быть любым из значений иденитификаторов таймсерий.
count - Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск.
start - Индекс (смещение относительно текущего бара) начального бара, с которого начинается поиск наибольшего значения. Отрицательные значения игнорируются и заменяются нулевым значением.
 

И снова всем привет.

Как сделать в советнике задержку по времени перед открытием новой сделки после окончания предыдущей сделки.

т.е. сделка завершилась t/p и после этого мне необходимо прождать к примеру 15 минут и только после этого формула дальше пойдет работать:)

Нарыл

OrderCloseTime( )
 но как это связать с временем программы, да и чтобы конфликта не было с прогоном советника по истории. Заранее спасибо
 
Tragedy:

И снова всем привет.

Как сделать в советнике задержку по времени перед открытием новой сделки после окончания предыдущей сделки.

т.е. сделка завершилась t/p и после этого мне необходимо прождать к примеру 15 минут и только после этого формула дальше пойдет работать:)

Нарыл

OrderCloseTime( )
 но как это связать с временем программы, да и чтобы конфликта не было с прогоном советника по истории. Заранее спасибо


https://www.mql5.com/ru/forum/131859

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

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество секунд после закрытия последней позиций. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
datetime SecondsAfterCloseLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(TimeCurrent()-t);
}
 
Оперативно:) спасибо
 
rigonich:

int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара).
Параметры:
rigonich:

int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара).
Параметры:
symbol - Символьное имя инструмента, на данных которого будет производиться поиск. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
type - Идентификатор таймсерии. Может быть любым из значений иденитификаторов таймсерий.
count - Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск.
start - Индекс (смещение относительно текущего бара) начального бара, с которого начинается поиск наибольшего значения. Отрицательные значения игнорируются и заменяются нулевым значением.
здесь вопрос как указать , что искать нужно до бара над которым появился фрактал и если период меньше минуты.....как тогда быть?
 

rigonich,

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

Если допустим в терминале висит 5 советников на 5 разных парах, у каждого советника по 4 требующих записи переменных, значит нужно 20 глобальных переменным, при этом их надо называть как-то с помощью команды  Symbol(), чтобы не прописывать в советнике каждое название.

В общем это пока не для моих мозгов(( 

 
i999i:



 Запомнить время открытия бара, на котором установился последний фрактал, по нему найти номер этого бара.    если период меньше минуты.... ...., это как? Если период графика, то меньше минуты просто нет.
Причина обращения: