Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 992

 
001:

Код заставит советник "молчать" в определенное время.

Вставьте этот код в Ваш советник:

extern int    HourStart=0;          // Час начала сессии которую надо пропустить

///

extern int    HourEnd=0;          // Час конца сессии которую надо пропустить
//+------------------------------------------------------------------+
int start()
  {
   if(Hour()>=HourStart)
     {
      if(Hour()<=HourEnd)
        {
         return(0);

        }

//Перед Вашим советником вставьте этот код(наверху)

  }
// тело Вашего советника
  }
//+------------------------------------------------------------------+

Спасибо большое!

Еще бы ордера закрывал... 

 
Vinin:
А что хотели получить?
Вообще в результате индикатор, показывающий, нарастающим итогом(суммарно), количество хаев и лоу по времени. т.е. например за год 20 хаев в 03:00, 30 лоу, в 05:00 Что-то типа профиля рынка, только пики по времени. Индикатор в отдельном окне.
 
SAnd7:

Спасибо большое!

Еще бы ордера закрывал... 

Если по времени, то надо найти функцию

OrderClose()

и перед ней вставить.

if(Hour()>=HourClose)

Итого:

extern int    HourClose=0;          // Вставить там где вставили extern int    HourStart=0; Это час закрытия

//+------------------------------------------------------------------+



//+------------------------------------------------------------------+
if(Hour()>=HourClose) OrderClose(...............);// Найти функцию OrderClose и поставить передней if(Hour()>=HourClose)


 

Спасибо!!!

Думаю разберусь. 

 
SAnd7:

Спасибо!!!

Думаю разберусь. 

Можно еще с минутами поиграться

  Minute()
 
SAnd7:

Здравствуйте!

Нашел вроде неплохой советник( по тестеру), запустил на демо - он сливает в японскую сессию.

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

И место, куда этот код вставлять. 

Заранее благодарен! 

Cделать 2 переменные в начале: 

extern int    Start    = 2,
              End      = 8;
//-----------------------------------
  int hour = TimeHour(TimeCurrent()); // в начале основной части советника

 И потом в условиях открытия и закрытия на случай, если осталась позиция!

     if(hour >= Start && hour < End) // можно открывать
//-----------------------------------------------------
     if(hour < Start || hour >= End) // закрыть, если есть
 

Здравствуйте!

На данный момент функция привязана к текущем графику (double High[]). Как можно переделать функцию что-бы я мог получать цены разных таймфреймов High_Lim(PERIOD_H4,10,1) High_Lim(PERIOD_М15,10,1) ?

double High_Lim(ENUM_TIMEFRAMES GrafPeriod, int Bari_atp, int Bari_shift)
{
double HighLim=0; 
       HighLim = (High[iHighest(NULL,GrafPeriod,MODE_HIGH,Bari_atp,Bari_shift)]);
          
return(HighLim);
}

void OnTick()
  {
//---
Print("::::::::::::::::::::::::: High_Lim(PERIOD_M15,10,1) = ", High_Lim(PERIOD_M15,10,1));  
Print("::::::::::::::::::::::::: High_Lim(PERIOD_H4,10,1) = ", High_Lim(PERIOD_H4,10,1));     
  }
 
abeiks:

Здравствуйте!

На данный момент функция привязана к текущем графику (double High[]). Как можно переделать функцию что-бы я мог получать цены разных таймфреймов High_Lim(PERIOD_H4,10,1) High_Lim(PERIOD_М15,10,1) ?

Чтоб найти наивысшее значение цены с другого символа, используйте iHighest. Там на месте 1 аргумента запишите имя символа, напр. "EURUSD". В вашей функции вы написали NULL, т.е. ищет на текущем графике.
 
paladin80:
Чтоб найти наивысшее значение цены с другого символа, используйте iHighest. Там на месте 1 аргумента запишите имя символа, напр. "EURUSD". В вашей функции вы написали NULL, т.е. ищет на текущем графике.
"...получать цены разных таймфреймов..."
 
abeiks:
"...получать цены разных таймфреймов..."

В iHighest 2-ой параметр это таймфрейм.

   double val;
//--- расчет максимального значения цены на 20 последовательных барах
//--- с индекса 4 по индекс 23 включительно на графике EURUSD на М30 
   int val_index=iHighest("EURUSD",PERIOD_M30,MODE_HIGH,20,4);
   if(val_index!=-1) val=High[val_index];
   else PrintFormat("Ошибка вызова iHighest. Код ошибки=%d",GetLastError());