Event handling function not found mql4 как исправить

  • ФорумРазделы

Yuriy Vins

2018.09.01 16:00

#2  

Все. Я нашел причину, НО ВСЕ ЕЩЕ НЕ УСТРАНИЛ.

Причина в том что мой компилятор не видит написанный код. Как будто код куда то слетает.. (может я слишком много кода написал..)

Ведь когда страница пустая и нет ни одного события и ни одной функции, то такую же ошибку выдает.

Пока что помогает только перезагрузка Windows.

Vitaly Muzichenko

2018.09.01 18:43

#3  

Yuriy Vins:

Все. Я нашел причину, НО ВСЕ ЕЩЕ НЕ УСТРАНИЛ.

Причина в том что мой компилятор не видит написанный код. Как будто код куда то слетает.. (может я слишком много кода написал..)

Ведь когда страница пустая и нет ни одного события и ни одной функции, то такую же ошибку выдает.

Пока что помогает только перезагрузка Windows.

Что-то вы совсем делаете не то.

[Удален]

2018.09.04 12:46

#4  

Yuriy Vins:

Все. Я нашел причину, НО ВСЕ ЕЩЕ НЕ УСТРАНИЛ.

Причина в том что мой компилятор не видит написанный код. Как будто код куда то слетает.. (может я слишком много кода написал..)

Ведь когда страница пустая и нет ни одного события и ни одной функции, то такую же ошибку выдает.

Пока что помогает только перезагрузка Windows.

Терминал установлен или скопирован?

MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5

Вы упускаете торговые возможности:

  • Бесплатные приложения для трейдинга
  • Форексный VPS бесплатно на 24 часа
  • 8 000+ сигналов для копирования
  • Экономические новости для анализа финансовых рынков

Регистрация
Вход

  • Войти через Google

Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.

Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.

  • Войти через Google

  • #4 081

Проблема с удвоением лота в советнике

Здравствуйте, уважаемые форумчане. Столкнулся с проблемой удвоения лота если последняя сделка сработала в минус. Почему-то лот удваивается по два раза подряд. Вот скрин из тестера:

Помогите пожалуйста разобраться. За ранее огромное спасибо!

1 2015.01.02 09:00 sell 1 0.10 1.2053 1.2103 1.2003 0.00 2000.00
2 2015.01.02 22:23 t/p 1 0.10 1.2003 1.2103 1.2003 0.50 2000.50
3 2015.01.02 22:23 sell 2 0.10 1.2001 1.2051 1.1951 0.00 2000.50
4 2015.01.05 00:00 t/p 2 0.10 1.1951 1.2051 1.1951 0.50 2001.00
5 2015.01.05 00:00 buy 3 0.10 1.1948 1.1898 1.1998 0.00 2001.00
6 2015.01.05 00:02 s/l 3 0.10 1.1898 1.1898 1.1998 -0.50 2000.50
7 2015.01.05 00:02 sell 4 0.10 1.1898 1.1948 1.1848 0.00 2000.50
8 2015.01.05 00:39 s/l 4 0.10 1.1948 1.1948 1.1848 -0.50 2000.00
9 2015.01.05 00:39 buy 5 0.20 1.1948 1.1898 1.1998 0.00 2000.00
10 2015.01.05 14:34 s/l 5 0.20 1.1898 1.1898 1.1998 -1.00 1999.00
11 2015.01.05 14:34 sell 6 0.20 1.1898 1.1948 1.1848 0.00 1999.00
12 2015.01.05 22:40 s/l 6 0.20 1.1948 1.1948 1.1848 -1.00 1998.00
13 2015.01.05 22:40 buy 7 0.40 1.1948 1.1898 1.1998 0.00 1998.00
14 2015.01.06 12:27 s/l 7 0.40 1.1898 1.1898 1.1998 -2.01 1995.99
15 2015.01.06 12:27 sell 8 0.40 1.1898 1.1948 1.1848 0.00 1995.99
16 2015.01.06 19:18 s/l 8 0.40 1.1948 1.1948 1.1848 -2.00 1993.99
17 2015.01.06 19:18 buy 9 0.80 1.1948 1.1898 1.1998 0.00 1993.99
18 2015.01.06 22:09 s/l 9 0.80 1.1898 1.1898 1.1998 -4.00 1989.99
19 2015.01.06 22:09 sell 10 0.80 1.1898 1.1948 1.1848 0.00 1989.99
20 2015.01.07 12:55 t/p 10 0.80 1.1848 1.1948 1.1848 4.01 1994.00
21 2015.01.07 12:55 sell 11 1.60 1.1846 1.1896 1.1796 0.00 1994.00
22 2015.01.08 10:58 t/p 11 1.60 1.1796 1.1896 1.1796 8.04 2002.03
23 2015.01.08 10:58 sell 12 0.10 1.1794 1.1844 1.1744 0.00 2002.03
24 2015.01.09 18:03 s/l 12 0.10 1.1844 1.1844 1.1744 -0.50 2001.53
25 2015.01.09 18:03 buy 13 0.10 1.1844 1.1794 1.1894 0.00 2001.53
26 2015.01.12 12:31 s/l 13 0.10 1.1794 1.1794 1.1894 -0.50 2001.03
27 2015.01.12 12:31 sell 14 0.20 1.1794 1.1844 1.1744 0.00 2001.03
28 2015.01.12 16:50 s/l 14 0.20 1.1844 1.1844 1.1744 -1.00 2000.03
29 2015.01.12 16:50 buy 15 0.20 1.1844 1.1794 1.1894 0.00 2000.03
30 2015.01.13 11:46 s/l 15 0.20 1.1794 1.1794 1.1894 -1.01 1999.03
31 2015.01.13 11:46 sell 16 0.40 1.1794 1.1844 1.1744 0.00 1999.03
32 2015.01.14 11:36 t/p 16 0.40 1.1744 1.1844 1.1744 2.00 2001.03
33 2015.01.14 11:36 sell 17 0.40 1.1742 1.1792 1.1692 0.00 2001.03
34 2015.01.14 15:30 s/l 17 0.40 1.1792 1.1792 1.1692 -2.00 1999.03
35 2015.01.14 15:30 buy 18 0.10 1.1792 1.1742 1.1842 0.00 1999.03
36 2015.01.14 15:51 t/p 18 0.10 1.1842 1.1742 1.1842 0.50 1999.53
37 2015.01.14 15:51 buy 19 0.80 1.1844 1.1794 1.1894 0.00 1999.53
38 2015.01.14 16:35 s/l 19 0.80 1.1794 1.1794 1.1894 -4.00 1995.53
39 2015.01.14 16:35 sell 20 0.10 1.1794 1.1844 1.1744 0.00 1995.53
40 2015.01.14 23:59 close at stop 20 0.10 1.1790 1.1844 1.1744 0.04 1995.57

