Ваши вопросы по языку MQL4

sneg

Прохожий
Нет доступа к файлу

Доброе время суток! Прошу помощи по доработке кода копировщика. Проблема следующая: советник (Slave) выводит сообщение об отсутствии доступа к файлу. Чтобы я не делал... Что не так?

Код:
 #include <stdlib.mqh>

#import "kernel32.dll"
   bool CopyFileA(string a0, string a1, bool a2);
#import

extern string Мастер = "C:\\Users\\sneg\\AppData\\Roaming\\MetaQuotes\\Terminal\\287469DEA9630EA94D0715D755974F1B\\MQL4\\Files";
extern int Периодичность = 1;
extern double Множитель = 2.0;
int g_ord_total_96 = 0;
int gia_100[];
int gia_104[];
int gia_108[];
double gda_112[];
string gsa_116[];
double gda_120[];
double gda_124[];
double gda_128[];
string gsa_132[];
int gi_unused_136 = 0;
int g_index_140;
string gsa_144[100];
string g_name_148 = "\\MasterOrders.txt";
int gia_156[];
int gia_160[];
int gia_164[];
int gia_168[];
int gi_172 = 0;
int gi_176 = 1000;
int g_slippage_180 = 5;
bool gi_184 = FALSE;
bool gi_188;
int gi_192 = 2000;
int gi_196 = 0;
 

Артмен

Новичок форума
Добрый день уважаемые программисты! Помогите пожалуйста справиться: как определить именно ту стрелку которую я хочу, на графике, которая была нарисована индикатором, и если её нет в объектах терминала?
 

mobidik

-----
Добрый день уважаемые программисты! Помогите пожалуйста справиться: как определить именно ту стрелку которую я хочу, на графике, которая была нарисована индикатором, и если её нет в объектах терминала?

Надеюсь, что речь идет о стрелке созданной как объект. На графике не может быть два объекта с одинаковым именем - вот от этого и отталкивайся. А что бы узнать, есть ли нужный объект на графике - воспользуйся ф-цией ObjectFind().
 

Артмен

Новичок форума
Надеюсь, что речь идет о стрелке созданной как объект. На графике не может быть два объекта с одинаковым именем - вот от этого и отталкивайся. А что бы узнать, есть ли нужный объект на графике - воспользуйся ф-цией ObjectFind().

Стрелка создана как объект. Но индикатором, и на графике полно стрелок с одинаковыми названиями. Как вычислить именно последнюю и сделать ихний счётчик? И есть функция у меня в коде уже такая функция - ObjectFind(); только она даёт сигнал каждую
мили секунду, а мне надо что бы она только один раз засекла стрелку и ждала появления следующей. Типа:
PHP:
int GetArrows()
{
//Поиск стрелки на покупку с уже заданным номером
//И если она нашлась то её номер увеличиваем на 1
if(ObjectFind("Стрелка на покупку"+i)) 
{
i++;
}
/////////////////////////////////////////////////////////
if(ObjectFind("Стрелка на продажу"+i)) i++; 
//Поиск стрелки на продажу с заданным номером
//И если её удалось найти то номер стрелки увеличиваем
//на 1
return(i);
}
 
Последнее редактирование:

mobidik

-----
Стрелка создана как объект. Но индикатором, и на графике полно стрелок с одинаковыми названиями. Как вычислить именно последнюю и сделать ихний счётчик?

Открой в терминале "Список объектов", Ctrl+B - будут все объекты и их имена. Если нужна именно последняя: если на конкретном баре - тогда контролировать только данный бар, если за несколько баров - нужно их перебирать в поиске стрелки. Если на графике будут стрелки только от одного индикатора, тогда можно не париться с именами стрелок, а вести контроль/поиск только по типу стрелки, т.е., её коду, можно и по цвету.
 

Артмен

Новичок форума
Открой в терминале "Список объектов", Ctrl+B - будут все объекты и их имена. Если нужна именно последняя: если на конкретном баре - тогда контролировать только данный бар, если за несколько баров - нужно их перебирать в поиске стрелки. Если на графике будут стрелки только от одного индикатора, тогда можно не париться с именами стрелок, а вести контроль/поиск только по типу стрелки, т.е., её коду, можно и по цвету.

