Главная
Форум
MQL программирование, помощь, доработки

Для того, чтобы использовать все возможности сайта, мы рекомендуем Вам person_add Зарегистрироваться или person Войти

  • Страница 1 из 1
  • 1
Форум » Cтратегии и программирование на MQL » MQL программирование, помощь, доработки » Ошибка компиляции GetAncestor
Ошибка компиляции GetAncestor
Дата: Среда, 26.11.2014, 20:05 | Сообщение # 1 Написал: Администратор expforex
Группа: Администраторы
Сообщений: 9910
Награды: 42
Статус: Оффлайн

Всем привет.

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

Цитата
что делать, если при компиляции в моих экспертах - появляется ошибка. 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

attach_file Прикрепления

user32.dll (984.5 Kb)

Форум » Cтратегии и программирование на MQL » MQL программирование, помощь, доработки » Ошибка компиляции GetAncestor
  • Страница 1 из 1
  • 1
Поиск:
Expforex Expforex Идеи для Metatrader https://www.expforex.com/1NEWDESIGN/NEWLOGO/LOGONEW.png expforex@meta.ua Украина expforex2