//+------------------------------------------------------------------+
//|                                                      Begemot.mq4 |
//|                                                        Begemot32 |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Begemot32"
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict


extern double Lot; 
double OrPrice;         
double OrLots;         
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {



   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert start function                                             |
//+------------------------------------------------------------------+
int start()
{
  
  



 
  for(int i=0;i<OrdersTotal();i++)
   {
   if (OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY)) // Выбираем последний ордер из истории.
     {
      OrPrice=OrderProfit(); //узнаем профит закрытого ордера
      OrLots=OrderLots();  //узнаем объем(лот)закрытого ордера
     }
   }
if(OrPrice<0) {           //если профит меньше нуля (отрицательный показатель) то..
 Lot=OrLots*2;       // ...умножаем лот на 2
         
 
 

                 if(OrdersTotal() == 0 && Open[0]<Close[0] && Close[0]==High[0]) // если нет ордеров и восходящая свеча то..
                   {
                   OrderSend(Symbol(), OP_BUY, Lot, Ask, 3, Ask-50*Point, Ask+50*Point); // открываем ордер на БАЙ с удвоенным лотом
                   }
                 else

                 
                 
                 
                if(OrdersTotal() == 0 && Open[0]>Close[0] && Close[0]==Low[0]) // если нет ордеров и нисходящая свеча то..
                  {
                  OrderSend(Symbol(), OP_SELL, Lot, Bid, 3, Bid+50*Point, Bid-50*Point); // открываем ордер на СЕЛЛ с удвоенным лотом
                  }
                else
                Print("ORDER NE USTANOVLEN!!!");
 
 }
 else // если последний ордер закрылся с положительным результатом (цена больше или равна нулю)то..




                 //ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
                 if(OrdersTotal() == 0 && Open[0]<Close[0] && Close[0]==High[0]) // если нет ордеров и восходящая свеча то..
                   {
                   OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, Ask-50*Point, Ask+50*Point); // открываем ордер на БАЙ
                   }
                 else
                 Print("BUY - ORDER NE USTANOVLEN!!!");
                                      




                //ОТКРЫТИЕ ОРДЕРА НА ПРОДАЖУ                      
                if(OrdersTotal() == 0 && Open[0]>Close[0] && Close[0]==Low[0]) // если нет ордеров и нисходящая свеча то..
                  {
                  OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, Bid+50*Point, Bid-50*Point); // открываем ордер на СЕЛЛ
                  }
                else
                Print("ORDER NE USTANOVLEN!!!");












  
  
   return(0);
}

Последнее редактирование модератором: 20.07.2015

  • #4 082

Всем здравствуйте.

