[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 401

 
DmitriyN:
Allora, qual è il problema? Sostituisci Close in qualsiasi indicatore con una differenza (High-Low) o uno qualsiasi degli altri elencati. Tuttavia, in alcuni casi potrebbe essere necessario rendere l'indicatore in una finestra separata.
In quale indicatore, esattamente, è meglio cambiare? Non sono ancora disponibili in forma separata?
[Deleted]  

Ha scritto il seguente script:

//+------------------------------------------------------------------------------------------+
//|                                                                         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)                                          //если объектов на графике нет
      {                                                           //начало if
       Alert("На графике нет графических объектов");              //то делаем сообщение на экран...
       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();                                   //вычисляем код возможной ошибки, к-я могла появиться при неудачном удалении Графического объекта номер i
      if(error!=0)Alert("При удалении объекта ",obj_name," возникла ошибка ",error);continue;//если функция ObjectDelete(obj_name) вернуа значение ЛОЖЬ (т.е. не удалила текущий объект), то сообщение об ошибке при удалении
      Alert("Объект ",obj_name," успешно удален");                //сообщение об успешном удалении
     }                                                            //конец for
   Comment("\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000)," секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать сообщения вна экран
//---------------------------------------------------------------------------------------- 3 -
   return(0);
  }
//---------------------------------------------------------------------------------------- 4 -

In 2 parole. Lo script è progettato per eliminare gli oggetti grafici dalla finestra del terminale client. Lo script può essere usato in 2 modi: o tutti gli oggetti vengono cancellati o lo script passa attraverso una serie di oggetti e cancella solo quelli selezionati dall'utente.

Domanda: perché nel ciclo while dopo che il prossimo oggetto è stato cancellato l'ultima funzione Alert("Object ",obj_name," successfully deleted") non mostra il messaggio corrispondente sullo schermo e non appare in nessun modo (anche se l'oggetto è stato cancellato nel ciclo while )

Nota: la linea con il file include #include<WinUser32.mqh> nell'intestazione dello script, che differisce dal file include originale #include<WinUser32.mqh>, fornito con il terminale client, quindi è anche sotto

P.S. Per non sporcare il forum, vi ringrazio in anticipo per la vostra risposta

File:
[Eliminato]  
yosuf:
Quale indicatore, esattamente, è il migliore da sostituire? Non sono ancora disponibili in forma separata?

Il MA, per esempio, ce l'ha, ma ci sono poche opzioni e quelle che hai citato non ci sono:

Pertanto, è possibile prendere quasi qualsiasi indicatore e fare la sua versatilità da soli.

 
7777877:

Domanda: perché nel ciclo while, dopo che il prossimo oggetto viene cancellato, l'ultima funzione Alert("Object ",obj_name," successfully deleted") non mostra un messaggio corrispondente sullo schermo e non si mostra in alcun modo (anche se l'oggetto corrispondente viene cancellato nel ciclo while )


int error=GetLastError();                                   //вычисляем код возможной ошибки, к-я могла появиться при неудачном удалении Графического объекта номер i
      if(error!=0)Alert("При удалении объекта ",obj_name," возникла ошибка ",error);continue;//если функция ObjectDelete(obj_name) вернуа значение ЛОЖЬ (т.е. не удалила текущий объект), то сообщение об ошибке при удалении
      Alert("Объект ",obj_name," успешно удален");                //сообщение об успешном удалении

Questo perché if(error != 0) avrà effetto solo su un allarme, dopo di che continuerà sempre e l'allarme successivo non sarà mai invocato
 
Ciao! Per favore, dimmi come fare un contatore di cicli (ad esempio FOR) per cercare gli ordini entro il giorno corrente!
[Deleted]  

Cosa posso dire che non capisco ancora nulla, capisco solo una cosa che è tutto per fare soldi, perché fare i consulenti se stanno perdendo, si può entrare nella piattaforma una volta alla settimana e guadagnare 1000 in un deposito di 3000

 
lowech:
Ciao, potresti dirmi come fare in modo che il contatore del ciclo (per esempio, FOR) cerchi gli ordini entro il giorno corrente!

ExistInHistoryToDay().
 
kamolot: A cosa servono gli EA se stanno perdendo soldi, si può accedere alla piattaforma una volta alla settimana e guadagnare 1000 su un deposito di 3000.
Semplicemente non hanno il coraggio di fermarsi sulla piattaforma anche una volta alla settimana e guadagnare un migliaio di dollari. Sono tutti troppo stanchi solo per fare soldi.
 
GaryKa:
È solo che questi programmatori labirintici non hanno il cuore di venire anche solo una volta alla settimana a guadagnarsi la loro schifezza. Sono tutti troppo stanchi per fare soldi.

+100500 8-)
[Eliminato]  
GaryKa:
È solo che questi programmatori labirintici non hanno il cuore di venire anche solo una volta alla settimana a guadagnarsi la loro schifezza. Sono così stufi che vogliono solo fare soldi.

E il pallone?