Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1228

 
Vladimir Karputov:

Тогда уже так правильно:

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

     Спасибо. Тогда уж так) : 


void CloseSellPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
	{
          if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
            {
             if(m_position.PositionType()==POSITION_TYPE_SELL)
                m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
            }
	}


  }

Просто скобочки добавил. Чтобы новички не путались.

 

Здравствуйте. В программе для записи логов в отдельные файлы часто использую строку вида:

StringConcatenate(M,"Начинаем проверять время работы модулей. i=",i); Log.write(M,__FILE__,__LINE__);

Подскажите как сократить эту строку ? Ведь по сути здесь меняется только сама строка для вывода и название переменой, в которую вывожу.

Пытался сделать на define

#define LOG(LogPerem,StrMes) StringConcatenate(M,StrMes,""); LogPerem.write(M,__FILE__,__LINE__);

но если вызвать вот так уже не работает:

LOG(Log,"i=",i);
 
pivomoe:

Здравствуйте. В программе для записи логов в отдельные файлы часто использую строку вида:

Подскажите как сократить эту строку ? Ведь по сути здесь меняется только сама строка для вывода и название переменой, в которую вывожу.

Пытался сделать на define

но если вызвать вот так уже не работает:

У Вас понимание о препроцессоре есть?

Ваш

LOG("i=",i);
разворачивается в
StringConcatenate(M,i,""); "i=".write(M,__FILE__,__LINE__);;

и именно это скармливается компилятору.

Даже не смешно. Рецепт один: курить доки,-желательно не местные, местные уже подразумевают какое-никакое понимание терминологии.

Попробуй это, вдруг поможет: https://metanit.com/cpp/c/3.1.php

С | Препроцессор
  • metanit.com
Препроцессор является обязательным компонентом компилятора языка Си. Препроцессор обрабатывает исходный текст программы до ее непосредственной компиляции. Результатом работы препроцессора является полный текст программы, который передается на компиляцию в исполняемый файл. Для управления препроцессором применяются директивы, каждая из которых...
 
Vladimir Simakov:

Даже не смешно. Рецепт один: курить доки,-желательно не местные, местные уже подразумевают какое-никакое понимание терминологии.

Попробуй это, вдруг поможет: https://metanit.com/cpp/c/3.1.php

   Что значит вдруг ? Вам то помогло ? Вы можете сократить мою строку используя define ?


Я изменил в своем вопросе строчку кода

LOG("i=",i);

на

LOG(Log,"i=",i);
 
pivomoe:

Здравствуйте. В программе для записи логов в отдельные файлы часто использую строку вида:

Подскажите как сократить эту строку ? Ведь по сути здесь меняется только сама строка для вывода и название переменой, в которую вывожу.

Пытался сделать на define

но если вызвать вот так уже не работает:

Решил свою проблему с помощью простыни из функций вида:

template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10>
void Write(T1 var1,T2 var2,T3 var3,T4 var4,T5 var5,T6 var6,T7 var7,T8 var8,T9 var9,T10 var10,string ffile,int line)
  {
   string Str;
   StringConcatenate(Str,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10);
   write(Str,ffile,line);
  }; 

Теперь в проге вызываю так

   Log.Write("Test1",__FILE__,__LINE__);  
 
pivomoe:

   Что значит вдруг ? Вам то помогло ? Вы можете сократить мою строку используя define ?


Я изменил в своем вопросе строчку кода

на

Могу. LOG("Text"); Пример, как это реализуется я, где-то на просторах форума, приводил - ищите.
 

Добрый день, проблема такая: имеется советник который вызывает пользовательский индикатор для отображения данных, в тестере стратегий все работает отлично, но в режиме реальной торговли при запуске советника индикатор не отображается. В журнале пишут custom indicator loaded succesfully, он вроде-бы шуршит, посылает текстовые сообщения но на графике в списке индикаторов его так же нет. При этом если перетянуть его ручками на график он какбэ подхватывает данные и все отображается нормально. Индикатор расположен в папке Indicators, в функции iCustom(NULL,0,"Имя индикатора",Count). Так же пробовал добавлять #resource "\\Indicators\\Имя индикатора.ex5", iCustom(NULL,0,"::Indicators\\Имя индикатора.ex5",Count) но разницы никакой. В чем причина?

 

есть ли настройка чтоб убрать текущие значения индикаторных буферов? перекравают картинку


 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 

Уважаемые профи, подскажите пожалуйста, можно в ли коде советника каким-то образом получить значения RSI для недельного таймфрейма, но чтобы значения рассчитывались за неделю, начинающуюся не с понедельника, а например со среды(то есть за  неделю со среды до след среды)  . С помощью iRSI как я понимаю это не получится?

Пока я вижу только способ самой писать код для рассчета. А есть ли более простое или уже готовое решение?

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