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

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

---

## eevviill2 — 2016-09-15 17:26

> Цитата (mmaxx):
> Здравствуйте.
> Есть советник, который открывает сделки в определённое время.
> Нужно доработать его, чтобы он сам выбирал направление сделки: если предыдущая свеча была вверх, то открывает бай, если предыдущая свеча была вниз, то открывает селл. Если предыдущая свеча меньше N пунктов, то ничего не открывает.
> Помогите пожалуйста.

Тримай.

## mmaxx — 2016-09-15 17:38

огромное спасибо

## FOTINI — 2016-09-15 18:39

Добрый день,

eevviill2  прошу Вас изменить сова под индикатор,если возможно.
Нужно ,чтобы сов открывал под одну стрелку (сигнал),одну сделку ,но сразу 3-мя ордерами, с профитом 20 п. и закрытием всех по тпрофиту. 
И в течении дальнейшего тренда и сигналов по тренду больше не открывал ордера.
Вторая сделка открываеться только после следующей стрелки в обратную сторону. 

Спасибо.

## eevviill2 — 2016-09-15 19:54

> Цитата (FOTINI):
> Добрый день,
>
> eevviill2  прошу Вас изменить сова под индикатор,если возможно.
> Нужно ,чтобы сов открывал под одну стрелку (сигнал),одну сделку ,но сразу 3-мя ордерами, с профитом 20 п. и закрытием всех по тпрофиту.
> И в течении дальнейшего тренда и сигналов по тренду больше не открывал ордера.
> Вторая сделка открываеться только после следующей стрелки в обратную сторону.
>
> Спасибо.

Конкретно шо треба?
Замість 1 ордера 3?

## FOTINI — 2016-09-15 20:05

> Цитата (eevviill2):
> Конкретно шо треба?
> Замість 1 ордера 3?

Да! 3 ордера сразу чтобы открылись ,и закрылись по тейк профиту.
Оставить только открыть 3 ордера с тейком и ВСЁ!
 убрать от туда все усреднённые открытия ордеров и увеличение лота и количество ордеров...и треллинг тоже там не нужен..

Спасибо!!!!

## well72 — 2016-09-15 20:10

> Цитата (eevviill2):
> Конкретно шо треба?
> Замість 1 ордера 3?

Что-то я не понял: мне теперь на нашем русскоязычном форуме через гугл-переводчик общаться? Или ты и на FF тоже на суржике пишешь?

## gek — 2016-09-15 20:22

> Цитата (FOTINI):
> Добрый день,
>
> eevviill2  прошу Вас изменить сова под индикатор,если возможно.
> Нужно ,чтобы сов открывал под одну стрелку (сигнал),одну сделку ,но сразу 3-мя ордерами, с профитом 20 п. и закрытием всех по тпрофиту.
> И в течении дальнейшего тренда и сигналов по тренду больше не открывал ордера.
> Вторая сделка открываеться только после следующей стрелки в обратную сторону.
>
> Спасибо.

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

## FOTINI — 2016-09-15 21:05

> Цитата (gek):
> Даа,да!
> Закрыл и чтобы не открывал до следующего сигнала.
> Ты опередил меня.Тоже хотел попросить.

:) опередила...(она):D

## Tankk — 2016-09-15 21:13

всем *hi*

**кто разбирается.... посмотрите советника: забивает лог на каждом тике и выдаёт ошибку (см. фото)**

## поручик — 2016-09-15 22:18

На 4-знаке - норм.

как у тебя на мажорах? попробуй уменьшить в 10 раз параметры ->> 600->> **60**

=========
_https://www.mql5.com/ru/forum/24307/page2

## Tankk — 2016-09-15 22:49

> Цитата (поручик):
> На 4-знаке - норм.
>
> как у тебя на мажорах? попробуй уменьшить в 10 раз параметры ->> 600->> **60**
>
> =========
> _https://www.mql5.com/ru/forum/24307/page2

нее... там не в этом дело: он пытается модифицировать ордер, который не подпадает по его условия установки StopLoss, т.к. текущая Цена выше возможного Стопа....

пробовал закомментировать строки == советник перестаёт работать:   if (SL != OSL || TP != OTP) { if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError()); }

## поручик — 2016-09-15 23:00

Т.е. у тебя этот селл уже был, цена ушла вверх, после этого   сову поставил?
=====
Напиши Володе в его ветку, он тут бывает

## Prelagatay — 2016-09-15 23:06

Господа программисты, поправьте пожалуйста индикатор. не хочет менять цвет.

## AlanG — 2016-09-15 23:16

> Цитата (Tankk):
> Print("Error OrderModify ",GetLastError())

Это просто убери должен перестать в лог писать

## Bear-SPb — 2016-09-15 23:20

> Цитата (Prelagatay):
> Господа программисты, поправьте пожалуйста индикатор. не хочет менять цвет.

Держи. Проверено.

## mobidik — 2016-09-16 00:48