Для тестировании стратегии на H1 необходимо получать данные о закрытии предыдущего дня.

В Индикаторе пишу следующее (соответственно предварительно объявив “CloseLine” в OnInit()) :

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[])
{
Close_Day=iClose(“EURUSD”,PERIOD_D1,1);
ObjectSet(“CloseLine”,OBJPROP_PRICE1,Close_Day);

return(rates_total);
}

В результате цена с ТФ Day не изменяется, и линия не перестраивается.
Помогите пожалуйста.

Спасибо

  • #4 083

Добрый день!
Подкиньте, пожалуйста, кусок кода для закрытия всех ордеров при общем убытке X пунктов или X% от депозита.

http://fxgeneral.com/forum/topic/779-советники-мартингейл-на-основе-перцептрона-tdi-с/
Посмотри, если не поленишься, мои разработки со старого форума – там есть тот код, который тебе нужен…
Если возникнут вопросы – чиркани и я постараюсь максимально быстро проанализировать и ответить.

  • #4 084

Как выловить сигнал стрелку из индикатора для советника

Подскажите как вытащить появление стрелочки на предыдущем баре из индикатора во вложении. По ним хочу открывать и закрывать позиции при добавлении фильтров…
Буду ОЧЕНЬ благодарен за помощь. На форуме новенький, если нужно писать в другую ветку, извините….
Посмотреть вложение #Forexsignal30_01.ex4

  • #4 085

Подскажите как вытащить появление стрелочки на предыдущем баре из индикатора во вложении. По ним хочу открывать и закрывать позиции при добавлении фильтров…
Буду ОЧЕНЬ благодарен за помощь. На форуме новенький, если нужно писать в другую ветку, извините….
Посмотреть вложение 213570

 double RedArr = iCustom(Symbol(),0,"#Forexsignal30_01",RISK,CountBars,SoundON,EmailON,0,1);  //сигнал от красной стрелки
 double GreenArr = iCustom(Symbol(),0,"#Forexsignal30_01",RISK,CountBars,SoundON,EmailON,1,1);//сигнал от зеленой стрелки

  • #4 086

Спасибо огромное.
Для новичком напишу, что само появление стрелочки (например зеленой) прописывается так:

GreenArr!=0 && GreenArr!=EMPTY_VALUE

  • #4 087

Спасибо огромное.
Для новичком напишу, что само появление стрелочки (например зеленой) прописывается так:

GreenArr!=0 && GreenArr!=EMPTY_VALUE

Ну да, для новичков прописывается так, но только для новичков.

  • #4 088

Ну да, для новичков прописывается так, но только для новичков.

А не для новичков? Приведите пример. Будет полезно для развития. И в чем разница, объясните пож-та.

  • #4 089

А не для новичков? Приведите пример. Будет полезно для развития. И в чем разница, объясните пож-та.

не новички, при сравнении содержимого double переменных, используют < и >, а не != и ==.

  • #4 090

не новички, при сравнении содержимого double переменных, используют < и >, а не != и ==.

:laugh:
А совсем умудренные корифеи заморачиваются функциями типа CompareDoubles из _https://www.mql5.com/ru/articles/1561

  • #4 091

Подскажите пож-та.
пишу советник для полуавтоматической торговли…
НА демке нет пока возможности проверить.
Будет ли этот советник закрывать сделки при появлении стрелки.
При компиляции ошибка “event handling function not found”, но как я понял это ошибка означает что нет открытия позиции, но я планирую ручками открывать, и автоматом (советником) закрывать.
Заранее Спасибо!

//--- Inputs
extern double RISK =  5;
extern double CountBars =  500;
extern double SoundON =  0;
extern double EmailON =  0;

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//--- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
double RedArr;  //сигнал от красной стрелки 
double GreenArr; //сигнал от зеленой стрелки 
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- Берем стрелки 
RedArr = iCustom(Symbol(),0,"#Forexsignal30_01",RISK,CountBars,SoundON,EmailON,0,1);
GreenArr = iCustom(Symbol(),0,"#Forexsignal30_01",RISK,CountBars,SoundON,EmailON,1,1);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(RedArr!=0 && RedArr!=EMPTY_VALUE)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(GreenArr!=0 && GreenArr!=EMPTY_VALUE)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }

  • #4 092

Подскажите пож-та.
пишу советник для полуавтоматической торговли…
НА демке нет пока возможности проверить.
Будет ли этот советник закрывать сделки при появлении стрелки.
При компиляции ошибка “event handling function not found”, но как я понял это ошибка означает что нет открытия позиции, но я планирую ручками открывать, и автоматом (советником) закрывать.
Заранее Спасибо!

Не будет вообще работать. Где функция OnTick() или OnTimer()?
Накидал пользовательских функций, а вызывать то кто их будет?

  • #4 093

