Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 863

 

Igor Makanu: Не по теме вопроса конечно. Так по вашему коду небольшая мысль. Если использовать массив то вообще можно задать неограниченное количество интервалов.

CWork *Work[];

int OnInit()
  {
   if(ArrayResize(Work,3) != 3)
      ExpertRemove();
   Work[0] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[1] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[2] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i] != NULL)
         delete Work[i];
   ZeroMemory(Work);
  }

void OnTick()
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i].Disable())
        {
         Comment("Не торговое время!!!");
         return;
        }
/* work */
  }
 
Konstantin Nikitin:

Igor Makanu: Не по теме вопроса конечно. Так по вашему коду небольшая мысль. Если использовать массив то вообще можно задать неограниченное количество интервалов.

почему не по теме? - тема техническая, любое обсуждение тех.вопросов я всегда поддержу


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


идея создания такого способа анализа времени торговли мне больше по душе чем преобразования string  в datetime, да и смысл моего кода - один раз в сутки нужно посчитать время начала и конца торговли в виде datetime , пока не наступит новый день нет смысла пересчитывать эти интервалы, наступил новый день - пересчитаем все опять в datetime , а сравнение между собой datetime, должно происходить очень быстро, т.е. не будет нагружать терминал (тестер)


Seric29:

Почему не работает этот код?

Может нужно класс описать через двоеточие ::?Смысл идеи создать указатель который будет указывать на другой указатель.

у Вас синтаксические ошибки, должно быть примерно так:

#include <Object.mqh>
class CArray : public CObject
  {
public:
   double            m_Array[100];
  };

void OnStart()
  {
   CArray *arr=new CArray;
   arr.m_Array[22]=1.23456;
  }
 
novichok2018:

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

Еще раз спасибо Alexey Viktorov за подсказку по кавычкам - все работает. НО: в этот понедельник возникла ситуация - немцы торговали, а у англичан выходной. И получилось, что в условии для открытия позиции по евро использовались старые значения фунта. Отсюда просьба: подскажите, как задать в коде проверку, что по обоим символам в этот день ведется торговля?

Спасибо.

Извините, мне сегодня лениво читать документацию. А микросхемы памяти давно уже погорели почти все, остался только склероз. и маразм.

 
Alexey Viktorov:

Извините, мне сегодня лениво читать документацию. А микросхемы памяти давно уже погорели почти все, остался только склероз. и маразм.

Ну, мне пока не лениво, хоть и своего маразма хватает. Только где читать? Я что-то не нашел. Глаза за компом испортил.

 
novichok2018:

Ну, мне пока не лениво, хоть и своего маразма хватает. Только где читать? Я что-то не нашел. Глаза за компом испортил.

Из документации

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) может возвращать false в следующих случаях:

  • нет соединения с торговым сервером. Можно проверить с помощью TerminalInfoInteger(TERMINAL_CONNECTED));
  • торговый счет переведен в режим read-only (отправлен в архив);
  • торговля на счете запрещена на стороне торгового сервера;
  • подключение к торговому счете произведено в режиме инвестора.

И если не совсем так, ищите другие варианты.

 
Alexey Viktorov:

Из документации

И если не совсем так, ищите другие варианты.

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

 
novichok2018:

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

в документации есть и другие функции

IsTradeAllowed(symbol,TimeCurrent()
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
 

Добрый день.

В МТ4 текст, заданный в настройках объекта TrendLine в поле "Описание", показывается в левой части трендовой (у левого конца). Может у кого-то есть готовое решение, как отображать текст у правого конца?

 
Taras Slobodyanik:

в документации есть и другие функции

Попробовал.

bool uk = IsTradeAllowed("GPBUSD",TimeCurrent());
bool de = IsTradeAllowed("EURUSD",TimeCurrent());

      if(de && uk) Alert("uk == true");

Пишет true и в понедельник, 27, хотя в Англии был выходной.

 
novichok2018:

Попробовал.

Пишет true и в понедельник, 27, хотя в Англии был выходной.

так вам нужно определять выходной или запрет торговли?
торговля-то была разрешена 27-го

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

Причина обращения: