[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 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:



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