[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 421

 

ilunga, помоги еще. Что то не так. Печатает только новое время, а нового ЗигЗага нет.

2012.10.08 12:23:49 2012.09.14 05:12 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:11
2012.10.08 12:23:49 2012.09.14 05:11 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:10
2012.10.08 12:23:49 2012.09.14 05:10 MTF PRINT EURUSD,M1: newTime1000005 2012.09.14 05:05
2012.10.08 12:23:49 2012.09.14 05:10 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:09
2012.10.08 12:23:48 2012.09.14 05:09 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:08
2012.10.08 12:23:48 2012.09.14 05:08 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:07
2012.10.08 12:23:48 2012.09.14 05:07 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:06
2012.10.08 12:23:48 2012.09.14 05:06 MTF PRINT EURUSD,M1: newTime1000005 2012.09.14 05:00
2012.10.08 12:23:48 2012.09.14 05:06 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:03
2012.10.08 12:23:48 2012.09.14 05:03 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:02
2012.10.08 12:23:48 2012.09.14 05:02 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:01
2012.10.08 12:23:48 2012.09.14 05:01 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 05:00
2012.10.08 12:23:48 2012.09.14 05:00 MTF PRINT EURUSD,M1: newTime1000060 2012.09.14 04:00
2012.10.08 12:23:48 2012.09.14 05:00 MTF PRINT EURUSD,M1: newTime1000030 2012.09.14 04:30
2012.10.08 12:23:48 2012.09.14 05:00 MTF PRINT EURUSD,M1: newTime1000015 2012.09.14 04:45
2012.10.08 12:23:48 2012.09.14 05:00 MTF PRINT EURUSD,M1: newTime1000005 2012.09.14 04:55
2012.10.08 12:23:48 2012.09.14 05:00 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 04:59
2012.10.08 12:23:48 2012.09.14 04:59 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 04:58
2012.10.08 12:23:48 2012.09.14 04:58 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 04:55
2012.10.08 12:23:48 2012.09.14 04:55 MTF PRINT EURUSD,M1: newTime1000005 2012.09.14 04:50
2012.10.08 12:23:48 2012.09.14 04:55 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 04:54
2012.10.08 12:23:48 2012.09.14 04:54 MTF PRINT EURUSD,M1: newTime1000001 2012.09.14 04:53

Полный код

//Код непоместился. Слишком длинный. Он в прицепе.
Файлы:
mtfeprint.mq4  19 kb
 
hronik1967:
Если ту абракадабру которая выше пишут НОВИЧКИ!!!,то я наверное зародыш трейдера. Задал простейший вопрос вопрос и полное игнорирование. Я наверно просто не достоин здесь пребывать. Так сказать рылом не вышел. Может всё же кто нибудь удостоит вниманием. Повторяю вопрос- Скачал и поставил торговать советника Forex Cieaner на пару EURUSD,интервал 30 мин,однако никаких сделок он не совершает. До этого поставил Ilan 1.6 на GBRUSD,там всё нормально. Что я не доделал? ПОДСКАЖИТЕ ПОЖАЛУЙСТА КТО НИБУДЬ!!!

Многие незнают такого советника. Его искать и скачивать ни кто не хочет. Тут больше вопросы про код.
 
hronik1967:
Если ту абракадабру которая выше пишут НОВИЧКИ!!!,то я наверное зародыш трейдера. Задал простейший вопрос вопрос и полное игнорирование. Я наверно просто не достоин здесь пребывать. Так сказать рылом не вышел. Может всё же кто нибудь удостоит вниманием. Повторяю вопрос- Скачал и поставил торговать советника Forex Cieaner на пару EURUSD,интервал 30 мин,однако никаких сделок он не совершает. До этого поставил Ilan 1.6 на GBRUSD,там всё нормально. Что я не доделал? ПОДСКАЖИТЕ ПОЖАЛУЙСТА КТО НИБУДЬ!!!
Машина стала на дороге, не едет. Ребята, помогите, что с ней? Примерно так выглядит ваш вопрос про советники.
Вам не отвечают, потому что есть минимум два десятка причин самого разнообразного свойства. Чужой советник на чужом терминале у трейдера неизвестной квалификации.
 

Помогите.

Я имел в виду (двумя постами выше) в журнале печатает или непечатает.

Непечатает Print("newZZ_240=",Curr_zz240);

Печатает Print("newTime",mn240, " ",TimeToStr(CurrTime240));

Значит что то с NewZigZag H4 в непорядке. Как и что непонимаю. Вроде так, а печати нет.

По ЗЗ делал много разных исследований. На разных ТФ разный результат. Сейчас хочется собрать все в кучу. Вычислений много и если по тикам или новым барам, очень нагружает комп. Хватает обработать данные при появлений нового ЗЗ екстремума.

Файлы:
mtfqprint.mq4  19 kb
 
Спасибо gince и granit77 за ответы. Судя по ним, нужно вызывать специалиста на дом... В принципе так и думал,что на пальцах не обьяснишь.
 
FAQ:

Фича - особенность, небольшое несоответствие, которое впрочем особо не мешает, а иногда даже предоставляет не документированные возможности, например OrderClosePrice() - если закрыть ордер с этоим параметром в цене закрытия, то он закроется, не надо заморачиваться с определением цены по типам ордеров.

Баг - ошибка в программе (неисправимая фича)

Сервидек - место куда пользователи пишут письма с найденными багами. Находится на пятом форуме в вашем профиле (нужна дополнительная регистрация)

Гроссе данке шён))))
 