> Цитата (Tankk):
> всем *hi*
>
> **кто разбирается.... посмотрите советника: забивает лог на каждом тике и выдаёт ошибку (см. фото)**

130	ERR_INVALID_STOPS	Неправильные стопы
**Tankk**, так и разбираться то не в чем, все правильно, цена улетела намного дальше, чем сов, по установленным тобой значениям, пробует выставить стоплос. Если б это случилось, было на подобие гепа и ордер тут же, по текущей цене, закрылся. В данном случае нет проверки на то где будет стоплосс - выше/ниже текущей цены, в зависимости от типа ордера. Самое простое решение - ручками установи ему желаемый стоп.

## eevviill2 — 2016-09-16 01:02

> Цитата (FOTINI):
> Да! 3 ордера сразу чтобы открылись ,и закрылись по тейк профиту.
> Оставить только открыть 3 ордера с тейком и ВСЁ!
>  убрать от туда все усреднённые открытия ордеров и увеличение лота и количество ордеров...и треллинг тоже там не нужен..
>
> Спасибо!!!!

Тримай.

## Picasso — 2016-09-16 01:04

> Цитата (mobidik):
> Самое простое решение - ручками установи ему желаемый стоп.

Или взять кимовский вариант. У меня работает как часы. А тот что Tankk крутит, тоже так глючил.

## Аввакум2 — 2016-09-16 02:14

Всем хорошего настроения !!

Уважаемые прогеры, пожалуйста, помогите разобраться - какое максимальное количество баров, на текущем ТФ, этот индикатор может перерисовать? (мне надо это знать)

Почти два часа пытался разобраться в коде самостоятельно, но пришел к выводу что лучше спросить у знатоков.
Благодарю заранее. С уважением.
_________________________________________________________________________

#property indicator_separate_window
#property indicator_minimum -1.3
#property indicator_maximum 1.3
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_level1 0.9
#property indicator_level2 -0.9
#property indicator_level3 0.75
#property indicator_level4 -0.75

extern int TimeFrame = 5;
extern string w1 = "Имя обьектов на графике";
extern string name = "OBJ";
extern string g1 = "Отоброжать сигнал на графике?";
extern bool vis = TRUE;
extern string c1 = "Показать историю сигналов?";
extern bool his = FALSE;
extern string a1 = "Звуковой сигнал?";
extern bool sou = FALSE;
extern color Buy = Blue;
extern color Sell = Red;
extern int SnakeRange = 3;
extern int FilterPeriod = 21;
extern double MartFiltr = 2.0;
extern int PriceConst = 6;
double Gl_ibuf_160[];
double Gl_ibuf_164[];
double Gld_unused_168;
double Gl_ibuf_176[];

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
   if (TimeFrame != 0) {
      if (TimeFrame < Period()) {
         Alert("Настраиваемый таймфрейм должен быть больше текущего или равен 0");
         return (0);
      }
   }
   bool Lci_0 = FALSE;
   switch (TimeFrame) {
   case 0:
      Lci_0 = TRUE;
      break;
   case 1:
      Lci_0 = TRUE;
      break;
   case 5:
      Lci_0 = TRUE;
      break;
   case 15:
      Lci_0 = TRUE;
      break;
   case 30:
      Lci_0 = TRUE;
      break;
   case 60:
      Lci_0 = TRUE;
      break;
   case 240:
      Lci_0 = TRUE;
      break;
   case 1440:
      Lci_0 = TRUE;
      break;
   case 10080:
      Lci_0 = TRUE;
      break;
   case 43200:
      Lci_0 = TRUE;
   }
   if (Lci_0 == FALSE) {
      Alert("Вы ввели некорректную цифру таймфрейма");
      return (0);
   }
   SetIndexBuffer(0, Gl_ibuf_160);
   SetIndexStyle(0, DRAW_LINE);
   if (Digits == 5 || Digits == 3) Gld_unused_168 = 10;
   else Gld_unused_168 = 1;
   SetIndexStyle(1, DRAW_ARROW, EMPTY, 0);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, Gl_ibuf_164);
   SetIndexStyle(2, DRAW_ARROW, EMPTY, 0);
   SetIndexArrow(2, 233);
   SetIndexBuffer(2, Gl_ibuf_176);
   return (0);
}

