[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?
 

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:
 
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!
 

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-)
 
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?