//+------------------------------------------------------------------------------------------+//| DeleteObject.mq4 |//+------------------------------------------------------------------------------------------+//+------------------------------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------------------------------+//---------------------------------------------------------------------------------------- 1 -#include <Копия WinUser32.mqh> //подключаемый файл, к-й неожходим для работы функции MessageBox: в этом файле в отличии от файла <WinUser32.mqh> в разделе MessageBox() Flags добавлена строка: #define MB_CANCELTRYCONTINUE 0x00000006 //---------------------------------------------------------------------------------------- 2 -int start()
{
double Timestart= GetTickCount (); //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта if ( ObjectsTotal ()== 0 ) //если объектов на графике нет
{ //начало ifAlert ( "На графике нет графических объектов" ); //то делаем сообщение на экран...return ; //...и выходим
} //конец if Alert ( "На графике зафиксировано " , ObjectsTotal (), " Объектов" );
Sleep ( 3000 );
int ret= MessageBox ( "Удалить ВСЕ графические объекты?" , "Удаление графических объектов" , MB_YESNO | MB_ICONQUESTION ); //функция MessageBox: вопрос на экранif (ret== 6 ) //если ответ ДА,...
{
ObjectsDeleteAll (); //..., то удаляем ВСЕ объекты из ВСЕХ окон текущего графикаif (! ObjectsDeleteAll ()) Alert ( "При удалениии объектов возникла ошибка " , GetLastError ()); //если удаление не удалось, то сообщение на экранAlert ( "ВСЕ графические объекты успешно удалены" ); //сообщение на экран в случае успешного удаления сех объектовreturn ; //и выход из start
} //конец if //--------------------если ответ НЕТ? то перебираем объекты по списку---------------------- 3 -int obj_total= ObjectsTotal (); //получаем общее количество графических объектовstring obj_name; //объявляем переменную "имя объекта"for ( int i=obj_total- 1 ;i>= 0 ;i--) //цикл по удалению объекта
{ //начало for
obj_name= ObjectName (i); //имя текущего удаляемого объектаAlert ( "Удаляется объект: " ,obj_name); //сообщение на экран
ret= MessageBox ( "Удалить графический объект?" , "Удаление графического объекта" , MB_YESNO | MB_ICONQUESTION ); //функция MessageBox: вопрос на экранif (ret== 7 ) continue ; //если ответ НЕТ, то на следующую итерацию ObjectDelete (obj_name); //если ответ ДА, то удаляем текущий объект с именем obj_name int error= GetLastError (); //вычисляем код возможной ошибки, к-я могла появиться при неудачном удалении Графического объекта номер iif (error!= 0 ) Alert ( "При удалении объекта " ,obj_name, " возникла ошибка " ,error); continue ; //если функция ObjectDelete(obj_name) вернуа значение ЛОЖЬ (т.е. не удалила текущий объект), то сообщение об ошибке при удаленииAlert ( "Объект " ,obj_name, " успешно удален" ); //сообщение об успешном удалении
} //конец forComment ( "\nСкрипт выполнялся всего " , GetTickCount ()-Timestart, " миллисекунд, из них: " , MathFloor (( GetTickCount ()-Timestart)/ 1000 ), " секунд " ,(( GetTickCount ()-Timestart)/ 1000 - MathFloor (( GetTickCount ()-Timestart)/ 1000 ))* 1000 , " миллисекунд" ); //печать сообщения вна экран//---------------------------------------------------------------------------------------- 3 -return ( 0 );
}
//---------------------------------------------------------------------------------------- 4 -
2 단어로. 스크립트는 클라이언트 터미널 창에서 그래픽 개체를 제거 하도록 설계되었습니다. 이 경우 삭제는 모든 개체를 삭제하거나 개체를 열거하고 사용자가 선택한 개체만 삭제하는 두 가지 옵션 중 하나로 수행됩니다.
질문 : 왜 while 루프 에서 다음 객체를 삭제한 후 마지막 함수 Alert ("Object ",obj _ name ," was successfully deleted")가 화면에 해당 메시지를 표시하지 않고 자체적으로 매니페스트하지 않습니다( while 루프 의 해당 객체는 삭제되지만)
참고 : 스크립트의 헤드 부분에 포함 파일이 있는 줄이 있습니다 . #include<CopyofWinUser32.mqh> 이는 클라이언트 터미널과 함께 제공된 원래 포함 파일과 한 줄씩 다릅니다 .#include<WinUser32.mqh> , 그래서 나는 또한 그것을 아래에 준다
질문 : 왜 while 루프 에서 다음 객체를 삭제한 후 마지막 함수 Alert ("Object ",obj _ name ," was successfully deleted")가 화면에 해당 메시지를 표시하지 않고 자체적으로 매니페스트하지 않습니다( while 루프 의 해당 객체는 삭제되지만)
int error= GetLastError (); //вычисляем код возможной ошибки, к-я могла появиться при неудачном удалении Графического объекта номер iif (error!= 0 ) Alert ( "При удалении объекта " ,obj_name, " возникла ошибка " ,error); continue ; //если функция ObjectDelete(obj_name) вернуа значение ЛОЖЬ (т.е. не удалила текущий объект), то сообщение об ошибке при удаленииAlert ( "Объект " ,obj_name, " успешно удален" ); //сообщение об успешном удалении
if(error != 0) 은 Alert 에만 적용되기 때문에, 그 이후에는 계속이 항상 실행되고 다음 Alert 에 도달하지 않습니다.
문제가 무엇입니까? 표시기의 닫기를 차이(High-Low) 또는 나열된 것 중 다른 것으로 교체합니다. 사실, 어떤 경우에는 별도의 창에 표시기를 그려야 할 수도 있습니다.
다음 스크립트를 작성했습니다.
2 단어로. 스크립트는 클라이언트 터미널 창에서 그래픽 개체를 제거 하도록 설계되었습니다. 이 경우 삭제는 모든 개체를 삭제하거나 개체를 열거하고 사용자가 선택한 개체만 삭제하는 두 가지 옵션 중 하나로 수행됩니다.
질문 : 왜 while 루프 에서 다음 객체를 삭제한 후 마지막 함수 Alert ("Object ", obj _ name ," was successfully deleted")가 화면에 해당 메시지를 표시하지 않고 자체적으로 매니페스트하지 않습니다( while 루프 의 해당 객체는 삭제되지만)
참고 : 스크립트의 헤드 부분에 포함 파일이 있는 줄이 있습니다 . # include <Copy of WinUser 32.mqh > 이는 클라이언트 터미널과 함께 제공된 원래 포함 파일과 한 줄씩 다릅니다 . # include < WinUser 32.mqh > , 그래서 나는 또한 그것을 아래에 준다
피. 에스. 포럼을 어지럽히지 않기 위해 답변에 미리 감사드립니다.
어떤 지표를 교체하는 것이 가장 좋습니까? 그들은 여전히 별도로 누락 되었습니까?
예를 들어 MA에는 몇 가지 옵션이 있지만 귀하가 지정한 옵션은 없습니다.
따라서 거의 모든 지표를 사용하여 보편적으로 만들 수 있습니다.
질문 : 왜 while 루프 에서 다음 객체를 삭제한 후 마지막 함수 Alert ("Object ", obj _ name ," was successfully deleted")가 화면에 해당 메시지를 표시하지 않고 자체적으로 매니페스트하지 않습니다( while 루프 의 해당 객체는 삭제되지만)
내가 무엇을 말할 수 있습니까? 나는 아직 아무것도 이해하지 못합니다.이 모든 것이 돈을 버는 것뿐이라는 것을 이해합니다. 조언가가 배수되면 일주일에 한 번 플랫폼에 들어가서 3000의 보증금으로 1000을 벌 수 있습니다
안녕하세요! 사이클 카운터(예: FOR)가 당일 주문을 찾도록 하는 방법을 알려주세요!
ExistInHistoryToDay().
이 게으른 프로그래머가 일주일에 한 번이라도 함정에 빠져 스스로 목을 졸라매는 것뿐입니다. kokodit에 완전히 부풀어 오릅니다.
+100500 8-)
이 게으른 프로그래머들이 일주일에 한 번이라도 함정에 빠져 스스로 목을 졸라매는 것뿐입니다. kokodit에 완전히 부풀어 오릅니다.
공은 어때?