Подскажите пожалуйста!!! - страница 2

 
//+------------------------------------------------------------------+
//|                                                        Дивер.mq4 |
//|                                              FOReignEXchange2008 |
//|                                    http://www.forexsignal.sk6.ru |
//+------------------------------------------------------------------+
#property copyright "FOReignEXchange2008"
#property link      "http://www.forexsignal.sk6.ru"



double AOmax1,
       AOmax2;

int start()
  {
  
  
  if (iAO>0.1, iAO>AOmax1)
     double AOmax1=iAO;
     return;
  
  if (iAO<0.1, AOmax1>0.7)
      double AOmax2=iAO;    
  else 
      double AOmax2=0;
      return;
   
  if (iAO>AOmax2)
      double AOmax2=iAO;
      return;   
      
  
  }
 //+------------------------------------------------------------------+


Перечитал и Добавил double в операторе присваивания. Осталось только 2 ошибки с переменной AOmax2. Думаю, с этим уже справлюсь. Спасибо.

 
FOReignEXchange писал(а) >>

Недавно заинтересовался автоматическими ТС и решил написать советник. Оказалось не так просто. Я даже не могу понять почему эта запись выдаёт 16 ошибок. И все по знакам,;><() и т п.

Давно я такого кода не видел....

double AOmax1,
       AOmax2;

int start()
  {
  
  
  if (iAO>0.1, iAO>AOmax1)
     AOmax1=iAO;
     return;
  
  if (iAO<0.1, AOmax1>0.7)
      AOmax2=iAO;    
  else 
      AOmax2=0;
      return;
   
  if (iAO>AOmax2)
      AOmax2=iAO;
      return;   
      
  
  }

Что такое iAO? Обращение к индикатору? Тогда смотрите справку Метаэдитора.

if (iAO>0.1, iAO>AOmax1) Что означает запятая в этом выражении? Логическое "и"/"или"? МQL не знает таких конструкций.

https://book.mql4.com/ru/ и справка Метаэдитор должны стать Вашими лучшими друзьми на некоторое время...

FOReignEXchange писал(а) >>

Перечитал и Добавил double в операторе присваивания. Осталось только 2 ошибки с переменной AOmax2. Думаю, с этим уже справлюсь. Спасибо.

У Вас бред написан, какие две ошибки, тут одна сплошная ерунда и добавление double скорее добавляет ошибок чем их уменьшает.

 
//+------------------------------------------------------------------+
//|                                                        Дивер.mq4 |
//|                                              FOReignEXchange2008 |
//|                                    http://www.forexsignal.sk6.ru |
//+------------------------------------------------------------------+
#property copyright "FOReignEXchange2008"
#property link      "http://www.forexsignal.sk6.ru"



double AOmax1,
       AOmax2;

int start()
  {
  
  
  if (iAO>0.1 && iAO>AOmax1)
     double AOmax1=iAO;
     return;
  
  if (iAO<0.1 && AOmax1>0.7)
      double AOmax2=0.1;    
      return;
   
  if (iAO>AOmax2)
      double AOmax2=iAO;
      return;  
      
  
  }
 //+------------------------------------------------------------------+

Выходит одна ошибка       'AOmax2' - variable already defined C:\Program Files\MetaTrader 4\experts\Äèâåð.mq4 (27, 14)


Я понимаю,что тут написан бред и ничего информативного этот код не несёт, но алгоритм присваивания значений, думаю, написан правильно. 

 

Во-первых, все операторы ВНУТРИ одного блока if надо охватывать фигурными скобками. Вот так:

if (iAO<0.1 && AOmax1>0.7) {
AOmax2=0.1;
return;
}

В противном случае то, что вы написали, эквивалентно условному исполнению оператора присвоения, а затем безусловному выполнению оператора return;

Во-вторых, уберите понаставленные double. Их нужно писать (для задания типа) при объявлении НОВОЙ переменной.

А вообще, начните с этого: https://book.mql4.com/ru/

После нескольких дней чтения большинство вопросов отпадут.

 
Судя по всему, что я вчера читал ничего в голлове не задержалось. Придётся читать заново. Спасибо за советы.
 
FOReignEXchange >>:
Судя по всему, что я вчера читал ничего в голлове не задержалось. Придётся читать заново. Спасибо за советы.
//+------------------------------------------------------------------+
//|                                                        Дивер.mq4 |
//|                                              FOReignEXchange2008 |
//|                                    http://www.forexsignal.sk6.ru |
//+------------------------------------------------------------------+
#property copyright "FOReignEXchange2008"
#property link      "http://www.forexsignal.sk6.ru"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
double AOmax1,
       AOmax2;

int start()
  {
  
  if (iAO(0,0,0)>0.1 && iAO(0,0,0)>AOmax1)
     {
      AOmax1=iAO(0,0,0);
      return;
     }
  if (iAO(0,0,0)<0.1&& AOmax1>0.7)
      AOmax2=iAO(0,0,0); // Запись без скобок разрешена лишь для односложных выражений   
  else 
      {
       AOmax2=0;
       return;
      }
  if (iAO(0,0,0)>AOmax2)
     {
      AOmax2=iAO(0,0,0);
      return;   
     }
  }

Согласен с остальными авторами  насчёт учебника.

А вообще я учился так : брал чужие коды и курочал их по принципу "а что будет если я уберу вот это,

                                                                                                        или если вот сюда вот эту загогулину"

                                                                                                                                                                практика великое дело.

 
Urain >>:

Согласен с остальными авторами  насчёт учебника.

А вообще я учился так : брал чужие коды и курочал их по принципу "а что будет если я уберу вот это,

                                                                                                        или если вот сюда вот эту загогулину"

                                                                                                                                                                практика великое дело.

Спасибо огромное. Теперь выводит сообщения о новых максимумах. 

//+------------------------------------------------------------------+
//|                                                        Дивер.mq4 |
//|                                              FOReignEXchange2008 |
//|                                    http://www.forexsignal.sk6.ru |
//+------------------------------------------------------------------+
#property copyright "FOReignEXchange2008"
#property link      "http://www.forexsignal.sk6.ru"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
double AOmax1,
       AOmax2;

int start()
  {
  
  if (iAO(0,0,0)>0.0001 && iAO(0,0,0)>AOmax1)
     {
      AOmax1=iAO(0,0,0);
      Alert(" максимум1=",AOmax1);
      return;
     }
  if (iAO(0,0,0)<0.0001 && AOmax1>0.007)
      AOmax2=iAO(0,0,0); // Запись без скобок разрешена лишь для односложных выражений   
  else 
      {
       AOmax2=0;
       Alert(" максимум2=",AOmax2);
       return;
      }
  if (iAO(0,0,0)>AOmax2)
     {
      AOmax2=iAO(0,0,0);
      Alert(" максимум1=",AOmax1);
      return;   
     }
  }

Посмотрю за работай присвоения новых максимумом индикатора. Пока вывел сообщение о новом максимуме1=0,0160 и при каждом тике выводит сообщение максимум2=0. Этого я и ожидал. Сейчас идёт поиск максимума1,после того,как индикатор упадёт ниже 0,0001, код начнёт формировать максимумы2, отличные от нуля. Спасибо, что помогли!

 
В конце кода только ошибка. Надо выводить на печать максимум2
Причина обращения: