Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 146

 
Все знают. В МТ4. Есть тестер стратегий. Можно нажимать перебор параметров, через оптимизацию. 

Вопрос таков. 

Можно ли эту оптимизацию, перебор параметров, запихнуть в советник. Чтобы скажем сам советник. время от времени оптимизировал за указанный промежуток времени параметры, выбирал те, что прибыльные и работал по ним ? Скажем каждые 7 дней, идёт оптимизация за 7 дней. И выбираются параметры по прибыльности. И по ним сов, Уже работает дальше 7 дней ?

Хочется услышать ответ, того кто в этом понимает. Скажем объём работы.  Тяжесть работы.  И т.д. Что это из себя вообще представляет. 

 
Aleksey Radzisheuski:
Все знают. В МТ4. Есть тестер стратегий. Можно нажимать перебор параметров, через оптимизацию. 
Вопрос таков. 
Можно ли эту оптимизацию, перебор параметров, запихнуть в советник. Чтобы скажем сам советник. время от времени оптимизировал за указанный промежуток времени параметры, выбирал те, что прибыльные и работал по ним ? Скажем каждые 7 дней, идёт оптимизация за 7 дней. И выбираются параметры по прибыльности. И по ним сов, Уже работает дальше 7 дней ?

Хочется услышать ответ, того кто в этом понимает. Скажем объём работы.  Тяжесть работы.  И т.д. Что это из себя вообще представляет. 

 Вот статья https://www.mql5.com/ru/articles/1467 ...

Автоматическая оптимизация торгового робота в процессе реальной торговли
Автоматическая оптимизация торгового робота в процессе реальной торговли
  • 2007.04.16
  • Igor Malcev
  • www.mql5.com
В статье описана и представлена библиотека функций, позволяющая проводить оптимизацию входных параметров советника, запуская оптимизацию непосредственно из советника.
 
Alekseu Fedotov:


У вас Трендовая линия?

И визуально проходит над(под) 0 баром, нет, поставте галочку в свойсвах, луч.

 


Линия - трендовая. Поменял свойства на луч. Не помогло. В идеале нужно чтобы выводилась цена независимо от положения нулевого бара (сверху, снизу).

Такой код тоже не работает.

int start() {   

           double pr=ObjectGetValueByShift("line",0);

 ‌   If (Bid==pr){

           Alert (pr);}

   return(0);‌}

 
Valerius:

Всем добрый день!

‌Вопросик,  На инсте при попытке отправить ордер, пишет, что неправильные стопы.

в‌от сама строка: 

OrderSend(Symbol(),OP_BUYSTOP,Lots,HiP,3,0,0,NULL,111,0,clrBlue);

В стоплоссе и тейке стоит 0. Если в Стоплосс ставить число, то всё норм.

А‌ мне не нужен стоплосс. Как быть?

Это проблема не СтопЛоссв, а цены открытия отложки. При неправильной цене отложенного ордера приходит ошибка 130.
 
Kot:


Линия - трендовая. Поменял свойства на луч. Не помогло. В идеале нужно чтобы выводилась цена независимо от положения нулевого бара (сверху, снизу).

Такой код тоже не работает.

int start() {   

           double pr=ObjectGetValueByShift("line",0);

 ‌   If (Bid==pr){

           Alert (pr);}

   return(0);‌}


Имя линии правильно прописываеш?

П‌опробуй этот скрипт, и покаж что в логах написано.

void OnStart()
  {
     double pr;
     int obj_total=ObjectsTotal(); 
     string name;
     int i; 
     
   for(i=0;i<obj_total;i++) 
     { 
      name=ObjectName(i); 
      if(ObjectType(name)!=OBJ_TREND) continue; 
      PrintFormat("Объект %d:     Имя объекта - %s",i,name); 
      pr=ObjectGetValueByShift(name,0);
      PrintFormat("Объект %d:     Цена - %.5f",i,pr);
      
     } 
  }

 

Стоит задача. В советник по iCustom вызываются данные из индикаторов стоящих на старших таймфреймах. Назовем их линии поддержки и сопротивления. 

Допустим три цифры  x1 x2 x3.  Помогите написать код рисующий линии по этим трем цифрам прямо в советнике.

Я‌ пробовал ObjCreate  ( хотел их запускать на график в виде точек по каждому тику но ничего не получилось)