Доброго времени суток. Вопрос следующего содержания. В книге по MQL4, к-я находится на MQL4.community в главе "Стандартные функции" в разделе "Строковые функции и функции преобразования данных" приведен пример эксперта strings.mq4 следующего содержания (приведен полностью из книги):

//--------------------------------------------------------------------
// strings.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
extern int Quant_Bars=100;             // Количество баров
datetime   Time_On;
string     Prefix    ="Paint_";
//--------------------------------------------------------------- 2 --
int init()                             // Спец. функция init()
  {
   int Ind_Bar;                        // Индекс бара
   Time_On=Time [Quant_Bars];          // Время первого раскрашенного
   for(Ind_Bar=Quant_Bars-1; Ind_Bar>=0; Ind_Bar--)// Цикл по барам
     {
      Create(Ind_Bar,1);               // Нарисуем тонкую линию
      Create(Ind_Bar,2);               // Нарисуем толстую линию
     }
   WindowRedraw();                     // Перерисовка изображения 
   return;                             // Выход из init()
  }
//--------------------------------------------------------------- 3 --
int start()                            // Спец. функция start
  {
   datetime T1, T2;                    // 1 и 2 координаты времени
   int Error,Ind_Bar;                  // Код ошибки и индекс бара
   double P1, P2;                      // 1 и 2 координата цены
   color Col;                          // Цвет созданного объекта
//--------------------------------------------------------------- 4 --
   for(int Line=1; Line<=2; Line++)    // Цикл по видам линий
     {
      string Nom_Lin =Line + "_";      // Строка с номером линии
      //    string Nom_Lin  = DoubleToStr(Line,0)+"_";// Можно и так
      for(Ind_Bar=0; ;Ind_Bar++)       // Цикл по барам
        {
//--------------------------------------------------------------- 5 --
         datetime T_Bar= Time[Ind_Bar];// Время открытия бара
         if (T_Bar < Time_On) break;   // Заграничные не раскрашиваем
         string Str_Time=TimeToStr(T_Bar);       // Строка со временем
         string His_Name=Prefix+Nom_Lin+Str_Time;// Имя объекта
//--------------------------------------------------------------- 6 --
         T1=ObjectGet(His_Name,OBJPROP_TIME1);// Запрос коорд. t1
         Error=GetLastError();         // Получение кода ошибки
         if (Error==4202)              // Если объекта нет :(
           {
            Create(Ind_Bar,Line);      // Вызов ф-ии создания объекта
            continue;                  // На следующую итерацию
           }
//--------------------------------------------------------------- 7 --
         T2 =ObjectGet(His_Name,OBJPROP_TIME2); // Запрос коорд. t2
         P1 =ObjectGet(His_Name,OBJPROP_PRICE1);// Запрос коорд. p1
         P2 =ObjectGet(His_Name,OBJPROP_PRICE2);// Запрос коорд. p1
         Col=ObjectGet(His_Name,OBJPROP_COLOR); // Запрос цвета
         if(T1!=T_Bar || T2!=T_Bar || // Не те координаты или цвет:
            (Line==1 && (P1!=High[Ind_Bar] || P2!=  Low[Ind_Bar])) ||
            (Line==2 && (P1!=Open[Ind_Bar] || P2!=Close[Ind_Bar])) ||
            (Open[Ind_Bar] Close[Ind_Bar] && Col!=Red)  ||
            (Open[Ind_Bar]==Close[Ind_Bar] && Col!=Green)  )
           {
            ObjectDelete(His_Name);    // Удаляем объект
            Create(Ind_Bar,Line);      // Создаём правильный объект
           }
//--------------------------------------------------------------- 8 --
        }
     }
   WindowRedraw();                     // Перерисовка изображения 
   return;                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объектов
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line)      // Пользовательская функция..
  {                                    // ..создания объекта
   color Color;                        // Цвет объекта
   datetime T_Bar=Time [Ind_Bar];      // Время открытия бара
   double   O_Bar=Open [Ind_Bar];      // Цена открытия бара
   double   C_Bar=Close[Ind_Bar];      // Цена закрытия бара
   double   H_Bar=High [Ind_Bar];      // Максимальная цена бара
   double   L_Bar=Low  [Ind_Bar];      // Минимальная цена бара
 
   string Nom_Lin =Line + "_";         // Строка - номер линии
   // string Nom_Lin  = DoubleToStr(Line,0)+"_";// Можно и так
   string Str_Time=TimeToStr(T_Bar);   // Строка - время откр.     
   string His_Name=Prefix+Nom_Lin+Str_Time;// Имя созаваемого объект
   if (O_Bar < C_Bar) Color=Blue;      // Выбор цвета в зависимости..
   if (O_Bar >C_Bar) Color=Red;        // .. от характеристик бара
   if (O_Bar ==C_Bar) Color=Green;
 
   switch(Line)                        // Тонкая или толстая линия
     {
      case 1:                          // Тонкая линия
         ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar);
         break;                        // Выход из switch
      case 2:                          // Толстая линия
         ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar);
         ObjectSet(   His_Name, OBJPROP_WIDTH, 3);// Стиль     
     }
   ObjectSet(    His_Name, OBJPROP_COLOR, Color); // Цвет
   ObjectSet(    His_Name, OBJPROP_RAY,   false); // Луч
   ObjectSetText(His_Name,"Объект создан экспертом",10);// Описание
   return;                             // Выход из польз. ф-ии
  }
