Ошибки, баги, вопросы - страница 1401

 
Ilya Malev:

Этот скрипт для MetaTrader 4 :)

В МТ4 как раз все данные предупредительно рассчитываются терминалом до получения их в программах mql4

да, я после уточнил

ЗЫ: интересно, а эти коды сообщений которые работают для МТ4 не подойдёт для МТ5 )

 
Alexandr Bryzgalov:
да, я после уточнил
Может выложите версию для МТ5? ) Не знаю для чего она нужна в МТ4, но в МТ5 будет реальная польза - в виду безвыходности ситуации, о которой я выше написал.
 
Ilya Malev:
Может выложите версию для МТ5? ) Не знаю для чего она нужна в МТ4, но в МТ5 будет реальная польза - в виду безвыходности ситуации, о которой я выше написал.

В принципе вот для МТ5, но я не уверен(а скорее уверен что не правильный) что код команды(

PostMessageA(hwnd,WM_COMMAND,33324,0);

) правильный.

Компилируется без ошибок, запускается без ошибок.

//+------------------------------------------------------------------+
//|                                                 ChartRefresh.mq5 |
//|                                                      sanyooooook |
//|                                                 http://sn-bot.ru |
//+------------------------------------------------------------------+
#property copyright "sanyooooook"
#property link      "http://sn-bot.ru"
#property version   "1.00"
#property strict
#include <WinUser32.mqh>
int      hwnd=0,cnt=0;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   datetime last_time=TimeCurrent()-5;
   while(!IsStopped())
     {
      datetime cur_time=TimeCurrent();
      if(hwnd==0)
        {
         hwnd=WindowHandleMQL4(Symbol(),Period());
         if(hwnd!=0)
            Print("Chart window detected");
        }
      //--- refresh window not frequently than 1 time in 2 seconds
      if(hwnd!=0 && cur_time-last_time>=2)
        {
         //PostMessageA(hwnd,WM_COMMAND,33324,0); 
         PostMessageW(hwnd,WM_COMMAND,33324,0);//так наверное правильней
         last_time=cur_time;
        }
      Sleep(100);
     }
  }
//+--------------------------------
int WindowHandleMQL4(string symbol,
                     int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   while(i<limit)
     {
      currChart=ChartNext(prevChart);
      if(currChart<0) break;
      if(ChartSymbol(currChart)==symbol
         && ChartPeriod(currChart)==timeframe)
         return((int)currChart);
      prevChart=currChart;
      i++;
     }
   return(0);
  }
  ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);
      
      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);      
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);      
      default: return(PERIOD_CURRENT);
     }
  }
 

мышинные команды точно работают )

#define MOUSEEVENTF_MOVE              0x0001 // mouse move
#define MOUSEEVENTF_LEFTDOWN          0x0002 // left button down
#define MOUSEEVENTF_LEFTUP            0x0004 // left button up
#define MOUSEEVENTF_RIGHTDOWN         0x0008 // right button down
#define MOUSEEVENTF_RIGHTUP           0x0010 // right button up
#define MOUSEEVENTF_MIDDLEDOWN        0x0020 // middle button down
#define MOUSEEVENTF_MIDDLEUP          0x0040 // middle button up
#define MOUSEEVENTF_WHEEL             0x0800 // wheel button rolled
#define MOUSEEVENTF_ABSOLUTE          0x8000 // absolute move
              mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE,25000,35000, 0, 0); 
              Sleep(50);
              mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTDOWN,25000,35000, 0, 0); 
              Sleep(50);
              mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTUP,25000,35000, 0, 0); 
              Sleep(500);     
 
Alexandr Bryzgalov:

В принципе вот для МТ5, но я не уверен(а скорее уверен что не правильный) что код команды(

) правильный.

Компилируется без ошибок, запускается без ошибок.

Почему-то не работает. Если хотите, можно продолжить обсуждение в ветке Вашего скрипта. 

 
Ilya Malev:

Почему-то не работает. Если хотите, можно продолжить обсуждение в ветке Вашего скрипта. 

да, не работает, код(33324) не подходит для МТ5.

пока остановимся на этом, занят другим.

ЗЫ: всё что остаётся это найти правильный код команды. )

 

Для какой цели тестер перед тестированием индикатора удаляет файлы в папке tester\Agent\MQL5\Files? 

 

Что означает ошибка в тестере 2015.10.15 19:22:44.860 1999.05.26 00:00:00   debug version of 'SomeIndicator.ex5', please recompile it ?

П.С. После перекомпиляции вроде загрузилось, но хочется понять, что было не так. 

 
Ошибка компиляции:  'const' - name expected
struct S { int i; }
      s1 = { 1 }, //нормально
      s2 = { 2 }, //нормально
сonst s3 = { 3 }; //'const' - name expected
редкость, но встретилось
 
Ilya Malev:

Что означает ошибка в тестере 2015.10.15 19:22:44.860 1999.05.26 00:00:00   debug version of 'SomeIndicator.ex5', please recompile it ?

П.С. После перекомпиляции вроде загрузилось, но хочется понять, что было не так. 

EX5, переданный в тестер стратегий, был подготовлен для отладки (дебаг версия), перекомпилируйте код.
Причина обращения: