Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

Страница 1 из 11
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Ошибка компиляции GetAncestor
Ошибка компиляции GetAncestor

expforexДата: Среда, 26.11.2014, 20:05 | Сообщение # 1
Главный Администартор
Группа: Администраторы
Сообщений: 8959
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Всем привет.

У меня многие спрашивают:

Цитата
что делать, если при компиляции в моих экспертах - появляется ошибка. GetAncestor - function is not define

действительно, в последних билдах терминала - данный функционал убрали.
Отвечает он за то, чтобы отключать кнопку советники - после получения прибыли.
Т.е. блок:
Код
18. Функция закрытия по общей прибыли \ убытку
Данные параметры регулируют возможность закрыть сделку\сделки по данному инструменту и магику, достигнув один из параметров
Параметры
TypeofClose=1; -Тип закрытия по прибыли  1 - Доллар, 2 -Пункты ,3 -%Эквити ,4 -%Балан
CloseProfit=false; -Закрывать если +
prifitessss=10; -Количество юнитов(в зависимости от выбора TypeofClose) для закрытия профита
CloseLoss=false; -закрывать если -
lossss=-10; -Количество юнитов(в зависимости от выбора TypeofClose) для закрытия убытка
OFFAllEaAfterClosePROF=false; -Выключать все советники и скрипты после закрытия прибыли.
OFFAllEaAfterCloseLOSS=false; -Выключать все советники и скрипты после закрытия убытка.
Например:
Если Вы хотите закрыть несколько сделок BUY \ SELL при прибыли по счету в 10 $:
TypeofClose=1; CloseProfit=true; prifitessss=10;
Если Вы хотите закрыть несколько сделок BUY \ SELL при убытке по счету в 200 пунктов:
TypeofClose=2; CloseLoss=true; lossss=200;
Если Вы хотите закрыть несколько сделок BUY \ SELL при убытке по счету в 5 % от депозита, а также закрыть несколько сделок BUY \ SELL при прибыли по счету в 10 % от депозита:
TypeofClose=4; CloseLoss=true; lossss=5;CloseProfit=true; prifitessss=10;
При этом Вы можете отключить советники после закрытия включая функцию OFFAllEaAfterClosePROF и\или OFFAllEaAfterCloseLOSS. Тогда советник после общего закрытия отключит все советники

а именно : отключение советников - не работает без данного функционала.

Пути решения: чтобы решить данную проблему есть два выхода: смерится что данный функционал работать не будет и убрать его, либо же найти библиотеку user32.dll - с данным функционалом
Я не знаю почему у Вас пишет данную ошибку. Это стандартная библиотека Виндовс.

1 способ, Убрать связь с данной функцией.
В любом эксперте находите следующий код:

Код
#import "user32.dll"
int GetAncestor(int hWnd,int gaFlags);
#import


удаляете его, далее

Код
void startdestroy(bool fals=true)
     {
      int hChart=WindowHandle(Symbol(),Period());
      int hMetaTrader=GetAncestor(hChart,2);
      if(fals==true)
        {
         if(!IsExpertEnabled())PostMessageA(hMetaTrader,WM_COMMAND,PUSKSTOP,0);  // пуск или остановка советника

        }
      if(fals==false)
        {
         if(IsExpertEnabled())PostMessageA(hMetaTrader,WM_COMMAND,PUSKSTOP,0);  // пуск или остановка советника

        }

     }


Заменяете на
Код
void startdestroy(bool fals=true)
     {
      if(fals==true)
        {

        }
      if(fals==false)
        {
       ExpertRemove();

        }

     }


2 способ, кидаете библиотеку user32.dll в папку C:\Windows\System32-
файл в прикреплении

что дает данная функция?
http://msdn.microsoft.com/ru-ru....5).aspx

информация для пищи:
http://forum.mql4.com/ru/22509

Прикрепления: user32.dll(984Kb)


Программирование на заказ || Наши Разработки

 
СообщениеВсем привет.

У меня многие спрашивают:
Цитата
что делать, если при компиляции в моих экспертах - появляется ошибка. GetAncestor - function is not define

действительно, в последних билдах терминала - данный функционал убрали.
Отвечает он за то, чтобы отключать кнопку советники - после получения прибыли.
Т.е. блок:
Код
18. Функция закрытия по общей прибыли \ убытку
Данные параметры регулируют возможность закрыть сделку\сделки по данному инструменту и магику, достигнув один из параметров
Параметры
TypeofClose=1; -Тип закрытия по прибыли  1 - Доллар, 2 -Пункты ,3 -%Эквити ,4 -%Балан
CloseProfit=false; -Закрывать если +
prifitessss=10; -Количество юнитов(в зависимости от выбора TypeofClose) для закрытия профита
CloseLoss=false; -закрывать если -
lossss=-10; -Количество юнитов(в зависимости от выбора TypeofClose) для закрытия убытка
OFFAllEaAfterClosePROF=false; -Выключать все советники и скрипты после закрытия прибыли.
OFFAllEaAfterCloseLOSS=false; -Выключать все советники и скрипты после закрытия убытка.
Например:
Если Вы хотите закрыть несколько сделок BUY \ SELL при прибыли по счету в 10 $:
TypeofClose=1; CloseProfit=true; prifitessss=10;
Если Вы хотите закрыть несколько сделок BUY \ SELL при убытке по счету в 200 пунктов:
TypeofClose=2; CloseLoss=true; lossss=200;
Если Вы хотите закрыть несколько сделок BUY \ SELL при убытке по счету в 5 % от депозита, а также закрыть несколько сделок BUY \ SELL при прибыли по счету в 10 % от депозита:
TypeofClose=4; CloseLoss=true; lossss=5;CloseProfit=true; prifitessss=10;
При этом Вы можете отключить советники после закрытия включая функцию OFFAllEaAfterClosePROF и\или OFFAllEaAfterCloseLOSS. Тогда советник после общего закрытия отключит все советники

а именно : отключение советников - не работает без данного функционала.

Пути решения: чтобы решить данную проблему есть два выхода: смерится что данный функционал работать не будет и убрать его, либо же найти библиотеку user32.dll - с данным функционалом
Я не знаю почему у Вас пишет данную ошибку. Это стандартная библиотека Виндовс.

1 способ, Убрать связь с данной функцией.
В любом эксперте находите следующий код:

Код
#import "user32.dll"
int GetAncestor(int hWnd,int gaFlags);
#import


удаляете его, далее

Код
void startdestroy(bool fals=true)
     {
      int hChart=WindowHandle(Symbol(),Period());
      int hMetaTrader=GetAncestor(hChart,2);
      if(fals==true)
        {
         if(!IsExpertEnabled())PostMessageA(hMetaTrader,WM_COMMAND,PUSKSTOP,0);  // пуск или остановка советника

        }
      if(fals==false)
        {
         if(IsExpertEnabled())PostMessageA(hMetaTrader,WM_COMMAND,PUSKSTOP,0);  // пуск или остановка советника

        }

     }


Заменяете на
Код
void startdestroy(bool fals=true)
     {
      if(fals==true)
        {

        }
      if(fals==false)
        {
       ExpertRemove();

        }

     }


2 способ, кидаете библиотеку user32.dll в папку C:\Windows\System32-
файл в прикреплении

что дает данная функция?
http://msdn.microsoft.com/ru-ru....5).aspx

информация для пищи:
http://forum.mql4.com/ru/22509

Автор - expforex
Дата добавления - 26.11.2014 в 20:05
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Ошибка компиляции GetAncestor
Страница 1 из 11
Поиск:


WebMoney Яндекс цитирования.