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

vladradon

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

sstyle

Активный участник
ChartIndicatorAdd - только в MQL5

жаль, спасибо.

---

Еще такой вопрос: когда в стратегии есть локирование, и закрываются сделки, тестер считает это просадкой. ну например сначала закрылся лок в профит, баланс вырос соответственно, потом в ту же секунду закрылся основной ордер и баланс просел. В результате операции баланс вырос, но система отмечает просадку. как этого избежать?
 

Ugar

Гуру форума
жаль, спасибо.

---

Еще такой вопрос: когда в стратегии есть локирование, и закрываются сделки, тестер считает это просадкой. ну например сначала закрылся лок в профит, баланс вырос соответственно, потом в ту же секунду закрылся основной ордер и баланс просел. В результате операции баланс вырос, но система отмечает просадку. как этого избежать?
Тестер считает это просадкой потому что она и есть просадка. Есть способ избежать просадок. Но за всё надо платить. В этом способе, вместо просадки полный слив.
 

sstyle

Активный участник
Тестер считает это просадкой потому что она и есть просадка. Есть способ избежать просадок. Но за всё надо платить. В этом способе, вместо просадки полный слив.

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

говорят функция OrderCloseBy может помочь
 

Ugar

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

говорят функция OrderCloseBy может помочь
В это примере есть просадка, хоть и кратковременная. Простоо закрыть одновременно нельзя. Ордера закрываются последовательно.
Теоретически, OrderCloseBy может помочь, так как ордера закрываются одновременно, если ордеров 2 и они разно-направлены. Практически , я не пробовал, попробуй.
 

vladradon

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

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

gince

Местный знаток
Надо сделать сигнальную точку (квадрат или любой другой символ) в желтом квадрате рядом с каждым названием параметра. Сигнальная точка (квадрат или любой другой символ) будет менять цвет в зависимости от сигнала.
Вопрос.
С помощью какого OBJ ( ObjectCreate(nm, OBJ_LABEL, 0, 0,0);) формируется сигнал?
Или вопрос по другому, как нарисовать квадратик ,кружочек или стрелку с привязкой по пиксельным координатам ?
 

Вложения

  • Panel.PNG
    Panel.PNG
    7,8 КБ · Просмотры: 11
  • Panel 1.PNG
    Panel 1.PNG
    4,5 КБ · Просмотры: 15

gince

Местный знаток
Надо сделать сигнальную точку (квадрат или любой другой символ) в желтом квадрате рядом с каждым названием параметра. Сигнальная точка (квадрат или любой другой символ) будет менять цвет в зависимости от сигнала.
Вопрос.
С помощью какого OBJ ( ObjectCreate(nm, OBJ_LABEL, 0, 0,0);) формируется сигнал?
Или вопрос по другому, как нарисовать квадратик ,кружочек или стрелку с привязкой по пиксельным координатам ?

Нашел. Если кому надо , то
ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);
 

matro3

Почетный гражданин
Приветствую.
Может кто здесь показать код рефреша индикатора через заданное кол-во тиков?
Думаю там строчки 4 всего.
Навроде того:
Код:
ushort   tick           = 5;
ushort   tick_count     = 0;

void OnTick()
{
   tick_count ++;
   if(tick_count >= tick)
   {
      tick_count = 0;
      // какой-то код
   }
}
 

Wic_

Прохожий
Здравствуйте! Помогите разобраться. Создаю через мастера свою библиотеку функций - Libraries/Bibl.mq4.
Затем создаю через мастера включаемый файл Include/Bibl.mqh в котором описываю функции из файла Bibl.mq4.
Включаю #include <Bibl.mqh> в скрипте 111.mq4.
Но при его запуске получаю сообщение об ошибке, мол нужен файл 32-bit, хотя у меня 7-ка 64x

2015.03.09 20:13:47.083 Script 111 USDCAD,M1: removed
2015.03.09 20:13:47.083 111 USDCAD,M1: uninit reason 0
2015.03.09 20:13:47.083 unresolved import function call
2015.03.09 20:13:47.083 Cannot call 'Bibl.mq4::OpenOrderWithCheck', 'Bibl.mq4' is not loaded
2015.03.09 20:13:47.083 111 USDCAD,M1: Alert: 0.00001000
2015.03.09 20:13:47.083 111 USDCAD,M1: initialized
2015.03.09 20:13:47.083 Cannot load 'D:\Program Files\ForexClub MT4\MQL4\Libraries\Bibl.mq4' [193]
2015.03.09 20:13:47.080 Script 111 USDCAD,M1: loaded successfully
2015.03.09 20:13:47.080 'D:\Program Files\ForexClub MT4\MQL4\Libraries\Bibl.mq4' is not 32-bit version

Поясните, что я неправильно делаю?
 

matro3

Почетный гражданин
Я код не проверял в тестере. Но на первый взгляд он рабочий.
Значит проблема в вашем коде.

И да,
OnTick
Событие NewTick генерируется только для экспертов при поступлении нового тика по символу

Что там у нас в индикаторе? start?
 
Последнее редактирование:

matro3

