64-битной Windows 7 - WM_COMMAND

 
  // Remove Expert Advisors
 int hChart = WindowHandleMQL4(Symbol(),Period()); PostMessageA(hChart, WM_COMMAND, 0x80f3, 0);

Почему этот индикатор работает только на 32 MetaTrader 5? Он не работает под 64-битной Windows 7 Почему?

#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

//--- input parameters
#define WM_COMMAND 0x0111

#import "user32.dll"
  int     PostMessageA(int hWnd,int Msg,int wParam,int lParam);

#import

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {


  // Remove Expert Advisors
 int hChart = WindowHandleMQL4(Symbol(),Period()); PostMessageA(hChart, WM_COMMAND, 0x80f3, 0);
  

//--- return value of prev_calculated for next call
   return(rates_total);
  }
  
  
  
  
//+------------------------------------------------------------------+
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 && currChart != -1) 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);
     }
  }
 

1. Что должен делать индикатор?

2. Что пишет в логах?

3. Импорт ДЛЛ разрешен?

 

1. Что должен делать индикатор?

Удаляет "Эксперт" от графика.

 

2. Что пишет в логах? 

Нет ошибки. Все в порядке.

3. Импорт ДЛЛ разрешен?

Да.

 

The indicator works without problems but not in Windows 7 (64x)

 

Попробуйте PostMessageW.

Вообще A(Ansi) функции для MetaTrader 5 лучше не использовать - это полностью юникодный проект.

 
Renat:

Попробуйте PostMessageW.

Вообще A(Ansi) функции для MetaTrader 5 лучше не использовать - это полностью юникодный проект.


Вроде обещали функционал добавить для работы с ANSI, жду до сих пор...
 
В данном вопросе речь идет об winapi
 
Renat:
В данном вопросе речь идет об winapi

У меня проблема возникла примерно с подобным. Существует некая DLL которая позволяет общаться MT4 и Excel (Лежит кстати на старом форуме).

Так вот, с MT4 она работат нормально, но в MT5 глючит (по причине несовместимости с юникодом)...

 
Interesting:

У меня проблема возникла примерно с подобным. Существует некая DLL которая позволяет общаться MT4 и Excel (Лежит кстати на старом форуме).

Так вот, с MT4 она работат нормально, но в MT5 глючит (по причине несовместимости с юникодом)...

Посмотрите раздел Использование кодовой страницы, может оказаться полезным.
 
Спасибо
 

Я попытался его с

PostMessageW(hChart, WM_COMMAND, 0x80f3, 0);

Существовал эту ошибку

 

 

Причина обращения: