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

 

Добрый всем день. Господа, подскажите как правильно обработать одновременное нажатие кнопки клавы и кнопки мыши. Например при нажатии кнопки рисуется объект, а при нажатии тойже кнопки + левой кнопки мыши рисовался бы другой объект. А получается что при нажатии кнопки клавы и мышки рисуются 2 объекта.

if(lparam==49)
 {
 ObjectCreate(0,"line",OBJ_TREND,0,time1,price1,time1+86400,price1);
 ChartRedraw(0);
 }
if(lparam==49 &&В MouseK==1)
 {
 ObjectCreate(0,"Marg",OBJ_LABEL,0,0,0);
 ObjectSetInteger(0,"Marg",OBJPROP_XDISTANCE,280); 
 ObjectSetInteger(0,"Marg",OBJPROP_YDISTANCE,20); 
 ChartRedraw(0);
 }  
 

Я работаю со следующей статей:

https://www.mql5.com/ru/articles/4149

и в коде встретил пару моментов которые не понимаю, объясните смысл пожалуйста

1. Зачем используется оператор :: (scope resolution)

void OnStart()
  {
//---
   Test();
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Test                                                             |
//+------------------------------------------------------------------+
bool Test()
  {

   string pStream;
   string sources_filename="Websorce.txt";

   int hFile,iStringSize;

// read file contents 
   hFile=::FileOpen(sources_filename,FILE_TXT|FILE_READ|FILE_UNICODE);
   if(hFile==INVALID_HANDLE)
     {
      ::Print("error opening file "+sources_filename);
      return(false);
     }

   while(!::FileIsEnding(hFile))
     {


2.   Что делает эта строчка кода "_errCode |= code"  ? (я знаю, что оператор этот побитный "или" тоже самое, что "_errCode =_errCode |code")


class JSONParser {
    private:
        int _pos;
        ushort _in[];
        int _len;
        string _instr;
        int _errCode;
        string _errMsg;
      

        void setError(int code=1,string msg="unknown error") {
          string _str = NULL;
            _errCode |= code;
Создание пользовательской новостной ленты в MetaTrader 5
Создание пользовательской новостной ленты в MetaTrader 5
  • www.mql5.com
В терминале MetaTrader 5 есть множество полезных функций, которые могут пригодиться пользователю, независимо от его стиля торговли, включая и возможность доступа к ленте оперативных новостей. Это дает трейдеру торговый контекст, значимость которого сложно переоценить, ведь он может оказать влияние на рынки. Единственное ограничение — объем...
 
здравствуйте в базе для мт4 есть советник который в терстере можно использовать как тренажер ручной торговли. Не плохой тренажер. И конечно можно запускать только на одном таймфрейме. у меня вопрос. можно ли такой советник тренажер сделать мультитаймфреймный. На мт4 или на мт5?
 
bahtiyar:
здравствуйте в базе для мт4 есть советник который в терстере можно использовать как тренажер ручной торговли. Не плохой тренажер. И конечно можно запускать только на одном таймфрейме. у меня вопрос. можно ли такой советник тренажер сделать мультитаймфреймный. На мт4 или на мт5?

Можно. А для мт5 ещё и мультивалютный, но с некоторыми ограничениями. К сожалению тестер не работает с графикой. Точнее не позволяет редактировать графические объекты вручную.

 
Alexey Viktorov:

Можно. А для мт5 ещё и мультивалютный, но с некоторыми ограничениями. К сожалению тестер не работает с графикой. Точнее не позволяет редактировать графические объекты вручную.

Спасибо за ответ Алексей! Вы ответили что можно сделать. Я хочу уточнить свой вопрос. можно ли при визуализации сделать так чтобы я мог анализировать несколько таймфреймов, ведь тестер будет использоваться как тренажер ручной торговли. если можно как в этот можно сделать в общих чертах7
 
bahtiyar:
Спасибо за ответ Алексей! Вы ответили что можно сделать. Я хочу уточнить свой вопрос. можно ли при визуализации сделать так чтобы я мог анализировать несколько таймфреймов, ведь тестер будет использоваться как тренажер ручной торговли. если можно как в этот можно сделать в общих чертах7

Никак

 
bahtiyar:
Спасибо за ответ Алексей! Вы ответили что можно сделать. Я хочу уточнить свой вопрос. можно ли при визуализации сделать так чтобы я мог анализировать несколько таймфреймов, ведь тестер будет использоваться как тренажер ручной торговли. если можно как в этот можно сделать в общих чертах7
Vitaly Muzichenko:

Никак

Никак только на МТ4. Да и то, можно так настроить графики чтобы можно было смотреть историю до нужной глубины.

На МТ5 тестер грузит все символы и все ТФ к которым есть обращение из программы вместе с индикаторами если они используются в коде. 

Но в любом случае без специального индикатора придётся "скакать" по графикам так, что торговать не захочешь. Либо скорость надо будет поставить такую, что от реала будет отличаться совсем не много.

 

Насколько флаг Optimize в конфиге метаедитора помогает увеличить скорость выполнения программы? Что-то у меня медленно тестирует... Как сильно этот Optimize влияет?

К сожалению, не могу его использовать из-за креша при добавлении экземпляров в объект CDictionary.

 

Здравствуйте, коллеги.

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

//+------------------------------------------------------------------+
// Счетчик ордеров
//+------------------------------------------------------------------+
int OrderCount(int type)
{
  int count = 0;
  for (int trade = OrdersTotal() -1; trade >=0; trade--)
  {
    if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
    {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == type)
      count++;
    }
  }
  return(count);
}

Как это дело реализуется в mql5? Как можно посчитать позиции по магику? или по типу?

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