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

Ugar

Гуру форума
Ребята.Мне написали советник.Работает так,как надо.Но есть в нём пара вещей,которые надо исправить.Первое.Он на реале,да и на демо тоже,рисует значки-места покупок,продаж,стопа,тренда.Рисует так же,как в тестере.Они мешают.Главное,чтобы на реале не рисовал.Я сделал,чтобы по закрытию сделок они удалялись.Но это неудобно,т.к. они удаляются и вместе с ними удаляются кнопки.Приходится опять заходить в свойства советника,нажимать ок-тогда кнопки опять появляются.
Второе.Когда мышку наводишь на линию стопа или тейка,для перемещения,часто цепляется к ней стоп или тейк.А надо,чтобы цеплялась только эта линия(без вариантов).А сейчас приходится мышку ставить чуть ниже линии.Подкорректируйте,пожалуйста.Или подскажите,как исправить.
Стрелки и чёрточки сделок задаются в функциях OrderSend(), OrderDelete(), OrderClose(), OrderModify() последним аргументом. Например Red или clrRed, ну или другой цвет. Достаточно во всех этих функциях цвет поменять на clrNONE или вообще удалить этот аргумент вместе с запятой перед ним и стрелки ставиться не будут.
 

Кузя

Интересующийся
Стрелки и чёрточки сделок задаются в функциях OrderSend(), OrderDelete(), OrderClose(), OrderModify() последним аргументом. Например Red или clrRed, ну или другой цвет. Достаточно во всех этих функциях цвет поменять на clrNONE или вообще удалить этот аргумент вместе с запятой перед ним и стрелки ставиться не будут.
Спасибо,понял.А этими стрелочками я показывал на скринах эти чёрточки.Стрелок нет при работе советника,т.к. они и не прописаны.С этим вопросом я в понедельник разберусь.Сейчас то выходные-ни реала нет,ни демо.А со вторым вопросом поможете?
 

Ugar

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

DomovenokBrest

♔♕♖♗♘♙
Спасибо,понял.А этими стрелочками я показывал на скринах эти чёрточки.Стрелок нет при работе советника,т.к. они и не прописаны.С этим вопросом я в понедельник разберусь.Сейчас то выходные-ни реала нет,ни демо.А со вторым вопросом поможете?
Поставь в настройках Использовать клавишу Alt для перетаскивания торговых уровней и не будешь их цеплять....
 

Вложения

Кузя

Интересующийся
Поставь в настройках Использовать клавишу Alt для перетаскивания торговых уровней и не будешь их цеплять....
Может есть какая-нибудь функция,чтобы это всё сделать программно?Чтобы не мучиться.Должна же какая-нибудь быть.
 

vaverin

Прохожий
Я просто не скопировал принты - они старые из старого кода подходят. Я вообще проверял:
SQL:
   MqlDateTime str1;
   MqlRates rates[];
   int copy_rates=0;
   bool begin=false;
   double High1=0.0;
   double Low1=10000.0;
   int day=32;

   for(int r=0; r<=62; r++)
     {
      copy_rates=CopyRates(_Symbol,PERIOD_D1,r,1,rates);
      if(copy_rates<1) {Print("Ошибка копирования данных"); break;}
      TimeToStruct(rates[0].time,str1);
      if(day>str1.day && !begin) {day=str1.day; continue;}
      if(day<str1.day && !begin) {day=32; begin=true;}
      if(begin)
        {
         if(day>str1.day) day=str1.day;
         else {begin=false; break;}
         if(High1<rates[0].high) High1=rates[0].high;
         if(Low1>rates[0].low) Low1=rates[0].low;
        }
     }
   Print("High= ",iHigh(_Symbol,PERIOD_MN1,1));
   Print("High1=",High1);
   Print("Low= ",iLow(_Symbol,PERIOD_MN1,1));
   Print("Low1=",Low1);
   if(iHigh(_Symbol,PERIOD_MN1,1)!=High1) Print(iHigh(_Symbol,PERIOD_MN1,1)," High ",High1);
   if(iLow(_Symbol,PERIOD_MN1,1)!=Low1) Print(iLow(_Symbol,PERIOD_MN1,1)," Low ",Low1);
А 2 последние строки сравнивают между собой оба варианта и выдают принт, если они не равны, но они у Вас будут постоянно принтовать. Просто оставьте нужные строки. Я не думал, что принты нужны для сова, если там автоматика работает.
Код считает сформированные данные 1-го месяца когда он уже сформирован полностью.
У меня отличаются только в марте этого года и все одинаковые результаты в каждой минуте одинаковые с первой по последнюю минуту, сколько бы тиков в ней не было.
В тестовом сове я ограничиваю работу - работает по открытию дневного бара, чтобы не тормозил по всем тикам.
 