Чё себе приключения придумывать?!!!

…”event handling function not found”, но как я понял это ошибка означает что нет открытия позиции, …

а на самом деле:

….Добавлена ошибка компиляции “event handling function not found” при отсутствии в программе точек входа (OnStart, OnTick и т.д.)….

Не правильное понимание – неправильный результат.
Надо бы со структурой программ в MQL познакомиться.

Последнее редактирование: 29.07.2015

  • #4 094

Случайно попался не доработанный индюк, считает бычьи и медвежьи свечи
но не обновляется, что нужно поправить???

//+------------------------------------------------------------------+
//|                                                Copyright © 2010  |
//|                                                  indikator MA.mq4|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009. All rights reserved."
#property link "1yuriy1@gmail.com"

#property indicator_separate_window

#property indicator_buffers 5
#property indicator_color1 Orange 


extern int bar = 1000;// количество кирпичей РЕНКО для отображения линии
extern int Sum = 34; // суммируемое количество последних баров, от 1 до Sum=34 

double line[];

int i,limit,sum; 
//========================================================
int init() {
   IndicatorBuffers(1);

   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(0, line);

   IndicatorDigits(Digits); 
   
IndicatorShortName("indikator MA");

return(0);
}

int deinit()
{

return(0);
}

//====================================================================
int start() {   
      limit = bar - IndicatorCounted(); 
      i = limit;

//РИСУЕМ ГРАФИК
//--------------------------------------------------------------------
   while(i>=0)
{  
sum=0;
   for(int t = Sum; t > 0; t--){
if(Open[i+t-1]-Close[i+t-1]>0)sum=sum-1; else sum=sum+1;
}

       line[i] = sum;
        i--;
}
//--------------------------------------------------------------------
   return(0);
}
//+------------------------------------------------------------------+

  • #4 095

Случайно попался не доработанный индюк, считает бычьи и медвежьи свечи
но не обновляется, что нужно поправить???

//+------------------------------------------------------------------+
//|                                                Copyright © 2010  |
//|                                                  indikator MA.mq4|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009. All rights reserved."
#property link "1yuriy1@gmail.com"

#property indicator_separate_window

#property indicator_buffers 5
#property indicator_color1 Orange 


extern int bar = 1000;// количество кирпичей РЕНКО для отображения линии
extern int Sum = 34; // суммируемое количество последних баров, от 1 до Sum=34 

double line[];

int i,limit,sum; 
//========================================================
int init() {
   IndicatorBuffers(1);

   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(0, line);

   IndicatorDigits(Digits); 
   
IndicatorShortName("indikator MA");

return(0);
}

int deinit()
{

return(0);
}

//====================================================================
int start() {   
      limit = bar - IndicatorCounted(); 
      i = limit;

//РИСУЕМ ГРАФИК
//--------------------------------------------------------------------
   while(i>=0)
{  
sum=0;
   for(int t = Sum; t > 0; t--){
if(Open[i+t-1]-Close[i+t-1]>0)sum=sum-1; else sum=sum+1;
}

       line[i] = sum;
        i--;
}
//--------------------------------------------------------------------
   return(0);
}
//+------------------------------------------------------------------+

Если нужна вся история, сделай так: в строке

 limit = bar - IndicatorCounted();

замени bar на Bars, если нужно ограничение по истории, замени на:

 limit = MathMin(Bars - IndicatorCounted(),bar);

  • #4 096

Если нужна вся история, сделай так: в строке

 limit = bar - IndicatorCounted();

замени bar на Bars, если нужно ограничение по истории, замени на:

 limit = MathMin(Bars - IndicatorCounted(),bar);

Работает*hi*
Спасибо дружище))

  • #4 097

Скажите как прописать:
За последние 10 баров одно из значений 0-го буфера стохастика было больше 80.
Спасибо.

  • #4 098

ПОМОГИТЕ ПОЖАЛУЙСТА НАПИСАТЬ ВОТ ТАКОЙ ИНДИКАТОР ИСОИ (Импульс Силы Открытого Интереса):

Что бы высчитать ИСОИ – можно использовать любое кол-во баров но не меньше 3х….
Коэффициент ИСОИ со знаком «-« – интерес в шорт
Коэффициент ИСОИ со знаком «+« – интерес в лонг
ИСОИ
от 0 до +- 0.5 слабый импульс
от +- 0.5 до +- 1.0 сильный импульс
Возьмем к примеру 5 баров.
Теперь суммируем объем (V) – 21597
Суммируем время (Т) -23089 или 6.41 часа
Суммируем Дельту со знаком (D) – +639
Суммируем цену в пунктах (минимальная и максимальная цена за 5 баров) (Р) – 25 пунктов.
1. Вычисляем коэффициент диапазона
Т Р = K
6.41 25 = 0.23
2. Вычисляем соотношение Дельты
D x 100% V = G
+639 х 100% 21597 = 2.96%
2. Вычисляем ИСОИ
K x G = ИСОИ
0.23 х 2.96 = 0.68
Или 68% – импульс Открытого Интереса – сильный…

  • #4 099