Уточняю - 3 отдельных линии. Просьба не отсылать к учебнику по mql4.  Просто поделитесь работающим кодом

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • 2011.03.28
  • MetaQuotes Software Corp.
  • www.mql5.com
В чем различия между тремя режимами тестирования в MetaTrader 5 и на что обратить внимание? Как происходит тестирование эксперта, торгующего одновременно на нескольких инструментах? Когда и как вычисляются значения индикаторов при тестировании и как обрабатываются события? Как синхронизировать бары с разных инструментов при тестировании в режиме "Только цены открытия"? Статья призвана дать ответы на эти и многие другие вопросы.
 
Artyom Trishkin:

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

Здесь можно будет обсудить задачи, алгоритмы их решения, да и впрочем, любые вопросы, так или иначе касающиеся программирования для МТ.

Надеюсь, что к решению вопросов подтянутся другие опытные участники нашего форума, и ветка будет интересна всем.


Стоит задача. В советник по iCustom вызываются данные из индикаторов стоящих на старших таймфреймах. Назовем их линии поддержки и сопротивления. 

Допустим три цифры  x1 x2 x3.  Помогите написать код рисующий линии по этим трем цифрам прямо в советнике.

Я‌ пробовал ObjCreate  ( хотел их запускать на график в виде точек по каждому тику но ничего не получилось)

Уточняю - 3 отдельных линии. Просьба не отсылать к учебнику по mql4.  Просто поделитесь работающим кодом

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • 2011.03.28
  • MetaQuotes Software Corp.
  • www.mql5.com
В чем различия между тремя режимами тестирования в MetaTrader 5 и на что обратить внимание? Как происходит тестирование эксперта, торгующего одновременно на нескольких инструментах? Когда и как вычисляются значения индикаторов при тестировании и как обрабатываются события? Как синхронизировать бары с разных инструментов при тестировании в режиме "Только цены открытия"? Статья призвана дать ответы на эти и многие другие вопросы.
 
BoBoforex:

Стоит задача. В советник по iCustom вызываются данные из индикаторов стоящих на старших таймфреймах. Назовем их линии поддержки и сопротивления. 

Допустим три цифры  x1 x2 x3.  Помогите написать код рисующий линии по этим трем цифрам прямо в советнике.

Я‌ пробовал ObjCreate  ( хотел их запускать на график в виде точек по каждому тику но ничего не получилось)

Уточняю - 3 отдельных линии. Просьба не отсылать к учебнику по mql4.  Просто поделитесь работающим кодом


Функция

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.03.2008                                                     |
//|  Описание : Установка объекта OBJ_HLINE горизонтальная линия               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    st - стиль линии                (0  - простая линия)                    |
//|    wd - ширина линии               (1  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_COLOR , cl);
  ObjectSet(nm, OBJPROP_STYLE , st);
  ObjectSet(nm, OBJPROP_WIDTH , wd);
}

Размещаем за пределами функции     void OnTick()

А это внутри  void OnTick()

  SetHLine(clrRed,"x1",x1); 
  SetHLine(clrRed,"x2",x2);
  SetHLine(clrRed,"x3",x3);  


 

Прошу помощи - не могу понять, почему получаю ноль при вычислении массива VesMass в значениях i>0 ?

   int NumberTotal=3;
   int VesTotal=NumberTotal;//всего веслов в массиве
   double VesMass[];//массив с весами
   ArrayResize(VesMass,VesTotal);



   for(int i=0;i<VesTotal;i++)
     {
      if(i==0)
        {
         VesMass[i]=1;
         Print("VesMass ",i,"=",VesMass[i]);
        }
      if(i>0)
        {
         VesMass[i]=VesMass[i-1]*(4/5);
         Print("VesMass ",i-1,"=",VesMass[i-1]);
         Print("VesMass ",i,"=",VesMass[i]);
        }
     }

 
Alexey Viktorov:
Это проблема не СтопЛоссв, а цены открытия отложки. При неправильной цене отложенного ордера приходит ошибка 130.


Пробовал ставить отложку в двойном спреде от цены. Только тогда ошибка исчезает. Не пойму, правильно ли это?

Н‌апример BUYSTOP ордер ставил в 60 пунктах от Bida. Тейкпрофит  тоже не позволяет ставить меньше на величину спреда.

Н‌икак не пойму, почему так. На реале не работает, в демке работает.

Причина обращения: