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

eevviill2

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

Вложения

  • e-OpenByTime.mq4
    17,1 КБ · Просмотры: 55

FOTINI

Местный житель
Добрый день,

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

Спасибо.
 

Вложения

  • !!!-fx-trender.mq4
    38,3 КБ · Просмотры: 69

eevviill2

Местный знаток
Добрый день,

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

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

FOTINI

Местный житель
Конкретно шо треба?
Замість 1 ордера 3?

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

Спасибо!!!!
 
Последнее редактирование:

gek

Элитный участник
Добрый день,

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

Спасибо.

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

Tankk

*********
всем *hi*

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

Вложения

  • cm_SL_NL_TP_TT == ERROR.png
    cm_SL_NL_TP_TT == ERROR.png
    39,4 КБ · Просмотры: 258
  • cm_SL_NL_TP_TT.mq4
    4,8 КБ · Просмотры: 52

поручик

Гость
На 4-знаке - норм.

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

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

Tankk

*********
На 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()); }
 
Последнее редактирование:

поручик

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

Prelagatay

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

Вложения

  • NB-channel.mq4
    5,6 КБ · Просмотры: 40

mobidik

-----
всем *hi*

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

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

eevviill2

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

Спасибо!!!!
Тримай.
 

Вложения

  • !!!-fx-trender.mq4
    34,7 КБ · Просмотры: 129

Аввакум2

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

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

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

#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[Lci_16];
shift_12 = iBarShift(NULL, TimeFrame, time_8, FALSE);
Gl_ibuf_160[Lci_16] = 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[Lci_16] = Gl_ibuf_160[Lci_16];
if (his == FALSE) Lci_20 = FALSE;
f0_0(Lci_20 + name, 0, Time[Lci_16], Low[Lci_16] - 5.0 * Point, 233, Buy, 1);
if (ObjectFind(Lci_20 + name) == 0 && sou == TRUE) PlaySound("expert");
}
if (vis == TRUE && Gl_ibuf_160[Lci_16] < 0.9 && Gl_ibuf_160[Lci_16 + 1] > 0.9) {
Gl_ibuf_164[Lci_16] = Gl_ibuf_160[Lci_16];
if (his == FALSE) Lci_20 = FALSE;
f0_0(Lci_20 + name + 1, 0, Time[Lci_16], High[Lci_16] + 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[Lci_16] = Gl_ibuf_160[Lci_16];
if (his == FALSE) Lci_20 = FALSE;
f0_0(Lci_20 + name + 2, 0, Time[Lci_16], Low[Lci_16] - 5.0 * Point, 233, Buy, 1);
if (ObjectFind(Lci_20 + name + 2) == 0 && sou == TRUE) PlaySound("expert");
}
if (vis == TRUE && Gl_ibuf_160[Lci_16] < 0.75 && Gl_ibuf_160[Lci_16 + 1] > 0.75) {
Gl_ibuf_164[Lci_16] = Gl_ibuf_160[Lci_16];
if (his == FALSE) Lci_20 = FALSE;
f0_0(Lci_20 + name + 3, 0, Time[Lci_16], High[Lci_16] + 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[Lci_16] = Gl_ibuf_160[Lci_16];
if (sou == TRUE) PlaySound("expert");
}
if (vis == FALSE && Gl_ibuf_160[Lci_16] < 0.9 && Gl_ibuf_160[Lci_16 + 1] > 0.9) {
Gl_ibuf_164[Lci_16] = Gl_ibuf_160[Lci_16];
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[Lci_16] = Gl_ibuf_160[Lci_16];
if (sou == TRUE) PlaySound("expert");
}
if (vis == FALSE && Gl_ibuf_160[Lci_16] < 0.75 && Gl_ibuf_160[Lci_16 + 1] > 0.75) {
Gl_ibuf_164[Lci_16] = Gl_ibuf_160[Lci_16];
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);
}
}
 
Последнее редактирование модератором:
Верх