ПОМОГИТЕ ПОЖАЛУЙСТА НАПИСАТЬ ВОТ ТАКОЙ ИНДИКАТОР ИСОИ (Импульс Силы Открытого Интереса):

Что бы высчитать ИСОИ – можно использовать любое кол-во баров но не меньше 3х….
Коэффициент ИСОИ со знаком «-« – интерес в шорт
Коэффициент ИСОИ со знаком «+« – интерес в лонг
ИСОИ
от 0 до +- 0.5 слабый импульс
от +- 0.5 до +- 1.0 сильный импульс
Возьмем к примеру 5 баров.
Теперь суммируем объем (V) – 21597
Суммируем время (Т) -23089 или 6.41 часа
Суммируем Дельту со знаком (D) – +639
Суммируем цену в пунктах (минимальная и максимальная цена за 5 баров) (Р) – 25 пунктов.
1. Вычисляем коэффициент диапазона
Т Р = K
6.41 25 = 0.23
2. Вычисляем соотношение Дельты
D x 100% V = G
+639 х 100% 21597 = 2.96%
2. Вычисляем ИСОИ
K x G = ИСОИ
0.23 х 2.96 = 0.68
Или 68% – импульс Открытого Интереса – сильный…

А как у тебя получилось за 5 баров больше шести часов?
Если Н1 то не больше пяти часов, а если Н4 то гораздо больше…
А в общем-то эффективность метода надо проверять. Но у меня сейчас нет времени этим заниматься.

  • #4 100

Коллеги перезагрузка.)*hi* Вопрос к профи.

Есть идея с изменением процента закрытия дальнего с изменением просадки по Эквити.
А именно условие. Внешние переменные и условие. Сообразил так.

extern double CloseProfitprc  = 1;     //закрывать по суммарному проц

extern double PercentLossCloseProfitprc1 = 1;
extern double PercentLossCloseProfitprc2 = 5;
extern double PercentLossCloseProfitprc3 = 10;
extern double PercentLossCloseProfitprc4 = 20;
   
int start3()
{ 
  if (AccountEquity()<=AccountBalance()*(1-PercentLossCloseProfitprc1  /100)) {CloseProfitprc=1;}
    else 
  if (AccountEquity()<=AccountBalance()*(1-PercentLossCloseProfitprc2  /100)) {CloseProfitprc=0.5;}
    else
  if (AccountEquity()<=AccountBalance()*(1-PercentLossCloseProfitprc3  /100)) {CloseProfitprc=0.1;}
    else
  if (AccountEquity()<=AccountBalance()*(1-PercentLossCloseProfitprc4  /100)) {CloseProfitprc=0.01;}     
//////////////////////////////////////

   return(0);
  }

Работать будет.? Что я пока не врубаюсь. Может без else?

Everyone has to go through same process

Please understand: MetaQuotes has changed almost everything in MQL. They have tried to make MQL compatible with old versions but there are still points they did not make compatible intentionally. We host thousands of source code from clients and i would like to introduce you to common compiler problems in new Metatrader Builds. This may help you to adapt your code. This page will be updated continiously, plesae check this page regularly and post it to your friends.

Variable Names does not allow special characters and points

Statement from MetaQuotes about this subject is clear: “Now, variable names cannot contain special characters and points, and new MQL4 language keywords cannot be used as names. Old MQL4 programs can be recompiled with the new compiler in order to easily correct all such errors while following the compiler’s messages.” We see many such errors, fixing this kind of error is pretty easy. You open your source in MetaEditor and start replacing all variable names with specialchars (this also includes point) with names without specialchars. This is very easy and common compiler error in new builds. Compiler may throw “semicolor expected” error by this problem.

System Functions cannot be overwritten

New compiler is protecting System Functions. As example: if you had a function called “string StringReplace” in your code and Metatrader has introduced new function (they have introduced many new functions) with same name, this will collide and you will see error “override system function” in your compiler.

Cross References

int pos2 = pos2; This was possible in previous compiler now you will get “undeclared identifier”. New compiler is more strict but this was bad coding style anyways, so its good you fix such problems in your code. New compiler will throw error anyways. There is no way to ignore this error.

event handling function not found