yurecwa

Активный участник
Здравствуйте уважаемые программисты и форумчане. Помогите разобраться как
через iCustom получить сигналы индикатора Heiken Ashi MA T3 New в советнике. Пробовал следующие варианты.
Код:
int IndicatorSignal()
  {
   int Sig=0;

   double ind11=iCustom(Symbol(),0,"Heiken Ashi MA T3 New",7,0);
   double ind12=iCustom(Symbol(),0,"Heiken Ashi MA T3 New",7,1);
                                                                              
   if(ind11==1&&ind12==-1)Sig=1; // 1 - бай
   if(ind11==-1&&ind12==1)Sig=2; // 2 - селл
                              
   return(Sig);
  }

int IndicatorSignal()
  {
   int Sig=0;

   double ind11=iCustom(Symbol(),0,"Heiken Ashi MA T3 New",5,0);
   double ind12=iCustom(Symbol(),0,"Heiken Ashi MA T3 New",6,0);
                                                                              
   if(ind11!=EMPTY_VALUE)Sig=1; // 1 - бай
   if(ind12!=EMPTY_VALUE)Sig=2; // 2 - селл
                              
   return(Sig);
  }
Не один не работает.
 

Вложения

mobidik

VIP-участник
Здравствуйте уважаемые программисты и форумчане. Помогите разобраться как
через iCustom получить сигналы индикатора Heiken Ashi MA T3 New в советнике. Пробовал следующие варианты.
Все верно, за исключением нумерации буферов, при вызове он идет от "0", а не с "1" как мы можем видеть в "Окне данных".

PS.
индюк по нулевому бару рисует, то есть, если произошла отмена сигнала - стрелку не убирает за собой.
 

yurecwa

Активный участник
Все верно, за исключением нумерации буферов, при вызове он идет от "0", а не с "1" как мы можем видеть в "Окне данных".

PS.
индюк по нулевому бару рисует, то есть, если произошла отмена сигнала - стрелку не убирает за собой.
Спасибо. Буду разбираться.
 

NelsonM

Прохожий
всем привет! Дорогие друзья !, у меня интересная тема и тoже нужна помощь по подстройке индикатора !!!
есть ли кто-нибудь, кто знает твик для изменения цвета фона при запуске буфера. я нашел 2 из них, но оба в настоящее время бесполезны :)
1-код, которую я нашел
Код:
 ObjectCreate( "back", OBJ_LABEL, 0, 0, 0 );
 ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,Time[0],Close[0]);
и 2-код, которую нашел
Код:
ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrDarkBlue);
Затем я выбрал вторую строку кода, которая может это сделать, но проблема в том, что фон не возвращается к цвету по умолчанию после того, как буферы больше не срабатывают .., Было бы полезно, если кто-нибудь знает, как это сделать !? заранее спасибо! :)
Ниже здесь я загрузил файл mq4, а также примеры изменений цветового фона графика при срабатывании буферов, но они не возвращаются к значениям по умолчанию до следующего запуска буфера продажи / покупки. Жаль, что это будет нормальный фон, когда нет стрелки :)))
 

Вложения

mobidik

VIP-участник
всем привет! Дорогие друзья !, у меня интересная тема и тoже нужна помощь по подстройке индикатора !!!
есть ли кто-нибудь, кто знает твик для изменения цвета фона при запуске буфера. я нашел 2 из них, но оба в настоящее время бесполезны :)
1-код, которую я нашел
Код:
 ObjectCreate( "back", OBJ_LABEL, 0, 0, 0 );
ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,Time[0],Close[0]);
и 2-код, которую нашел
Код:
ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrDarkBlue);
Затем я выбрал вторую строку кода, которая может это сделать, но проблема в том, что фон не возвращается к цвету по умолчанию после того, как буферы больше не срабатывают .., Было бы полезно, если кто-нибудь знает, как это сделать !? заранее спасибо! :)
Ниже здесь я загрузил файл mq4, а также примеры изменений цветового фона графика при срабатывании буферов, но они не возвращаются к значениям по умолчанию до следующего запуска буфера продажи / покупки. Жаль, что это будет нормальный фон, когда нет стрелки :)))
Не смотрел Ваш код, но действия следующие: сперва нужно узнать какой установлен цвет, лучше всего, реализовать это в ф-ции OnInit() и запомнить его в переменной. А дальше все просто - есть сигнал на изменение цвета - меняем на нужный, после того, как сигнал отработал, узнать какой сейчас цвет - если не первоначальный, тогда установить его, иначе - ничего не делать. Т.е., у Вас должно быть три переменных для цвета, вот и все.
 

