//+------------------------------------------------------------------------------------------+//| 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 -
Em 2 palavras. O script é projetado para excluir objetos gráficos da janela do terminal do cliente. O script pode ser usado de uma de duas maneiras: ou todos os objetos são excluídos ou o script passa por uma série de objetos e exclui somente aqueles selecionados pelo usuário.
Pergunta: por que no loop while após o próximo objeto é excluído o último Alerta("Objeto ",obj_name," excluído com sucesso") função não mostra a mensagem correspondente na tela e não aparece de forma alguma (embora o objeto seja excluído no loop while )
Nota: a linha com o arquivo include #include < WinUser32.mqh> no cabeçalho do script, que difere do arquivo include original #include <WinUser32.mqh>, fornecido com o terminal do cliente, portanto também é dado abaixo
P.S. A fim de não desperdiçar o fórum, obrigado antecipadamente por sua resposta.
Pergunta: por que no loop while, após o próximo objeto ser excluído, a última função Alerta("Objeto ",obj_name," excluído com sucesso") não exibe uma mensagem correspondente na tela e não se mostra de forma alguma (embora o objeto correspondente seja excluído no loop while )
int error=GetLastError(); //вычисляем код возможной ошибки, к-я могла появиться при неудачном удалении Графического объекта номер iif(error!=0)Alert("При удалении объекта ",obj_name," возникла ошибка ",error);continue;//если функция ObjectDelete(obj_name) вернуа значение ЛОЖЬ (т.е. не удалила текущий объект), то сообщение об ошибке при удаленииAlert("Объект ",obj_name," успешно удален"); //сообщение об успешном удалении
Isto porque se(erro != 0) só afetará um Alerta, depois do qual continuará sempre e o próximo Alerta nunca será invocado
O que posso dizer que ainda não entendo nada, entendo apenas uma coisa que se trata de ganhar dinheiro, por que fazer consultores se eles estão perdendo, você pode entrar na plataforma uma vez por semana e ganhar 1000 em um depósito de 3000
kamolot: Para que servem os EAs se eles estão perdendo dinheiro, você pode entrar na plataforma uma vez por semana e ganhar 1000 em um depósito de 3000.
Eles simplesmente não têm coragem de parar na plataforma mesmo uma vez por semana e ganhar mil dólares. Todos eles estão cansados demais só para ganhar dinheiro.
GaryKa: É que estes programadores labirínticos não têm o coração para vir nem mesmo uma vez por semana e ganhar o seu pauzinho. Eles estão todos muito cansados para ganhar dinheiro.
GaryKa: É que estes programadores labirínticos não têm o coração para vir nem mesmo uma vez por semana e ganhar o seu pauzinho. Eles estão tão fartos disso que só querem ganhar dinheiro.
Abro uma ordem, e depois depende do equilíbrio em que fechou.
Se o saldo for menor que zero, registramos a perda, e se for maior que zero, começamos a trabalhar desde o início.
Se nossa perda for menor que zero, nós a fixamos e atribuímos a uma variável, por exemplo: Menos
Menos = OrderProfit (- 45 centavos);
AccountAqviti + Menos + meu valor (minha consciência)
mais adiante no próximo pedido
se o lucro desta ordem for maior que AccountAqviti + Menos + meu valor (minha consciência), então fechamos a ordem; se não, vamos mais alto que zero, então a consertamos:
(AccountAqviti + OrderProfit) - (AccountAqviti + Menos + meu valor (minha consciência)) = Menos
Escreveu o seguinte roteiro:
Em 2 palavras. O script é projetado para excluir objetos gráficos da janela do terminal do cliente. O script pode ser usado de uma de duas maneiras: ou todos os objetos são excluídos ou o script passa por uma série de objetos e exclui somente aqueles selecionados pelo usuário.
Pergunta: por que no loop while após o próximo objeto é excluído o último Alerta("Objeto ",obj_name," excluído com sucesso") função não mostra a mensagem correspondente na tela e não aparece de forma alguma (embora o objeto seja excluído no loop while )
Nota: a linha com o arquivo include #include < WinUser32.mqh> no cabeçalho do script, que difere do arquivo include original #include <WinUser32.mqh>, fornecido com o terminal do cliente, portanto também é dado abaixo
P.S. A fim de não desperdiçar o fórum, obrigado antecipadamente por sua resposta.
Qual indicador, exatamente, é o melhor para substituir? Eles ainda não estão disponíveis em uma forma separada?
O MA, por exemplo, tem isso, mas há poucas opções e as que você mencionou não estão lá:
Portanto, você pode pegar quase qualquer indicador e fazer você mesmo sua versatilidade.
Pergunta: por que no loop while, após o próximo objeto ser excluído, a última função Alerta("Objeto ",obj_name," excluído com sucesso") não exibe uma mensagem correspondente na tela e não se mostra de forma alguma (embora o objeto correspondente seja excluído no loop while )
O que posso dizer que ainda não entendo nada, entendo apenas uma coisa que se trata de ganhar dinheiro, por que fazer consultores se eles estão perdendo, você pode entrar na plataforma uma vez por semana e ganhar 1000 em um depósito de 3000
Olá! Você poderia me dizer como fazer o contador do laço (por exemplo, FOR) procurar por pedidos dentro do dia atual!
ExistInHistoryToDay().
É que estes programadores labirínticos não têm o coração para vir nem mesmo uma vez por semana e ganhar o seu pauzinho. Eles estão todos muito cansados para ganhar dinheiro.
+100500 8-)
É que estes programadores labirínticos não têm o coração para vir nem mesmo uma vez por semana e ganhar o seu pauzinho. Eles estão tão fartos disso que só querem ganhar dinheiro.
E quanto ao balão?
Esta é a minha idéia:
Abro uma ordem, e depois depende do equilíbrio em que fechou.
Se o saldo for menor que zero, registramos a perda, e se for maior que zero, começamos a trabalhar desde o início.
Se nossa perda for menor que zero, nós a fixamos e atribuímos a uma variável, por exemplo: Menos
Menos = OrderProfit (- 45 centavos);
AccountAqviti + Menos + meu valor (minha consciência)
mais adiante no próximo pedido
se o lucro desta ordem for maior que AccountAqviti + Menos + meu valor (minha consciência), então fechamos a ordem; se não, vamos mais alto que zero, então a consertamos:
(AccountAqviti + OrderProfit) - (AccountAqviti + Menos + meu valor (minha consciência)) = Menos
se Menos >= 0, então Menos = 0;