Fehler, Irrtümer, Fragen - Seite 1401

 
Ilya Malev:

Dieses Skript ist für MetaTrader 4 :)

In MT4 werden gerade alle Daten vom Terminal genau berechnet, bevor sie in mql4-Programmen empfangen werden

Ja, ich habe es anschließend überprüft.

ZS: Ich frage mich, ob diese Nachrichtencodes, die für MT4 funktionieren, für MT5 nicht funktionieren werden.)

 
Alexandr Bryzgalov:
Ja, ich habe es anschließend überprüft.
Warum posten Sie nicht die Version für MT5? ) Ich weiß nicht, wozu es in MT4 dient, aber in MT5 wäre es wirklich nützlich - in Anbetracht der Aussichtslosigkeit der Situation, die ich oben beschrieben habe.
 
Ilya Malev:
Können Sie die Version für MT5 veröffentlichen? ) Ich weiß nicht, wozu es in MT4 dient, aber in MT5 wird es von echtem Nutzen sein - in Anbetracht der Aussichtslosigkeit der Situation, die ich oben beschrieben habe.

Grundsätzlich ist hier für MT5, aber ich bin nicht sicher (oder besser gesagt, ich bin sicher, es ist nicht die richtige), dass der Befehlscode (

PostMessageA(hwnd,WM_COMMAND,33324,0);

) ist richtig.

Kompiliert ohne Fehler, läuft ohne Fehler.

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

Mausbefehle funktionieren definitiv)

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

Grundsätzlich ist hier für MT5, aber ich bin nicht sicher (oder besser gesagt, ich bin sicher, es ist nicht die richtige), dass der Befehlscode (

) ist richtig.

Kompiliert ohne Fehler, läuft ohne Fehler.

Aus irgendeinem Grund klappt das nicht. Wenn Sie möchten, können Sie die Diskussion in Ihrem Skript-Zweig fortsetzen.

 
Ilya Malev:

Aus irgendeinem Grund funktioniert es nicht. Wenn Sie möchten, können Sie die Diskussion in Ihrem Skript-Zweig fortsetzen.

Ja, es funktioniert nicht, der Code (33324) ist nicht für MT5 geeignet.

Ich belasse es vorerst dabei, ich bin mit anderen Dingen beschäftigt.

ZS: Jetzt muss nur noch der richtige Befehlscode gefunden werden. )

 

Zu welchem Zwecklöscht der Prüferdie Dateien im Ordner "tester\Agent\MQL5\Files", bevor er den Indikator testet?

 

Was bedeutet der Fehler in der Tester 2015.10.15 19:22:44.860 1999.05.26 00:00:00 Debug-Version von 'SomeIndicator.ex5', bitte neu kompilieren ?

P.S. Nach der Neukompilierung scheint es zu laden, aber wollen verstehen, was falsch war.

 
Kompilierungsfehler: 'const' - Name erwartet
struct S { int i; }
      s1 = { 1 }, //нормально
      s2 = { 2 }, //нормально
сonst s3 = { 3 }; //'const' - name expected
Selten, aber anzutreffen
 
Ilya Malev:

Was bedeutet der Fehler in der Tester 2015.10.15 19:22:44.860 1999.05.26 00:00:00 Debug-Version von 'SomeIndicator.ex5', bitte neu kompilieren ?

P.S. Nach der Neukompilierung scheint es zu laden, aber wollen verstehen, was falsch war.

Die an den Strategietester übergebene EX5 wurde zum Debuggen vorbereitet (Debug-Version), bitte kompilieren Sie sie neu.