NelsonM

Прохожий
Не смотрел Ваш код, но действия следующие: сперва нужно узнать какой установлен цвет, лучше всего, реализовать это в ф-ции OnInit() и запомнить его в переменной. А дальше все просто - есть сигнал на изменение цвета - меняем на нужный, после того, как сигнал отработал, узнать какой сейчас цвет - если не первоначальный, тогда установить его, иначе - ничего не делать. Т.е., у Вас должно быть три переменных для цвета, вот и все.
Большое спасибо! хорошо, дело в том, у меня есть элементарные знания на MQL. Я пытался думать, как это на INT init(). но я не смог бы выяснить это потому что будет тот же результат, я волнуюсь.
Вы можете поделиться любым примером кода?
 

repus

Прохожий
У меня такой вопрос?
Думаю коль вы пишите советники, то наверное для вас ответить плевое дело или хоть укажите что почитать или где написано. Весь поиск перерыл одна реклама форекса
(
Суть такова, я пишу или пробую писать советник, сигналы беру на новостях, все это обрабатываю в питоне, получается некая картинка и график. Теперь вопрос с знатокам, в каком формате мне сохранить данные чтоб их можно было локально увидеть во вкладке сигналы на торговой платформе М4 или М5.
Если есть вариант какой то иной, типа есть советник который читает сделки из файла, то тоже пойдет.. Под него нарисую. мне важно знать формат входных данных, какой вид список, кортеж или как то еще, чтоб вывести данные именно такого вида. И еще знать бы как их впихнуть в торговый терминал. Всем спасибо большое.
 

repus

Прохожий
Привет всем опять. Хотелось бы задать вопрос и получить ответ внятно. или тут нет ни кого:)
Суть такая. Есть у меня входные данные, которые я могу выдать как хочу, в любом формате, но я не знаю как их засунуть в торговый терминал МТ4. В каком формате их нужно сохранять, может есть какой то вариант, чтоб брать из файла данные для советников? Может можно брать как то по сети с дальнего сервера или еще как то. Я могуу данные генерировать даже локально, но не знаю как их подать в торговую платформу на отработку. У меня выводится примерно в таком формате ..
========
Пара: GBPJPY
Тип ордера: Sell Stop
Цена открытия: 129.35
SL: 129.95
TP: 128.45
========
Теперь мне нужно этот формат как то преобразовать в то, что можно использовать в МТ4. Как это можно сделать автоматически? СПАСИБО.
 

eduard-

Прохожий
Подскажите пожалуйста, почему работает не правильно. Надо чтобы Бай открывался когда +DL выше линии ADX, Селл - когда -DL выше линии ADX.
Код:
double adx(int mode,int bar)
  {
   return((iADX(NULL,0,ADX,ADX_Rpice,mode,bar)));
  }
//---
bool adxbuy()
  {
   if(adx(0,1)<adx(1,1) && adx(0,2)>adx(1,2))
      return(true);
   return(false);
  }
//---
bool adxsell()
  {
   if(adx(0,1)<adx(2,1) && adx(0,2)>adx(2,2))
      return(true);
   return(false);
  }
 

Ugar

Гуру форума
Привет всем опять. Хотелось бы задать вопрос и получить ответ внятно. или тут нет ни кого:)
Суть такая. Есть у меня входные данные, которые я могу выдать как хочу, в любом формате, но я не знаю как их засунуть в торговый терминал МТ4. В каком формате их нужно сохранять, может есть какой то вариант, чтоб брать из файла данные для советников? Может можно брать как то по сети с дальнего сервера или еще как то. Я могуу данные генерировать даже локально, но не знаю как их подать в торговую платформу на отработку. У меня выводится примерно в таком формате ..
========
Пара: GBPJPY
Тип ордера: Sell Stop
Цена открытия: 129.35
SL: 129.95
TP: 128.45
========
Теперь мне нужно этот формат как то преобразовать в то, что можно использовать в МТ4. Как это можно сделать автоматически? СПАСИБО.
Помести файл в песочницу (MQL4\Files). Я так пронял это текстовый файл. В советнике открой его как текстовый файл. Ну а дальше читай строки и выуживай их них нужную инфу. Всё есть в разделе"Файловые операции" справочника.
 
Последнее редактирование:

Qwant

Новичок форума
Привет.
Что нужно дописать в советник что бы он открывал ордер соразмерно балансу?

Например:
при
$100 лот 0.06
$200 лот 0.12
$500 лот 0.3
$1000 лот 0.6
$1200 лот 0.78
$1500 лот 0.9
$2000 лот 1.2
$3000 лот 1.8
$5000 лот 3.0
$10000 лот 6.0
 
Верх