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