Errori, bug, domande - pagina 1401

 
Ilya Malev:

Questo script è per MetaTrader 4 :)

In MT4 solo tutti i dati sono calcolati con precisione dal terminale prima di essere ricevuti nei programmi mql4

Sì, ho controllato dopo

ZS: Mi chiedo se questi codici di messaggi che funzionano per MT4 non funzioneranno per MT5 )

 
Alexandr Bryzgalov:
Sì, ho controllato dopo.
Perché non pubblicate la versione per MT5? ) Non so a cosa serva in MT4, ma in MT5 sarebbe davvero utile - vista la disperazione della situazione che ho scritto sopra.
 
Ilya Malev:
Puoi postare la versione per MT5? ) Non so a cosa serva in MT4, ma in MT5 sarà di reale utilità - vista la disperazione della situazione che ho scritto sopra.

Fondamentalmente qui è per MT5, ma non sono sicuro (o meglio sono sicuro che non è quello giusto) che il codice del comando(

PostMessageA(hwnd,WM_COMMAND,33324,0);

) è corretto.

Compila senza errori, funziona senza errori.

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

i comandi del mouse funzionano sicuramente)

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

Fondamentalmente qui è per MT5, ma non sono sicuro (o meglio sono sicuro che non è quello giusto) che il codice del comando(

) è corretto.

Compila senza errori, funziona senza errori.

Per qualche motivo non funziona. Se vuoi, puoi continuare la discussione nel tuo ramo di script.

 
Ilya Malev:

Per qualche motivo non funziona. Se vuoi, puoi continuare la discussione nel tuo ramo di script.

Sì, non funziona, il codice (33324) non è adatto a MT5.

Per ora lascio perdere, sono occupato con altre cose.

ZS: non resta che trovare il codice di comando giusto. )

 

A che scopo il testercancella i file nella cartella tester\Agent\MQL5\Files prima di testare l'indicatore?

 

Cosa significa l'errore nel tester 2015.10.15 19:22:44.860 1999.05.26 00:00:00 versione debug di 'SomeIndicator.ex5', per favore ricompilatelo?

P.S. Dopo aver ricompilato sembra caricare, ma voglio capire cosa c'era di sbagliato.

 
Errore di compilazione: 'const' - nome atteso
struct S { int i; }
      s1 = { 1 }, //нормально
      s2 = { 2 }, //нормально
сonst s3 = { 3 }; //'const' - name expected
Raro, ma incontrato
 
Ilya Malev:

Cosa significa l'errore nel tester 2015.10.15 19:22:44.860 1999.05.26 00:00:00 versione debug di 'SomeIndicator.ex5', per favore ricompilatelo?

P.S. Dopo aver ricompilato sembra caricare, ma voglio capire cosa c'era di sbagliato.

L'EX5 passato al tester della strategia è stato preparato per il debug (versione debug), per favore ricompilalo.