错误、漏洞、问题 - 页 1401

 
Ilya Malev:

这个脚本适用于MetaTrader 4 :)

在MT4中,只是所有的数据在被接收到mql4程序之前,都是由终端精确计算的。

是的,我事后检查了

ZS: 我想知道这些对MT4有效的信息代码是否对MT5不起作用 )

 
Alexandr Bryzgalov:
是的,我事后检查了。
你为什么不公布MT5的版本?)我不知道它在MT4中的作用,但在MT5中会有真正的用处--鉴于我上面写的情况是无望的。
 
Ilya Malev:
你能发布MT5的版本吗?)我不知道它在MT4中的作用,但在MT5中会有真正的用处--考虑到我上面写的情况的无望性。

基本上这里是针对MT5的,但我不确定(或者说我确定这不是正确的),命令代码(

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:

基本上这里是针对MT5的,但我不确定(或者说我确定这不是正确的),命令代码(

)是正确的。

编译没有错误,运行没有错误。

由于某些原因,它没有发挥作用。如果你愿意,你可以在你的脚本分支中继续讨论。

 
Ilya Malev:

由于某些原因,它没有发挥作用。如果你愿意,你可以在你的脚本分支中继续讨论。

是的,它不起作用,代码(33324)不适合MT5。

我现在就不说了,忙于其他事情。

ZS:剩下的就是要找到正确的指令代码。)

 

在测试指标之前,测试人员删除 tester/Agent/MQL5/Files文件夹中的文件是出于什么目的?

 

测试员 2015.10.15 19:22:44.860 1999.05.26 00:00:00 调试版的'SomeIndicator.ex5'的错误是什么意思,请重新编译?

P.S. 重新编译后,似乎可以加载了,但想了解哪里出了问题。

 
编译错误: 'const'--预期的名称
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 调试版的'SomeIndicator.ex5'的错误是什么意思,请重新编译?

P.S. 重新编译后,似乎可以加载了,但想了解哪里出了问题。

传给策略测试器 的EX5是为调试准备的(调试版),请重新编译。