// 52D46093050F38C27267BCE42543EF60
int deinit() {
   f0_1();
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
   int Lci_4;
   datetime time_8;
   int shift_12;
   bool Lci_20;
   int ind_counted_0 = IndicatorCounted();
   if (TimeFrame > 0) Lci_4 = Bars - ind_counted_0 + TimeFrame / Period();
   else Lci_4 = Bars - ind_counted_0 - 1;
   if (Lci_4 == 0) return (0);
   for (int Lci_16 = Lci_4; Lci_16 >= 0; Lci_16--) {
      Lci_20 = Lci_16;
      time_8 = Time;
      shift_12 = iBarShift(NULL, TimeFrame, time_8, FALSE);
      Gl_ibuf_160 = iCustom(NULL, TimeFrame, "SSRC", SnakeRange, FilterPeriod, MartFiltr, PriceConst, 0, shift_12);
      if (vis == TRUE && Gl_ibuf_160[Lci_16 + 1] > -0.9 && Gl_ibuf_160[Lci_16 + 2] < -0.9) {
         Gl_ibuf_176 = Gl_ibuf_160;
         if (his == FALSE) Lci_20 = FALSE;
         f0_0(Lci_20 + name, 0, Time, Low - 5.0 * Point, 233, Buy, 1);
         if (ObjectFind(Lci_20 + name) == 0 && sou == TRUE) PlaySound("expert");
      }
      if (vis == TRUE && Gl_ibuf_160 < 0.9 && Gl_ibuf_160[Lci_16 + 1] > 0.9) {
         Gl_ibuf_164 = Gl_ibuf_160;
         if (his == FALSE) Lci_20 = FALSE;
         f0_0(Lci_20 + name + 1, 0, Time, High + 5.0 * Point, 234, Sell, 1);
         if (ObjectFind(Lci_20 + name + 1) == 0 && sou == TRUE) PlaySound("expert");
      }
      if (vis == TRUE && Gl_ibuf_160[Lci_16 + 1] > -0.75 && Gl_ibuf_160[Lci_16 + 2] < -0.75) {
         Gl_ibuf_176 = Gl_ibuf_160;
         if (his == FALSE) Lci_20 = FALSE;
         f0_0(Lci_20 + name + 2, 0, Time, Low - 5.0 * Point, 233, Buy, 1);
         if (ObjectFind(Lci_20 + name + 2) == 0 && sou == TRUE) PlaySound("expert");
      }
      if (vis == TRUE && Gl_ibuf_160 < 0.75 && Gl_ibuf_160[Lci_16 + 1] > 0.75) {
         Gl_ibuf_164 = Gl_ibuf_160;
         if (his == FALSE) Lci_20 = FALSE;
         f0_0(Lci_20 + name + 3, 0, Time, High + 5.0 * Point, 234, Sell, 1);
         if (ObjectFind(Lci_20 + name + 3) == 0 && sou == TRUE) PlaySound("expert");
      }
      if (vis == FALSE && Gl_ibuf_160[Lci_16 + 1] > -0.9 && Gl_ibuf_160[Lci_16 + 2] < -0.9) {
         Gl_ibuf_176 = Gl_ibuf_160;
         if (sou == TRUE) PlaySound("expert");
      }
      if (vis == FALSE && Gl_ibuf_160 < 0.9 && Gl_ibuf_160[Lci_16 + 1] > 0.9) {
         Gl_ibuf_164 = Gl_ibuf_160;
         if (sou == TRUE) PlaySound("expert");
      }
      if (vis == FALSE && Gl_ibuf_160[Lci_16 + 1] > -0.75 && Gl_ibuf_160[Lci_16 + 2] < -0.75) {
         Gl_ibuf_176 = Gl_ibuf_160;
         if (sou == TRUE) PlaySound("expert");
      }
      if (vis == FALSE && Gl_ibuf_160 < 0.75 && Gl_ibuf_160[Lci_16 + 1] > 0.75) {
         Gl_ibuf_164 = Gl_ibuf_160;
         if (sou == TRUE) PlaySound("expert");
      }
   }
   return (0);
}

// 4E7250142D3FA193160201293FF7C9B5
void f0_0(string Ar_name_0, int Ar_window_8, int Ar_datetime_12, double Ard_16, int Ari_24, color Ar_color_28, int Ar_width_32 = 1) {
   ObjectCreate(Ar_name_0, OBJ_ARROW, Ar_window_8, 0, 0);
   ObjectSet(Ar_name_0, OBJPROP_TIME1, Ar_datetime_12);
   ObjectSet(Ar_name_0, OBJPROP_PRICE1, Ard_16);
   ObjectSet(Ar_name_0, OBJPROP_ARROWCODE, Ari_24);
   ObjectSet(Ar_name_0, OBJPROP_COLOR, Ar_color_28);
   ObjectSet(Ar_name_0, OBJPROP_WIDTH, Ar_width_32);
}

// 5FD0582B1A3046B997A40BB597A61B62
void f0_1() {
   for (int Lci_0 = 15000; Lci_0 >= -1; Lci_0--) {
      ObjectDelete(Lci_0 + "OBGECT");
      ObjectDelete(Lci_0 + "OBGEC");
      ObjectDelete(Lci_0 + "OBGE");
      ObjectDelete(Lci_0 + "OBG");
      ObjectDelete(Lci_0 + name);
      ObjectDelete(Lci_0 + name + 1);
      ObjectDelete(Lci_0 + name + 2);
      ObjectDelete(Lci_0 + name + 3);
   }
}

## FOTINI — 2016-09-16 06:48

> Цитата (eevviill2):
> Тримай.

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

---

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