# Доработка ботов (советников, индикаторов) vol. 2

Раздел: Язык программирования MQL4
Автор темы: chocolate
Создана: 2014-10-02 12:48
Ответов: 33814 | Просмотров: 6670261
Страница 753 из 1691
Источник: https://forexsystemru.com/threads/77111/page-753

---

## sergeysv — 2018-04-20 14:54

Здравствуйте--
Помогите пожалуйста реализовать идею для удобства. Если это возможно конечно
Суть:-- Имеем кнопки с левой стороны чарта с порядковыми номерами шаблонов. При нажатии на кнопку на чарт загружается нужный шаблон.
С правой стороны кнопки с буквами S №1 и т.д. Возможно ли и не затруднит ли людей знающих сделать так чтоб при нажатии на кнопку S №1 автоматически без вопросов сохранялся шаблон №1 и так далее по кнопкам.

## marattmb — 2018-04-21 07:02

Уважаемые специалисты! Хотелось бы узнать Ваше мнение. Насколько реально автоматизировать мою идею на прилагаемом скриншоте. Идея для парного трейдинга. Индикаторы OverLayChart и Bollindger Bands с отклонением 3. Цена пробивает(либо касается) противоположные крайние линии BB коррелирующих пар. Это момент для входа в позицию.

## Jesper — 2018-04-21 16:31

Всем привет. Можете к этому индикатору прикрутить аллерты со стрелками к данным полосам . Так что-бы цена коснувшись одной из полос сигналила на возможный разворот (что-бы аллерт был 1 раз на баре при касании) + с возможностью отключения аллертов от каждой полосы (а то при сильном тренде достанет сигналами)

prntscr.com/j8859d

## Jesper — 2018-04-21 22:51

Исходник

## MrGreen86 — 2018-04-22 11:42

> Цитата (Jesper):
> Всем привет. Можете к этому индикатору прикрутить аллерты со стрелками к данным полосам . Так что-бы цена коснувшись одной из полос сигналила на возможный разворот (что-бы аллерт был 1 раз на баре при касании) + с возможностью отключения аллертов от каждой полосы (а то при сильном тренде достанет сигналами)
>
> prntscr.com/j8859d

Нужен исходник в формате mq4. Если у вас его нет можно дописать надстройку - второй индикатор который по данным этого индикатора будет рисовать тоже самое но с дополнением которое вы описали. В этом случае нужно будет ставить на график только надстройку, при этом если в терминале не будет первого индикатора она не будет работать.

## MrGreen86 — 2018-04-22 11:43

> Цитата (marattmb):
> Уважаемые специалисты! Хотелось бы узнать Ваше мнение. Насколько реально автоматизировать мою идею на прилагаемом скриншоте. Идея для парного трейдинга. Индикаторы OverLayChart и Bollindger Bands с отклонением 3. Цена пробивает(либо касается) противоположные крайние линии BB коррелирующих пар. Это момент для входа в позицию.

Вполне себе автоматизируется. В МТ4 тестировать это стандартным способом не получится. Можно сделать виртуальное тестирование при котором отчет будет в виде файла. Либо же все сделать на базе МТ5.

## flomaster — 2018-04-22 12:14

Всем привет. Такой вопрос - как посчитать количество баров с момента открытия ордера до текущего момента.

## Jesper — 2018-04-22 13:32

Исходник есть в следующем посту #15108 и #15109 . Администратор проверяет , вот и выкладывается не сразу

## mobidik — 2018-04-22 13:41

> Цитата (flomaster):
> Всем привет. Такой вопрос - как посчитать количество баров с момента открытия ордера до текущего момента.

1) нужно найти/узнать время открытия ордера.
2) воспользоваться стандартной ф-цией iBarShift(), которая вернет значение бара на котором была открыта позиции, что будет равносильно *количество баров с момента открытия ордера до текущего момента.*

## griny79 — 2018-04-22 17:10

Уважаемые специалисты!Помогите пожалуйста сделать буфер обмена по цветам индикатору.

## MrGreen86 — 2018-04-22 17:23

> Цитата (griny79):
> Уважаемые специалисты!Помогите пожалуйста сделать буфер обмена по цветам индикатору.

там все проще. вам нужен 1 и 3 буфер.
если на 1 !=EMPTY_VALUE && 3 ==EMPTY_VALUE то тренд бай, цвет зеленый
если на 1 ==EMPTY_VALUE && 3 !=EMPTY_VALUE то тренд селл, цвет 
красный.

надо проверять оба так как в переходные моменты они оба имеют значения, но еще не факт что тренд сменится.

## griny79 — 2018-04-22 17:37

Спасибо за быстрый ответ.