//-------------------------------------------------------------- 11 –
 

... продолжение...

Ниже, в конце подраздела Функция StringSubstr в скобках приведена следующая фраза: "отдельно нужно заметить, что в первом цикле for (мое примечание: очевидно, имеется в виду функция deinit(), так как больше нигде объекты не удаляются) удалять объекты нельзя, т.к. в этом случае после каждого удаления изменится общее количество объектов и их нумерация, в результате чего некоторые имена объектов будут пропущены". Но в приведенном тексте эксперта вообще нет второго цикла for. Кроме того, переменная Quant_Del, к-я объявлена в функции deinit() перед циклом for инициализирован нулем, а переменная i вообще до цикла for нигде не была объявлена И так, как цикл for имеет вид

   for(int k=0; k<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
         ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве

то получается, что в приведенном выше тексте эксперта просто банально пропущено несколько строк программы.

Поэтому 1-й вопрос такой: действительно ли здесь допущен банальный пропуск нескольких строк или это настолько хитромудрая программа, что новичкам не понять ее смысл без посторонней помощи?

Далее… В той же главе того же раздела перед приведенным текстом эксперта есть ссылка на этот же эксперт (привожу его в прикрепленном файле), при нажатии на который открывается тот же эксперт в MetaElitor. Но текст этого эксперта уже другой: здесь функция deinit()имеет уже такой вид:

//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объекто
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
        {                              // .. начинающийся с Paint_
         Quant_Del=Quant_Del+1;        // Колич имён к удалению
         Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
        }
     }
   for(int i=0; i<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --

Тогда, если "скомбинировать" фразу "отдельно нужно заметить, что в первом цикле for удалять объекты нельзя, т.к. в этом случае после каждого удаления изменится общее количество объектов и их нумерация, в результате чего некоторые имена объектов будут пропущены" И текст функции deinit() последнего варианта, у меня возник 2-й вопрос:

Вопрос. Почему нельзя удалить объекты в первом цикле for, разместив функцию ObjectDelete(Obj_Name) внутри оператора if?... Ну что-то типа:

int deinit()                           // Спец. функция deinit()
  {
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Если найден объект, …
        {                              // ... начинающийся с Paint_,
         ObjectDelete(Obj_Name);       // … то его и удаляем
        }                              //конец if
     }                                 //конец for
   return;                             // Выход из deinit()
  }                                    //конец deinit
//-------------------------------------------------------------- 10 --

Почему после каждого удаления "... будет изменяться общее количество объектов"?... Ведь в данном случае переменная Quant_Objects, которая и определяет общее количество объектов, получает свое значение, равное ObjectsTotal(), ЗА пределами цикла for?

P.S. Чтобы не захламлять форум, заранее благодарю за ответ



Файлы:
strings.mq4  7 kb
 

Ребят, немного не в тему, и тем не менее...

Возможно ли "подружить" по ЛВС компы/ноуты с 32- и 64-разрядными Win7 ?
Есть три ноута и настольный (всё это дома) на двух ноутах Win7(64-разрядные) и их не видит вообще по сети 32-разрядный Win7 Ultimate настольный. А с него как раз и хотелось бы всей этой толпой рулить...

Есть варианты?

 
moskitman:

Ребят, немного не в тему, и тем не менее...

Возможно ли "подружить" по ЛВС компы/ноуты с 32- и 64-разрядными Win7 ?
Есть три ноута и настольный (всё это дома) на двух ноутах Win7(64-разрядные) и их не видит вообще по сети 32-разрядный Win7 Ultimate настольный. А с него как раз и хотелось бы всей этой толпой рулить...

Есть варианты?

В сети не важно какой разрядности компы и система. Что-то с настройками не так.
Причина обращения: