오류, 버그, 질문 - 페이지 1401

 
Ilya Malev :

이 스크립트는 MetaTrader 4용입니다 :)

MT4에서 모든 데이터는 mql4 프로그램에서 수신되기 전에 터미널에서 계산됩니다.

네, 나중에 확인했습니다

추신: 흥미롭지만 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에 적합하지 않습니다.

우리가 이것에서 멈출 때까지, 다른 일로 바쁘다.

추신: 남은 것은 올바른 명령 코드를 찾는 것뿐입니다. )

 

테스터는 어떤 목적으로 지표를 테스트하기 전에 tester\Agent\MQL5\Files 폴더의 파일을 삭제 합니까?

 

테스터에서 오류는 무엇을 의미합니까 2015.10.15 19:22:44.860 1999.05.26 00:00:00 'SomeIndicator.ex5'의 디버그 버전입니다. 다시 컴파일하시겠습니까?

추신 재컴파일 후 로딩되는 것 같았는데 무엇이 잘못되었는지 알고 싶습니다.

 
컴파일 오류: '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'의 디버그 버전입니다. 다시 컴파일하시겠습니까?

추신 재컴파일 후 로딩되는 것 같았는데 무엇이 잘못되었는지 알고 싶습니다.

전략 테스터 에게 전달된 EX5는 디버깅(디버그 버전)을 위해 준비되었으며 코드를 다시 컴파일합니다.