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

Маруся2014

Заблокирован
У меня звуковой сигнал подается, когда 6 ЕА становятся одного цвета. После дополнительных подтверждений я вхожу в рынок. А выход из рынка происходит, когда погаснут 4 часа того же цвета. Если играли зеленые, то сигнал обратного выхода должен быть, когда Н4 зеленые погаснут. Если играли красные, то красный Н4 должен погаснуть подав звуковой сигнал. Проблема в том, что у меня нет доступа к панели настроек. Можно ли вывести управление сигналами Bool = false, true в виде кнопок на теле самого индикатора, чтобы отключить не нужный и включить нужный мне звуковой сигнал.
А то что вы мне на картинке показали я вообще не поняла. OBJPROP BMPFILE я не нашла нечего похожего. И папки Images в терминале нет.
 

AlexeyVik

Программист mql4 mql5
У меня звуковой сигнал подается, когда 6 ЕА становятся одного цвета. После дополнительных подтверждений я вхожу в рынок. А выход из рынка происходит, когда погаснут 4 часа того же цвета. Если играли зеленые, то сигнал обратного выхода должен быть, когда Н4 зеленые погаснут. Если играли красные, то красный Н4 должен погаснуть подав звуковой сигнал. Проблема в том, что у меня нет доступа к панели настроек. Можно ли вывести управление сигналами Bool = false, true в виде кнопок на теле самого индикатора, чтобы отключить не нужный и включить нужный мне звуковой сигнал.
А то что вы мне на картинке показали я вообще не поняла. OBJPROP BMPFILE я не нашла нечего похожего. И папки Images в терминале нет.
То что я показал это всего лишь уточнение вопроса о чём идёт речь.
Сделать кнопки можно с помощью .dll но и в этом случае придётся вносить изменения в код индикатора. А если вносить изменения в код индикатора, то проще вывести во внешние extern переменные и там переключать как душа пожелает. Или открытого кода нет?
 

Маруся2014

Заблокирован
У меня индикатор без буферов. Работает через кастом. Только одни переменные. У меня нет доступа к окну настроек чтобы менять конфигурации сигналов.
 

Маруся2014

Заблокирован
Я тут поковырялась в языке и нашла такой объект OBJ_EDIT. Может кто нибудь слепит кнопочку вкл. выкл на его основе? Пожалуйста!
 

AlexeyVik

Программист mql4 mql5
Маша, внешние переменные и буферы это большая разница.
То что к окну настроек нет доступа я понял с первого твоего поста. Но это можно сделать. Посмотрел я объект OBJ_EDIT поле ввода, ну да можно его сделать, проблем никаких. Но как твой индикатор будет брать из него данные??? Без вмешательства в код индикатора сделать не возможно. Так-что если есть исходник, есть желание сделать индикатор и нет желания его обнародовать пиши в ЛС.
 

tommy27

Гуру форума
Помогите решить такую проблему:
есть стрелочный индикатор(любой) с двумя стрелками на бай и сэл, надо как то сделать чтоб отдельно запоминались номера последних трёх баров на которых появлялись стрелки на бай и то же самое для стрелок на сэл.

...чуствую что как то просто можно сделать, а сообразить не могу:what-to-do:
 

qqmber

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

...чуствую что как то просто можно сделать, а сообразить не могу:what-to-do:

Надо полагать, стрелки могут появляться и исчезать?
Нужно что-то в таком духе
Код:
datetime B[3];
int idx;
...
if(стрелка бай на нулевом баре) {
   if(B[idx]!=Time[0]) {
      idx=(idx+1)%3;
      B[idx]=Time[0];
  }
}
Массив В будет хранить время появления стрелки. Номер бара постоянно меняется, а время - нет. По времени всегда можно найти и текущий номер.
Для селл аналогично.
 
Последнее редактирование:

tommy27

Гуру форума
Спасибо попробую так.
Нет данные беруться с бара i+1, если там есть стрелка, то уже не пропадёт
 

tommy27