## sergeysv — 2018-04-22 17:43

Подскажите ,пожалуйста, как скрины закрытых ордеров по папкам разложить ?
        string ord="",LP="",FL="",DATA="";
  //                   ПАРА _Symbol 
         
  //               ПАПКА МЕСЯЦ
   DATA = TimeToStr(TIME_DATE );
 // DATA ={"ЯНВАРЬ ","ФЕВРАЛЬ ","МАРТ ","АПРЕЛЬ ","МАЙ ","ИЮНЬ ","ИЮЛЬ ",
 //                             "АВГУСТ ","СЕНТЯБРЬ ","ОКТЯБРЬ ","НОЯБРЬ ","ДЕКАБРЬ " }; 
     
  //             ПАПКА  ПРОФИТ  ЛОСС 
   if(OrderProfit()<0)LP="LOSS"; else LP="PROFIT"; 
           
 //               ПАПКА БАЙ ИЛИ СЕЛ
  if(OrderType()==0)FL="BUY";    if(OrderType()==1)FL="SELL";
       
//               ОПИСАНИЕ СКРИНА
   if(OrderType()==0)ord="BUY";   if(OrderType()==1)ord="SELL";
   string name1= ord+"   # "+(string)OrderTicket()+"    "         
   +TimeToStr(OrderCloseTime(),TIME_MINUTES )+".gif";
   
   StringReplace(DATA,":",".");    
   StringReplace(name1,":",".");
   WindowScreenShot(_Symbol+"/"+DATA+"/"+LP+" "+FL+"" +name1,Width,Hight); 
P.S.Куралесю как могу а оно не куралесится :)

## mobidik — 2018-04-22 21:31

> Цитата (sergeysv):
> Подскажите ,пожалуйста, как скрины закрытых ордеров по папкам разложить ?
>         string ord="",LP="",FL="",DATA="";
>   //                   ПАРА _Symbol
>
>   //               ПАПКА МЕСЯЦ
>    DATA = TimeToStr(TIME_DATE );
>  // DATA ={"ЯНВАРЬ ","ФЕВРАЛЬ ","МАРТ ","АПРЕЛЬ ","МАЙ ","ИЮНЬ ","ИЮЛЬ ",
>  //                             "АВГУСТ ","СЕНТЯБРЬ ","ОКТЯБРЬ ","НОЯБРЬ ","ДЕКАБРЬ " };
>
>   //             ПАПКА  ПРОФИТ  ЛОСС
>    if(OrderProfit()<0)LP="LOSS"; else LP="PROFIT";
>
>  //               ПАПКА БАЙ ИЛИ СЕЛ
>   if(OrderType()==0)FL="BUY";    if(OrderType()==1)FL="SELL";
>
> //               ОПИСАНИЕ СКРИНА
>    if(OrderType()==0)ord="BUY";   if(OrderType()==1)ord="SELL";
>    string name1= ord+"   # "+(string)OrderTicket()+"    "
>    +TimeToStr(OrderCloseTime(),TIME_MINUTES )+".gif";
>
>    StringReplace(DATA,":",".");
>    StringReplace(name1,":",".");
>    WindowScreenShot(_Symbol+"/"+DATA+"/"+LP+" "+FL+"" +name1,Width,Hight); 
> P.S.Куралесю как могу а оно не куралесится :)

Держи, для создания скрина нужно вызвать ф-цию ScreenOrderTicket(нужный Ticket); и передать её нужный тикет ордера в момент закрытия, по истории нет поиска, но и тебе нужны только папки...
Вся остальная инфа по ордеру будет определена в этой ф-ции. Вторая ф-ция нужна для преобразования даты.