This may have several reasons. Make sure you have read this page first to understand about event handling functions. They are basically start(), init(), deinit(), OnStart(), OnInit(), OnDeinit(), OnTick(), OnTrade() etc… Make sure you have at least OnInit() or init() and start() or OnStart() functions defined in your source code. If this does not solve your problem we have discovered strange behaviour in new compiler. Simply remove the start() or/and init() line in MetaEditor and type it once again and try to compile again. This is usually working and probably a bug on compiler. For Video Demonstratino check: Watch Video

Expressions are not allowed on a global scope

Normally every expression must be inside a function and out ouf functions you can only define new variables and define compiler settings. If you get this error make sure and find any expression outside of function. Here is very good example:

Fixing this error is easy as well, simply locate such lines and make sure you put them inside proper event function such as OnInit or OnStart. Of course you must know what you are doing to decide where it should be placed

Invalid index value

double Spread[0]; This is not allowed anymore. Arrays with 0 size does not exist. Its better you simply remove [0] tag if you dont use ArrayResize later. If you are using ArrayResize later start with a start index like “[10]” instead of “[0]”. You may also try to put “[1]” to fix this error. But depending on intention it may vary how to fix this error. You may also get “array required” error if you remove [0] index. This means that your source code requires an error. Try to put [10] for example.

Reserved words cannot be used as Variable Name

If you get “unexpected token” you may be using a reserved word as variable name:


bool long=false;

bool short=false;

As you know new compiler now supports new variable types long and short. These are reserved keywords for mql and they cannot be used in variable names anymore. There are dozenz of other keywords they have been introduced in new mql compiler. Make sure you change variable names simply. For example append an understore to fix this problem, of course you must change whole source code with this variable name, otherwise you will get big gargabe. This error may also throw “name expected” error in combination.

“comma expected” but problem somewhere else

If you have a code like this:


#property link "http://www.fx1.net"

#define link "http://www.metaquotes.net/"

Compiler shows you the error somewhere random! If you dobule click to compiler error, it brings you to nirvana. This is obviously a bug inside Compiler. This is caused by using “link” property also inside #define. There are many predefined properties. Finding this error is not very easy. Check all your #define lines if they contain any reserved property keyword!

Switch needs type of integer


Previous MQL compiler did not throw any error here but its different now. Try to fix this error by rewriting and re-thinking your algoritm. Non-integer values cannot be compared well without loosing precission, thats why MQL requires integer values. This is industry standard for switch expression. Please adapt your code regarding that.

Case value already used


case 1: Ls_4 = "no error"; break;

case 1: Ls_4 = "no error and no result"; break;

This is now allowed anymore. Please resolve this conflict. New switch cannot manage such a conflict and throws “case value already used” error

100

File reading error

101

Error of opening an *. EX4 for writing

103

Not enough free memory to complete compilation

104

Empty syntactic unit unrecognized by compiler

105

Incorrect file name in #include

106

Error accessing a file in #include (probably the file does not exist)

108

Inappropriate name for #define

109