Гуру форума
Нвдо так (пусть будет для 2-х последних стрелок на втором баре):
Надо чтоб в индикаторе реалтайме существовали 2 переменные в которые сохраняются номера баров на которых появились 2 последние стрелки на бай и такие же 2 переменные для запоминания сэл стрелок.

Вобщем придумал вот такую конструкцию, щас проверю как работает:
PHP:
for(i=recalc; i>=0; i--)
     {
      if(UpArrow[i+2]!=0 && UpBar[1]==0) 
       UpBar[1]=i+2;
      if(UpArrow[i+2]!=0 && UpBar[1]!=0 && UpBar[2]==0) 
       UpBar[2]=i+2;
      if(UpArrow[i+2]==0 && UpBar[1]!=0 && UpBar[2]!=0 && x==0)
       {UpBar1[2]=UpBar[2]; x=1;}
      if(UpArrow[i+2]!=0 && x==1)
       {UpBar[2]=i+2;UpBar[1]=UpBar1[2];x=0;}
это для бай, для сэл аналогично.
 

qqmber

Почетный гражданин
Суров сибиряк :)
Мудрёно затеял ротацию данных в массиве, у меня проще и стандартнее.
Может тебе массив и вовсе не нужен? Найти первую-вторую-третью стрелку перебором в цикле проще, чем хранить их в массиве.
 

tommy27

Гуру форума
Найти первую-вторую-третью стрелку перебором в цикле проще, чем хранить их в массиве.

Ага вот так сделал:
PHP:
for(int j=0; i<200; i++)
     {
      if(UpArrow[i+2]!=0 && Up1==0) Up1=i+2;
      if(UpArrow[i+2]!=0 && Up1!=0) Up2=i+2;
      if(UpArrow[i+2]!=0 && Up2!=0) Up3=i+2;
      if(Up1!=0 && Up1!=0 && Up1!=0)break;
     }


не... опять хрень какая то выходит(
 
Последнее редактирование:

qqmber

Почетный гражданин
Если тебе не нужно особо глубоко в историю залазить, то хватит такого
Код:
int ArrowN(int n) {
int cnt=0;
for(int i=0; i<recalc; i++) {
   if(UpArrow[i+2]!=0) cnt++;
   if(cnt==n) return(i); //или return(i+2)?
   }
return(-1);
}
Функция будет возвращать индекс свечки, на которой N-я стрелка. Не супер эффективно, зато просто и "тяжелых" операций нет.
 

qqmber

Почетный гражданин
Ага вот так сделал:
PHP:
for(int j=0; i<200; i++)
     {
      if(UpArrow[i+2]!=0 && Up1==0) Up1=i+2;
      if(UpArrow[i+2]!=0 && Up1!=0) Up2=i+2;
      if(UpArrow[i+2]!=0 && Up2!=0) Up3=i+2;
      if(Up1!=0 && Up1!=0 && Up1!=0)break;
     }


не... опять хрень какая то выходит(

Не пойдет. Второй if будет перезаписывать Up2 даже если там уже есть хорошее значение.
Имей еще в виду, появление нового бара сдвинет сразу всю нумерацию. Если что и хранить, то только время.
 

Walt6730

Новичок форума
Вопрос к гуру. У меня при прогоне совы на тестере терминал стал с какого-то перепугу генерировать такую вот фигню: invalid integer number as parameter 2 for 'iCustom' function. Сама сова компилируется без ошибок и как бы работает корректно (насколько я могу судить по результатам). Эта фот фигня появилась после апгрейда до 600 билда. Че за фигня, и как от нее избавиться?
 

qqmber

Почетный гражданин
Вопрос к гуру. У меня при прогоне совы на тестере терминал стал с какого-то перепугу генерировать такую вот фигню: invalid integer number as parameter 2 for 'iCustom' function. Сама сова компилируется без ошибок и как бы работает корректно (насколько я могу судить по результатам). Эта фот фигня появилась после апгрейда до 600 билда. Че за фигня, и как от нее избавиться?
Надо смотреть, какие параметры в iCustom() передаются. 600 билд не делает приведения типов параметров, как раньше было, отсюда ошибка.
 
Верх