//+------------------------------------------------------------------+
//| Screen Order Ticket                                              |
//+------------------------------------------------------------------+
void ScreenOrderTicket(int oTicket)
  {
    string ПапкаСимвол   = "";
    string ПапкаМесяц    = "";
    string ПапкаПрофЛось = "";
    string ПапкаТипОрдер = "";
    
    int      oType   = -1;
    double   oProfit = 0;
    datetime oCTime  = -1;
    string   oSymbol = "";
    
    if(OrderSelect(oTicket,SELECT_BY_TICKET,MODE_HISTORY))
     {
       oSymbol = OrderSymbol();
       oType   = OrderType();
       oProfit = OrderProfit();
       oCTime  = OrderCloseTime();
     }
    
    if(oSymbol!="") ПапкаСимвол = oSymbol;
    
    if(oCTime !=-1)
     {
       switch(TimeMonth(oCTime))
        {
          case 1:   ПапкаМесяц  = "Январь";   break;
          case 2:   ПапкаМесяц  = "Февраль";  break;
          case 3:   ПапкаМесяц  = "Март";     break;
          case 4:   ПапкаМесяц  = "Апрель";   break;
          case 5:   ПапкаМесяц  = "Май";      break;
          case 6:   ПапкаМесяц  = "Июнь";     break;
          case 7:   ПапкаМесяц  = "Июль";     break;
          case 8:   ПапкаМесяц  = "Август";   break;
          case 9:   ПапкаМесяц  = "Сентябрь"; break;
          case 10:  ПапкаМесяц  = "Октябрь";  break;
          case 11:  ПапкаМесяц  = "Ноябрь";   break;
          default:  ПапкаМесяц  = "Декабрь";  break;
        }  
     }
     
    if(oProfit>=0)     ПапкаПрофЛось = "Профит"; else ПапкаПрофЛось = "Лось";
    if(oType==OP_BUY)  ПапкаТипОрдер = "BUY";
    if(oType==OP_SELL) ПапкаТипОрдер = "SELL";
    
    string data = StrData(TimeToStr(oCTime));
    string FileName = StringConcatenate(oSymbol," - ",oTicket," - ",data);
    string PathFile = oSymbol+"\\"+ПапкаМесяц+"\\"+ПапкаПрофЛось+"\\"+ПапкаТипОрдер+"\\"+FileName;
    
    WindowScreenShot(PathFile+".gif",1366,768);
  }
//+------------------------------------------------------------------+
//| Str Data                                                         |
//+------------------------------------------------------------------+
string StrData(string dt)
  {
    string outdt  = "";
    string tempdt = "";
    
    for(int i=0; i<StringLen(dt); i++)
     {
       tempdt = StringSubstr(dt,i,StringLen(":"));
       if(tempdt==":") outdt = outdt+"."; else outdt = outdt+StringSubstr(dt,i,1);
     }
    return(outdt);
  }
//+------------------------------------------------------------------+

## sergeysv — 2018-04-22 23:14

> Цитата (mobidik):
> Держи, для создания скрина нужно вызвать ф-цию ScreenOrderTicket(нужный Ticket);

Применил к своей функции void--- критических ошибок нет а там будем посмотреть:)

[изображение: https://i.imgur.com/2CGUTLu.png]

## MrGreen86 — 2018-04-23 12:04

> Цитата (Jesper):
> Всем привет. Можете к этому индикатору прикрутить аллерты со стрелками к данным полосам . Так что-бы цена коснувшись одной из полос сигналила на возможный разворот (что-бы аллерт был 1 раз на баре при касании) + с возможностью отключения аллертов от каждой полосы (а то при сильном тренде достанет сигналами)
>
> prntscr.com/j8859d

готово, настройки отображения стрелок и сигналов по ним в самом конце.
стрелки и сигналы сгрупированы по линиям.
High - синяя и красная
Mid (Middle) - голубая и томатная
Low - серебристые.

## Jesper — 2018-04-23 12:49

Большое спасибо !

## malojorsk — 2018-04-23 13:44

Сделайте пожалуйста в индикаторе расчет МА2 от МА1

## erakon — 2018-04-23 14:50

Просьба осуществить доработку индикатора NoLoss v5.1
добавив туда:

1. Показ прибыли по всем Buy и Sell ордерам в п. по 5-знаку или 4х-знаку с
десятой после запятой - доп. к прибыли в $ к-я есть там.
Sell 2 -20.00$ -10.0р 0.20L
Buy 5 60.00$ 12.0р 0.50L
2. Показ в строке с Margin Call:
Margin Call 148.933 3200п. +40.0$ +80.53$(прибыль по всему счету из терминала, +40.0 - прибыль по инструменту )

3. Учет суммы спред+комиссия+своп в расчёте средней цены для Buy и Sell ордеров. (строки кода с р-том средних цен)
4. Задание в параметрах предельной просадки по эквити(средствам) в % (параметр) и вывод в окно линии уровня этой просадки
+ алерт при достижении средств этого уровня в т.ч. с отправкой по е-майл (да/нет).
5. Показ линии Margin Call на графике с выделением цветом зоны графика "за чертой Margin Call".

Будет для всех ТС отличный, полезный, более полный индикатор контроля за ордерами и счётом!

[изображение: http://f1.s.qip.ru/N7Lfc8gS.png]

## vaas04 — 2018-04-23 15:30

Всем привет. Ребят кто хорошо разбирается в отображении объектов, посмотрите инди плиз. Не фурычит автообновление а в мтф вообще беда. Сам по себе инди очень хорошо считает уровни. Авторефраш ставить не хочется, спасибо.

---

Следующая страница: https://forexsystemru.com/threads/77111/page-754