Unknown command of preprocessor (valid #include, #define, #property, #import)

110

Symbol unknown to compiler

111

Function not implemented (description is present, but no body)

112

Double quote (“) omitted

113

Opening angle bracket (<) or double quote (“) omitted

114

Single quote (‘) omitted

115

Closing angle bracket “>” omitted

116

Type not specified in declaration

117

No return operator or return is found not in all branches of the implementation

118

Opening bracket of call parameters was expected

119

Error writing EX4

120

Invalid access to an array

121

The function is not of void type and the return operator must return a value

122

Incorrect declaration of the destructor

123

Colon “:” is missing

124

Variable is already declared

125

Variable with such identifier already declared

126

Variable name is too long (> 250 characters)

127

Structure with such identifier already defined

128

Structure is not defined

129

Structure member with the same name already defined

130

No such structure member

131

Breached pairing of brackets

132

Opening parenthesis “(” expected

133

Unbalanced braces (no “}”)

134

Difficult to compile (too much branching, internal stack levels are overfilled)

135

Error of file opening for reading

136

Not enough memory to download the source file into memory

137

Variable is expected

138

Reference cannot be initialized

140

Assignment expected (appears at declaration)

141

Opening brace “{” expected

142

Parameter can be a dynamic array only

143

Use of “void” type is unacceptable

144

No pair for “)” or “]”, i.e. “(or” [ ” is absent

145

No pair for “(or” [ “, i.e. “) “or”] ” is absent

146

Incorrect array size

147

Too many parameters (> 64)

149

This token is not expected here

150

Invalid use of operation (invalid operands)

151

Expression of void type not allowed

152

Operator is expected

153

Misuse of break

154

Semicolon “;” expected

155

Comma “,” expected

156

Must be a class type, not struct

157

Expression is expected

158

“non HEX character” found in HEX or too long number (number of digits> 511)

159

String-constant has more than 65534 characters

160

Function definition is unacceptable here

161

Unexpected end of program

162

Forward declaration is prohibited for structures

163

Function with this name is already defined and has another return type

164

Function with this name is already defined and has a different set of parameters

165

Function with this name is already defined and implemented

166

Function overload for this call was not found

167

Function with a return value of void type cannot return a value

168

Function is not defined

170

Value is expected

171

In case expression only integer constants are valid

172

The value of case in this switch is already used

173

Integer is expected

174

In #import expression file name is expected

175

Expressions are not allowed on global level

176

Omitted parenthesis “)” before “;”

177

To the left of equality sign a variable is expected

178

The result of expression is not used

179

Declaring of variables is not allowed in case

180

Implicit conversion from a string to a number

181

Implicit conversion of a number to a string

182

Ambiguous call of an overloaded function (several overloads fit)

183

Illegal else without proper if

184

Invalid case or default without a switch

185

Inappropriate use of ellipsis

186

The initializing sequence has more elements than the initialized variable

187

A constant for case expected

188

A constant expression required

189

A constant variable cannot be changed

190

Closing bracket or a comma is expected (declaring array member)

191

Enumerator identifier already defined

192

Enumeration cannot have access modifiers (const, extern, static)

193

Enumeration member already declared with a different value

194

There is a variable defined with the same name

195

There is a structure defined with the same name

196

Name of enumeration member expected

197

Integer expression expected

198

Division by zero in constant expression

199

Wrong number of parameters in the function

200

Parameter by reference must be a variable

201

Variable of the same type to pass by reference expected

202

A constant variable cannot be passed by a non-constant reference

203

Requires a positive integer constant

204

Failed to access protected class member

205

Import already defined in another way

208

Executable file not created

209

‘OnCalculate’ entry point not found for the indicator

210

The continue operation can be used only inside a loop

211

Error accessing private (closed) class member

213

Method of structure or class is not declared

214

Error accessing private (closed) class method

216

Copying of structures with objects is not allowed

218

Index out of array range

219

Array initialization in structure or class declaration not allowed

220

Class constructor cannot have parameters

221

Class destructor can not have parameters

222

Class method or structure with the same name and parameters have already been declared

223

Operand expected

224

Class method or structure with the same name exists, but with different parameters (declaration!=implementation)

225

Imported function is not described

226

ZeroMemory() is not allowed for objects with protected members or inheritance

227

Ambiguous call of the overloaded function (exact match of parameters for several overloads)

228

Variable name expected

229

A reference cannot be declared in this place

230

Already used as the enumeration name

232

Class or structure expected

235

Cannot call ‘delete’ operator to delete the array

236

Operator ‘ while’ expected

237

Operator ‘delete’ must have a pointer

238

There is ‘default’ for this ‘switch’ already

239

Syntax error

240

Escape-sequence can occur only in strings (starts with ”)

241

Array required – square bracket ‘[‘ does not apply to an array, or non arrays are passed as array parameters

242

Can not be initialized through the initialization sequence

243

Import is not defined

244

Optimizer error on the syntactic tree

245

Declared too many structures (try to simplify the program)

246

Conversion of the parameter is not allowed

247

Incorrect use of the ‘delete’ operator

248

It’s not allowed to declare a pointer to a reference

249

It’s not allowed to declare a reference to a reference

250

It’s not allowed to declare a pointer to a pointer

251

Structure declaration in the list of parameter is not allowed

252

Invalid operation of typecasting

253

A pointer can be declared only for a class or structure

256

Undeclared identifier

257

Executable code optimizer error

258

Executable code generation error

260

Invalid expression for the ‘switch’ operator

261

Pool of string constants overfilled, simplify program

262

Cannot convert to enumeration

263

Do not use ‘virtual’ for data (members of a class or structure)

264

Cannot call protected method of class

265

Overridden virtual functions return a different type

266

Class cannot be inherited from a structure

267

Structure cannot be inherited from a class

268

Constructor cannot be virtual (virtual specifier is not allowed)

269

Method of structure cannot be virtual

270

Function must have a body

271

Overloading of system functions (terminal functions) is prohibited

272

Const specifier is invalid for functions that are not members of a class or structure

274

Not allowed to change class members in constant method

276

Inappropriate initialization sequence

277

Missed default value for the parameter (specific declaration of default parameters)

278

Overriding the default parameter (different values in declaration and implementation)

279

Not allowed to call non-constant method for a constant object

280

An object is necessary for accessing members (a dot for a non class/structure is set)

281

The name of an already declared structure cannot be used in declaration

284

Unauthorized conversion (at closed inheritance)

285

Structures and arrays cannot be used as input variables

286

Const specifier is not valid for constructor/destructor

287

Incorrect string expression for a datetime

288

Unknown property (#property)

289

Incorrect value of a property

290

Invalid index for a property in #property

291

Call parameter omitted – <func (x,)>

293

Object must be passed by reference

294

Array must be passed by reference

295

Function was declared as exportable

296

Function was not declared as exportable

297

It is prohibited to export imported function

298

Imported function cannot have this parameter (prohibited to pass a pointer, class or structure containing a dynamic array, pointer, class, etc.)

299

Must be a class

300

#import was not closed

302

Type mismatch

303

Extern variable is already initialized

304

No exported function or entry point found

305

Explicit constructor call is not allowed

306

Method was declared as constant

307

Method was not declared as constant

308

Incorrect size of the resource file

309

Incorrect resource name

310

Resource file opening error

311

Resource file reading error

312

Unknown resource type

313

Incorrect path to the resource file

314

The specified resource name is already used

315

Argument expected for the function-like macro

316

Unexpected symbol in macro definition

317

Error in formal parameters of the macro

318

Invalid number of parameters for a macro

319

Too many parameters for a macro

320

Too complex, simplify the macro

321

Parameter for EnumToString() can be only an enumeration

322

The resource name is too long

323

Unsupported image format (only BMP with 24 or 32 bit color depth is supported)

324

An array cannot be declared in operator

325

The function can be declared only in the global scope

326

The declaration is not allowed for the current scope

327

Initialization of static variables with the values of local variables is not allowed

328

Illegal declaration of an array of objects that do not have a default constructor

329

Initialization list allowed only for constructors

330

No function definition after initialization list

331

Initialization list is empty

332

Array initialization in a constructor is not allowed

333

Initializing members of a parent class in the initialization list is not allowed

334

Expression of the integer type expected

335

Memory required for the array exceeds the maximum value

336

Memory required for the structure exceeds the maximum value

337

Memory required for the variables declared on the global level exceeds the maximum value

338

Memory required for local variables exceeds the maximum value

339

Constructor not defined

340

Invalid name of the icon file

341

Could not open the icon file at the specified path

342

The icon file is incorrect and is not of the ICO format

343

Reinitialization of a member in a class/structure constructor using the initialization list

344

Initialization of static members in the constructor initialization list is not allowed

345

Initialization of a non-static member of a class/structure on a global level is not allowed

346

The name of the class/structure method matches the name of an earlier declared member

347

The name of the class/structure member matches the name of an earlier declared method

348

Virtual function cannot be declared as static

349

The const modifier is not allowed for static functions

350

Constructor or destructor cannot be static

351

Non-static member/method of a class or a structure cannot be accessed from a static function

352

An overload operation (+,-,[],++,– etc.) is expected after the operator keyword

353

Not all operations can be overloaded in MQL4

354

Definition does not match declaration

355

An invalid number of parameters is specified for the operator

356

Event handling function not found

357

Method cannot be exported

358

A pointer to the constant object cannot be normalized by a non-constant object

359

Class templates are not supported yet

360

Function template overload is not supported yet

361

Function template cannot be applied

362

Ambiguous parameter in function template (several parameter types can be applied)

363

Unable to determine the parameter type, by which the function template argument should be normalized

364

Incorrect number of parameters in the function template

365

Function template cannot be virtual

366

Function templates cannot be exported

367

Function templates cannot be imported

368

Structures containing the objects are not allowed

369

String arrays and structures containing the objects are not allowed

370

A static class/structure member must be explicitly initialized

371

Compiler limitation: the string cannot contain more than 65 535 characters

372

Inconsistent #ifdef/#endif

373

Object of class cannot be returned, copy constructor not found

374

Non-static members and methods cannot be used

375

OnTesterInit() impossible to use without OnTesterDeinit()

376

Redefinition of formal parameter ‘%s’

377

Macro __FUNCSIG__ and __FUNCTION__ cannot appear outside of a function body

378

Invalid returned type. For example, this error will be produced for functions imported from DLL that return structure or pointer.

379

Template usage error

380

Not used

381

Illegal syntax when declaring pure virtual function, only “=NULL” or “=0” are allowed

382

Only virtual functions can be declared with the pure-specifier (“=NULL” or “=0”)

383

Abstract class cannot be instantiated

384

A pointer to a user-defined type should be applied as a target type for dynamic casting using the dynamic_cast operator

385

“Pointer to function” type is expected

386

Pointers to methods are not supported

387

Error — cannot define the type of a pointer to function

388

Type cast is not available due to private inheritance

389

A variable with const modifier should be initialized during declaration

Suchmaschine –
Reisen –
Wavesnode –
Facebook Forum –
Spam Firewall

—————————————————————————————————————————–

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 – 2023, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 – 2023 vbdesigns.de

SEO by vBSEO 3.6.1

Добавить комментарий