Errores, fallos, preguntas - página 1401

 
Ilya Malev:

Este script es para MetaTrader 4 :)

En MT4 todos los datos son calculados con precisión por el terminal antes de ser recibidos en los programas mql4

Sí, lo he comprobado después

ZS: Me pregunto si estos códigos de mensajes que funcionan para MT4 no funcionarán para MT5 )

 
Alexandr Bryzgalov:
Sí, lo he comprobado después.
¿Por qué no publicas la versión para MT5? ) No sé para qué sirve en MT4, pero en MT5 sería de verdadera utilidad, ante lo desesperante de la situación que escribí arriba.
 
Ilya Malev:
¿Puedes publicar la versión para MT5? ) No sé para qué sirve en MT4, pero en MT5 será de verdadera utilidad - en vista de lo desesperante de la situación que escribí arriba.

Básicamente aquí es para MT5, pero no estoy seguro (o más bien estoy seguro de que no es la correcta) que el código de comando(

PostMessageA(hwnd,WM_COMMAND,33324,0);

) es correcto.

Compila sin errores, se ejecuta sin errores.

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

los comandos del ratón definitivamente funcionan )

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

Básicamente aquí es para MT5, pero no estoy seguro (o más bien estoy seguro de que no es la correcta) que el código de comando(

) es correcto.

Compila sin errores, se ejecuta sin errores.

Por alguna razón no funciona. Si quieres, puedes continuar la discusión en tu rama de script.

 
Ilya Malev:

Por alguna razón no funciona. Si quieres, puedes continuar la discusión en tu rama de script.

Sí, no funciona, el código(33324) no es adecuado para MT5.

Lo dejaré así por ahora, ocupado con otras cosas.

ZS: sólo queda encontrar el código de mando adecuado. )

 

¿Con qué propósitoelimina el probadorlos archivos de la carpeta tester\Agent\MQL5\Files antes de probar el indicador?

 

¿Qué significa el error en el probador 2015.10.15 19:22:44.860 1999.05.26 00:00:00 versión de depuración de 'SomeIndicator.ex5', por favor recompilarlo?

P.D. Después de recompilar parece que se carga, pero quiero entender lo que estaba mal.

 
Error de compilación: 'const' - nombre esperado
struct S { int i; }
      s1 = { 1 }, //нормально
      s2 = { 2 }, //нормально
сonst s3 = { 3 }; //'const' - name expected
Raros, pero encontrados
 
Ilya Malev:

¿Qué significa el error en el probador 2015.10.15 19:22:44.860 1999.05.26 00:00:00 versión de depuración de 'SomeIndicator.ex5', por favor recompilarlo?

P.D. Después de volver a compilar parece que se carga, pero quiero entender lo que estaba mal.

El EX5 pasado al probador de estrategias fue preparado para la depuración (versión de depuración), por favor, vuelva a compilarlo.