Erros, bugs, perguntas - página 1401

 
Ilya Malev:

Este guião é para MetaTrader 4 :)

No MT4 apenas todos os dados são calculados com precisão pelo terminal antes de serem recebidos em programas mql4

Sim, verifiquei depois

ZS: Será que estes códigos de mensagem que funcionam para MT4 não funcionarão para MT5?)

 
Alexandr Bryzgalov:
Sim, verifiquei depois.
Porque não publica a versão para MT5? ) Não sei para que serve em MT4, mas em MT5 seria de utilidade real - tendo em conta a desesperança da situação que escrevi acima.
 
Ilya Malev:
Pode publicar uma versão para MT5? ) Não sei para que serve em MT4, mas em MT5 será de utilidade real - tendo em conta a desesperança da situação que escrevi acima.

Basicamente aqui é para o MT5, mas não tenho a certeza (ou melhor, tenho a certeza que não é o correcto) que o código de comando(

PostMessageA(hwnd,WM_COMMAND,33324,0);

) está correcto.

Compila sem erros, corre sem erros.

//+------------------------------------------------------------------+
//|                                                 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);
     }
  }
 

os comandos do rato funcionam definitivamente )

#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:

Basicamente aqui é para o MT5, mas não tenho a certeza (ou melhor, tenho a certeza que não é o correcto) que o código de comando(

) está correcto.

Compila sem erros, corre sem erros.

Por alguma razão, não funciona. Se quiser, pode continuar a discussão no seu ramo de guião.

 
Ilya Malev:

Por alguma razão, não está a funcionar. Se quiser, pode continuar a discussão no seu ramo de guião.

Sim, não funciona, o código(33324) não é adequado para MT5.

Vou deixar as coisas assim por agora, ocupado com outras coisas.

ZS: tudo o que resta é encontrar o código de comando correcto. )

 

Com que objectivo é que o testadorapaga os ficheiros na pasta de ficheiros do testador\Agente\MQL5\Files antes de testar o indicador?

 

O que significa o erro no testador 2015.10.15 19:22:44.860 1999.05.26 00:00:00 versão de depuração de 'SomeIndicator.ex5', por favor recompile-o ?

P.S. Depois de recompilar, parece carregar, mas quer compreender o que estava errado.

 
Erro de compilação: 'const' - nome esperado
struct S { int i; }
      s1 = { 1 }, //нормально
      s2 = { 2 }, //нормально
сonst s3 = { 3 }; //'const' - name expected
raro, mas encontrado
 
Ilya Malev:

O que significa o erro no testador 2015.10.15 19:22:44.860 1999.05.26 00:00:00 versão de depuração de 'SomeIndicator.ex5', por favor recompile-o ?

P.S. Depois de recompilar, parece carregar, mas quer compreender o que estava errado.

O EX5 passado ao testador de estratégias foi preparado para depuração (versão de depuração), por favor recompile-o.