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

 
Alexey Viktorov #:

Все индикаторы работают в одном потоке. Соответственно каждый индикатор отжирает часть ресурсов процессора. Поставьте 100500 индикаторов с одинаковыми параметрами и что произойдёт с терминалом? Если вам для полного счастья в ближайшие 20 минут достаточно 300 грамм картошки, а вам на плечи положили полный мешок. Как вам это?

Понятно. Спасибо за объяснение.
 

Подскажите, где-то встречал в кодобазе рисование в подокне индикатора в таком стиле

Не могу найти


 
makssub #:

добрый день. Про вайл читал. Не получатся сложить или вычесть.
по мани менеджемнту ни чего сказать не могу. не пробовал.
Приложил последнюю редакцию. Но там я уже все запутал сам для себя)
Order1(2) профит выбранного ордера
Order1(3) лот выбранного ордера

Не смог понять кода.

Попробую объяснить. Надеюсь тикеты нужных ордеров знаете, это очень упрощает задачу. Условия. Есть прибыльный ордер профит больше нуля, есть убыточный ордер, профит меньше нуля и больше прибыльного профита, и есть условие для частичного закрытия убыточного ордера. 

В общем, если ордера разнонаправленные можно не думая закрыться через OrderCloseBy. Закроется меньшая убыточная равная меньшей прибыльной части. Нужны лишь 2 тикета.

Можно сложнее, получить OrderProfit() (это деньги) и OrderLots() (это обьем в лотах) обоих ордеров. Посчитать соотношение прибыли к убытку и закрыть прибыльный ордер и эту часть в лотах у убыточного. Перед получением профитов и лотов ордера нужно предварительно выбрать ОрдерСелект.

// ticket1 тикет прибыльного ордера, ticket2 убыточного

bool sel1=OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
double profit1=OrderProfit();
double  Lts1=OrderLots();
double price1=0; if(OrderType()==0)price1=Bid; else price1=Ask;

bool sel2=OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
double profit2=OrderProfit();                     // profit1 < profit2 можно условием впереди поставить
double  Lts2=OrderLots();
double price2=0; if(OrderType()==0)price2=Bid; else price2=Ask;

double ratio=fabs(profit1/profit2); // или если ratio<1, и берем модуль, у нас один профит меньше нуля
double lotsl=Lts2*ratio;

 Alert("Попытка закрыть прибыльный ордер тикет1 ",ticket1,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
 bool    Ans1=OrderClose(ticket1,Lts1,price1,2);      // Закрытие прибыльного ордера
         if(Ans1==true) // Получилось :)
         Alert("Закрыт ордер тикет1 ",ticket1,". профит1 ",profit1); 
else Alert(" Ошибка при закрытии ордера  тикет1",ticket1," Код ошибки ",GetLastError());

Alert("Попытка закрыть часть ордера тикет2 ",ticket2,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
bool     Ans2=OrderClose(ticket2,lotsl,price2,2);      // Закрытие убыточного ордера частично
         if(Ans2==true) // Получилось :)
         Alert("Закрыт частично ордер тикет2 ",ticket2,". профит2 ",profit2); 
else Alert(" Ошибка при закрытии ордера  тикет2",ticket2," Код ошибки ",GetLastError());

 

  
 


Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
Vitaly Muzichenko #:

Подскажите, где-то встречал в кодобазе рисование в подокне индикатора в таком стиле

Не могу найти


Смотри индикаторы от Scriptor

Scriptor
Scriptor
  • 2019.02.10
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin #:

Смотри индикаторы от Scriptor

Спасибо, нашёл, но немного не то, только на один ряд

 
Vitaly Muzichenko #:

Спасибо, нашёл, но немного не то, только на один ряд

По-моему, там и на несколько рядов есть.

 
Artyom Trishkin #:

По-моему, там и на несколько рядов есть.

Там более 1500 кодов, наверное пропустил, к сожалению

 
Vitaly Muzichenko #:

Спасибо, нашёл, но немного не то, только на один ряд

Виталий, вы меня удивляете. Все такие индикаторы основаны на построении DRAW_ARROW с соответствующим кодом. На вашем рисунке квадратики, это код 167

      ObjectSetInteger(0, up_arrow, OBJPROP_ARROWCODE, 167);    // установим код стрелки 

А уж уровень ряда задаётся как пожелает кот или кошка Артёма. Может быть и в целых числах, а может и в десятых долях. 

Начните и спросите о том, что не получается.

 
Vitaly Muzichenko #:

Подскажите, где-то встречал в кодобазе рисование в подокне индикатора в таком стиле

Не могу найти


просто DRAW_ARROW чем не подходит ?

8 буферов если рисовать одним цветом, 16 если двумя. 

или DRAW_COLOR_LINE с большой толщиной линии.

смысл что линии всегда на одном уровне (первая 1 вторая 2 etc), только цвет меняется. 

 
Alexey Viktorov #:

Виталий, вы меня удивляете. Все такие индикаторы основаны на построении DRAW_ARROW с соответствующим кодом. На вашем рисунке квадратики, это код 167

А уж уровень ряда задаётся как пожелает кот или кошка Артёма. Может быть и в целых числах, а может и в десятых долях. 

Начните и спросите о том, что не получается.

Не понятен принцип отступов от низа, чтобы  было поровну в несколько рядов

Вот от этого и не могу начать

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