Всё разобрался! Спасибо за помощь!
 
Последнее редактирование:

Артмен

Новичок форума
Всё разобрался! Спасибо за помощь!

Теперь осталось разобраться почему он находит стрелки на каждом тике...:).
(я смотрел объекты всё равно ничего не нашёл, а когда нажал на кнопку "все"
всё равно тоже ничего не нашёл...) :disappointed:
 
Последнее редактирование:

mobidik

-----
Теперь осталось разобраться почему он находит стрелки на каждом тике...:).
"Он" - это кто или что?
(я смотрел объекты всё равно ничего не нашёл, а когда нажал на кнопку "все"
всё равно тоже ничего не нашёл...) :disappointed:
Тогда стрелки созданы не как объекты, а созданы они в буферах индикатора.
 

Артмен

Новичок форума
Добрый день! Всё, я окончательно запутался! Я хочу чтоб этот код искал стрелки на графике и при нахождении например стрелки на покупку давал сигнал на покупку и искал только стрелку на продажу и на оборот.А мой код находит стрелку условие поиска которой записана первой а следующую уже не ищет. Помогите пожалуйста разобраться!
PHP:
int SearshArrows()
  {
   if(ObjectFind(0,"Стрелка на продажу"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
     {
      buf_s[0]=1; ar_up=false; ar_dn=true;
      buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print) Print("Стрелка на продажу = ",buf_s[0]);
     }
   if(ObjectFind(0,"Стрелка на покупку"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
     {
      buf_b[0]=1; ar_dn=false; ar_up=true;
      buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print)Print("Стрелка на покупку = ",buf_b[0]);
     }
   return(y);
  }
 

mobidik

-----
Добрый день! Всё, я окончательно запутался! Я хочу чтоб этот код искал стрелки на графике и при нахождении например стрелки на покупку давал сигнал на покупку и искал только стрелку на продажу и на оборот.А мой код находит стрелку условие поиска которой записана первой а следующую уже не ищет. Помогите пожалуйста разобраться!
PHP:
int SearshArrows()
  {
   if(ObjectFind(0,"Стрелка на продажу"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
     {
      buf_s[0]=1; ar_up=false; ar_dn=true;
      buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print) Print("Стрелка на продажу = ",buf_s[0]);
     }
   if(ObjectFind(0,"Стрелка на покупку"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
     {
      buf_b[0]=1; ar_dn=false; ar_up=true;
      buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print)Print("Стрелка на покупку = ",buf_b[0]);
     }
   return(y);
  }

Сперва, что ты здесь получаешь: ObjectFind(0,"Стрелка на продажу"+y)? Посмотри в справке, что возвращает данная ф-ция и что ты хочешь получить - у тебя она используется как булевая, а на самом деле, согласно справке? Задай верно условие.
 

Артмен

Новичок форума
Сперва, что ты здесь получаешь: ObjectFind(0,"Стрелка на продажу"+y)? Посмотри в справке, что возвращает данная ф-ция и что ты хочешь получить - у тебя она используется как булевая, а на самом деле, согласно справке? Задай верно условие.

Вот задал вроде бы правильное условие и вообще ноль эмоций! Ничего
в экспертах и в журнале не пишет и стрелки вообще не ищет! use_Print я присвоил true!
PHP:
int SearshArrows()
  {
   if(ObjectFind(0,"Стрелка на продажу"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
     {
      buf_s[0]=1; ar_up=false; ar_dn=true;
      buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print) Print("Стрелка на продажу = ",buf_s[0]);
     }
   if(ObjectFind(0,"Стрелка на покупку"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
     {
      buf_b[0]=1; ar_dn=false; ar_up=true;
      buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print)Print("Стрелка на покупку = ",buf_b[0]);
     }
   return(y);
  }
 
Последнее редактирование:

mobidik

-----
Вот задал вроде бы правильное условие и вообще ноль эмоций! Ничего
в экспертах и в журнале не пишет и стрелки вообще не ищет! use_Print я присвоил true!
PHP:
int SearshArrows()
  {
   if(ObjectFind(0,"Стрелка на продажу"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
     {
      buf_s[0]=1; ar_up=false; ar_dn=true;
      buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print) Print("Стрелка на продажу = ",buf_s[0]);
     }
   if(ObjectFind(0,"Стрелка на покупку"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
     {
      buf_b[0]=1; ar_dn=false; ar_up=true;
      buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0);
      y++;
      if(use_Print)Print("Стрелка на покупку = ",buf_b[0]);
     }
   return(y);
  }

Артмен, вот набросал индюка для поиска стрелок. Их можно фильтровать как по коду стрелки, так и по цвету и имени - разбирайся и сделай так как именно тебе нужно:

PS.
в 83 строке - опечатка - сам разберешься какая именно...
 

Вложения

  • SearchArrows.mq4
    8,5 КБ · Просмотры: 51
  • _Search_01.png
    _Search_01.png
    78,7 КБ · Просмотры: 65
  • _Search_02.png
    _Search_02.png
    78,6 КБ · Просмотры: 46
  • _Search_03.png
    _Search_03.png
    70,1 КБ · Просмотры: 41
Последнее редактирование:

Артмен

Новичок форума
Артмен, вот набросал индюка для поиска стрелок. Их можно фильтровать как по коду стрелки, так и по цвету и имени - разбирайся и сделай так как именно тебе нужно:

PS.
в 83 строке - опечатка - сам разберешься какая именно...

Спасибо вам громадное!
 

Артмен

Новичок форума
Добрый вечер! Помогите пожалуйста!!! Что я делаю не так!? Мой код ищет только ту стрелку на графике, поиск которой написан первый. Ткните носом как это правильно надо написать! В индикаторе рисуют стрелки только его буфера!
PHP:
int SearshArrows()
  {
   while(s<History)
     {
      for(int e=ObjectsTotal()-1; e>=0; e--)
        {            //Объект на нужном баре по времени
         if(ObjectGetInteger(0,ObjectName(e),OBJPROP_TIME)!=Time[s])
         {
         if(ObjectFind(0,"Стрелка на покупку") && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
           {
            buf_b="найдено"; ar_dn=false; ar_up=true;
            buf_s="не найдено"; Top=iTime(_Symbol,InputPeriod,0);
            if(use_Print)Print("Стрелка на покупку - ",buf_b);
           }
         if(ObjectFind(0,"Стрелка на продажу") && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
           {
            buf_s="найдено"; ar_up=false; ar_dn=true;
            buf_b="не найдено"; Top=iTime(_Symbol,InputPeriod,0);
            if(use_Print) Print("Стрелка на продажу - ",buf_s);
           }
          }
        }
      s++;
     }
   return(0);
  }
 
Последнее редактирование:

mobidik

-----
В индикаторе рисуют стрелки только его буфера!

Ups, я худею..., вчера разобрали вроде как, если объектов, стрелок, нет в "Список объектов" - значит они созданы не как объекты. Сегодня ты снова просишь о помощи с кодом в поиске стрелок как "объекты", а тут оказывается - В индикаторе рисуют стрелки только его буфера! - да бы избежать дальнейших непоняток - предоставь сам индюк.
 

Артмен

Новичок форума
Ups, я худею..., вчера разобрали вроде как, если объектов, стрелок, нет в "Список объектов" - значит они созданы не как объекты. Сегодня ты снова просишь о помощи с кодом в поиске стрелок как "объекты", а тут оказывается - В индикаторе рисуют стрелки только его буфера! - да бы избежать дальнейших непоняток - предоставь сам индюк.

Извините...просто я сам индюк не могу выложить...потому что я этот индикатор позаимствовал из батиной системы...батя увидит - голову мне отвинтит...
 

AlexeyVik

Программист mql4 mql5
Вот что можно делать на mql4
Swirl5__1.gif
 

Rulevoy_TS

Интересующийся
Добрый вечер всем.Нужна помощь подскажите как защитить индикатор от взлома mql4!!!Триал и привязка не помогает.Как сделать мощную защиту.Буду рад за помощь в данном вопросе
 
Верх