Почетный гражданин
В первых же строчках поиска:
_http://forum.mql4.com/34931
 

matro3

Почетный гражданин
Здравствуйте! Помогите разобраться. Создаю через мастера свою библиотеку функций - Libraries/Bibl.mq4.
Затем создаю через мастера включаемый файл Include/Bibl.mqh в котором описываю функции из файла Bibl.mq4.
Включаю #include <Bibl.mqh> в скрипте 111.mq4.
Но при его запуске получаю сообщение об ошибке, мол нужен файл 32-bit, хотя у меня 7-ка 64x

Поясните, что я неправильно делаю?

Не знаю чем Вам помочь...
Но попробуйте:
#import "Bibl.ex4" в Bibl.mqh
 
  • Like
Реакции: Wic_

Wic_

Прохожий
Не знаю чем Вам помочь...
Но попробуйте:
#import "Bibl.ex4" в Bibl.mqh
Есть эта строка. В общем создать свою библиотеку так и не получилось. Решил вопрос добавлением своих функций в уже существующую stdlib.mq4, ну и объявляя их в stdlib.mqh.
 

gince

Местный знаток
Код:
//+------------------------------------------------------------------+
//| My function                                                      |
//+---------------------------------------------------------------
int f_Signal()  
{
    {
//---
 int      per5=5;
 int      per12=12;
 int      per34=34;
 bool     up5=false;
 bool     dn5=false;
 bool     up12=false;
 bool     dn12=false;
 bool     up34=false;
 bool     dn34=false;
 double semup5,semdn5,semup12,semdn12,semup34,semdn34;
 double valup5=0,valdn5=0,valup12=0,valdn12=0,valup34=0,valdn34=0;
 int sign=0;
   
   semup5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,0,2);
   semdn5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,1,2);
   semup12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,2,2);
   semdn12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,3,2);
   semup34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,4,2);
   semdn34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,5,2);
   
   if(semup34!=EMPTY_VALUE && semup34>0){up34=true; valup34=semup34; dn34=false;}
   if(semdn34!=EMPTY_VALUE && semdn34>0){dn34=true; valdn34=semdn34; up34=false;}
   
   if(semup12!=EMPTY_VALUE && semup12>0){up12=true; valdn12=semdn12; dn12=false;}
   if(semdn12!=EMPTY_VALUE && semdn12>0){dn12=true; valdn12=semdn12; up12=false;}
   
   if(semup5!=EMPTY_VALUE && semup5>0){up5=true; valup5=semup5; dn5=false;}
   if(semdn5!=EMPTY_VALUE && semdn5>0){dn5=true; valdn5=semdn5; up5=false;}
   
   if(up34 && up12 && valup34!=valup12)sign=2;  //perkam su islaikymu 20 min
   if(dn34 && dn12 && valdn34!=valdn12)sign=-2; //parduodam su islaikymu 20 min
   
   if(up34 && up5 && valup34!=valup5)sign=1;  //perkam su islaikymu 1 min
   if(dn34 && dn5 && valdn34!=valdn12)sign=-1; //parduodam su islaikymu 1 min
  }
[B][COLOR="Red"]  return(sign);[/COLOR][/B]
 
}
//+------------------------------------------------------------------+
ошибка
'sign' - undeclared identifier strategijos.mqh 53 10
в чем тут дело ?
 

zpro

Почетный гражданин
Код:
//+------------------------------------------------------------------+
//| My function                                                      |
//+---------------------------------------------------------------
int f_Signal()  
{
    {
//---
 int      per5=5;
 int      per12=12;
 int      per34=34;
 bool     up5=false;
 bool     dn5=false;
 bool     up12=false;
 bool     dn12=false;
 bool     up34=false;
 bool     dn34=false;
 double semup5,semdn5,semup12,semdn12,semup34,semdn34;
 double valup5=0,valdn5=0,valup12=0,valdn12=0,valup34=0,valdn34=0;
 int sign=0;
   
   semup5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,0,2);
   semdn5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,1,2);
   semup12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,2,2);
   semdn12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,3,2);
   semup34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,4,2);
   semdn34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,5,2);
   
   if(semup34!=EMPTY_VALUE && semup34>0){up34=true; valup34=semup34; dn34=false;}
   if(semdn34!=EMPTY_VALUE && semdn34>0){dn34=true; valdn34=semdn34; up34=false;}
   
   if(semup12!=EMPTY_VALUE && semup12>0){up12=true; valdn12=semdn12; dn12=false;}
   if(semdn12!=EMPTY_VALUE && semdn12>0){dn12=true; valdn12=semdn12; up12=false;}
   
   if(semup5!=EMPTY_VALUE && semup5>0){up5=true; valup5=semup5; dn5=false;}
   if(semdn5!=EMPTY_VALUE && semdn5>0){dn5=true; valdn5=semdn5; up5=false;}
   
   if(up34 && up12 && valup34!=valup12)sign=2;  //perkam su islaikymu 20 min
   if(dn34 && dn12 && valdn34!=valdn12)sign=-2; //parduodam su islaikymu 20 min
   
   if(up34 && up5 && valup34!=valup5)sign=1;  //perkam su islaikymu 1 min
   if(dn34 && dn5 && valdn34!=valdn12)sign=-1; //parduodam su islaikymu 1 min
  }
[B][COLOR="Red"]  return(sign);[/COLOR][/B]
 
}
//+------------------------------------------------------------------+
ошибка
'sign' - undeclared identifier strategijos.mqh 53 10
в чем тут дело ?

Код:
//+------------------------------------------------------------------+
//| My function                                                      |
//+---------------------------------------------------------------
int f_Signal()  
{
[B][COLOR="Red"]  int sign=0;[/COLOR][/B]
    {
//---
 int      per5=5;
 int      per12=12;
 int      per34=34;
 bool     up5=false;
 bool     dn5=false;
 bool     up12=false;
 bool     dn12=false;
 bool     up34=false;
 bool     dn34=false;
 double semup5,semdn5,semup12,semdn12,semup34,semdn34;
 double valup5=0,valdn5=0,valup12=0,valdn12=0,valup34=0,valdn34=0;
 
   
   semup5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,0,2);
   semdn5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,1,2);
   semup12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,2,2);
   semdn12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,3,2);
   semup34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,4,2);
   semdn34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,5,2);
   
   if(semup34!=EMPTY_VALUE && semup34>0){up34=true; valup34=semup34; dn34=false;}
   if(semdn34!=EMPTY_VALUE && semdn34>0){dn34=true; valdn34=semdn34; up34=false;}
   
   if(semup12!=EMPTY_VALUE && semup12>0){up12=true; valdn12=semdn12; dn12=false;}
   if(semdn12!=EMPTY_VALUE && semdn12>0){dn12=true; valdn12=semdn12; up12=false;}
   
   if(semup5!=EMPTY_VALUE && semup5>0){up5=true; valup5=semup5; dn5=false;}
   if(semdn5!=EMPTY_VALUE && semdn5>0){dn5=true; valdn5=semdn5; up5=false;}
   
   if(up34 && up12 && valup34!=valup12)sign=2;  //perkam su islaikymu 20 min
   if(dn34 && dn12 && valdn34!=valdn12)sign=-2; //parduodam su islaikymu 20 min
   
   if(up34 && up5 && valup34!=valup5)sign=1;  //perkam su islaikymu 1 min
   if(dn34 && dn5 && valdn34!=valdn12)sign=-1; //parduodam su islaikymu 1 min
  }
[B][COLOR="Red"]  return(sign);[/COLOR][/B]
 
}
//+------------------------------------------------------------------+


В mql поправили область видимости переменных :D
 

Ugar

Гуру форума
Код:
//+------------------------------------------------------------------+
//| My function                                                      |
//+---------------------------------------------------------------
int f_Signal()  
{
    [B][COLOR=Red]{[/COLOR][/B]
//---
 int      per5=5;
 int      per12=12;
 int      per34=34;
 bool     up5=false;
 bool     dn5=false;
 bool     up12=false;
 bool     dn12=false;
 bool     up34=false;
 bool     dn34=false;
 double semup5,semdn5,semup12,semdn12,semup34,semdn34;
 double valup5=0,valdn5=0,valup12=0,valdn12=0,valup34=0,valdn34=0;
 int sign=0;
   
   semup5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,0,2);
   semdn5 =iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,1,2);
   semup12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,2,2);
   semdn12=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,3,2);
   semup34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,4,2);
   semdn34=iCustom(NULL,PERIOD_M1,"1_2_3 Semafor",per5,per12,per34,5,2);
   
   if(semup34!=EMPTY_VALUE && semup34>0){up34=true; valup34=semup34; dn34=false;}
   if(semdn34!=EMPTY_VALUE && semdn34>0){dn34=true; valdn34=semdn34; up34=false;}
   
   if(semup12!=EMPTY_VALUE && semup12>0){up12=true; valdn12=semdn12; dn12=false;}
   if(semdn12!=EMPTY_VALUE && semdn12>0){dn12=true; valdn12=semdn12; up12=false;}
   
   if(semup5!=EMPTY_VALUE && semup5>0){up5=true; valup5=semup5; dn5=false;}
   if(semdn5!=EMPTY_VALUE && semdn5>0){dn5=true; valdn5=semdn5; up5=false;}
   
   if(up34 && up12 && valup34!=valup12)sign=2;  //perkam su islaikymu 20 min
   if(dn34 && dn12 && valdn34!=valdn12)sign=-2; //parduodam su islaikymu 20 min
   
   if(up34 && up5 && valup34!=valup5)sign=1;  //perkam su islaikymu 1 min
   if(dn34 && dn5 && valdn34!=valdn12)sign=-1; //parduodam su islaikymu 1 min
 [B][COLOR=Red] }[/COLOR][/B]
[B][COLOR=Red]  return(sign);[/COLOR][/B]
 
}
//+------------------------------------------------------------------+
ошибка
'sign' - undeclared identifier strategijos.mqh 53 10
в чем тут дело ?
Убери лишние скобки
 
Верх