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

Раздел: Язык программирования MQL4
Автор темы: machzelet
Создана: 2010-02-26 20:00
Ответов: 12060 | Просмотров: 1842833
Страница 603 из 604
Источник: https://forexsystemru.com/threads/61956/page-603

---

## DomovenokBrest — 2014-10-01 00:16

> Цитата (Bukin):
> Скомпилируйте пожалуйста индикатор в mg4. Очень нужно ...

Лови...

## domusns — 2014-10-01 02:16

Рисует и очень прилично.

## Atragenarius — 2014-10-01 03:07

Здравствуйте!
Подскажите пожалуйста как можно грамотно заменить вот такое выражение в советнике:
if((use_Max_trades &&  Orders_Total<Max_trades)&&((iRSI(NULL, PERIOD_H1,28,  PRICE_CLOSE, 1) < RsiMinimum )) 
на примерно такое &&((3_Level_ZZ_Semafor) == буферу 4 ))
и
if((use_Max_trades && Orders_Total<Max_trades)&&((iRSI(NULL, PERIOD_H1,28, PRICE_CLOSE, 1) >RsiMaximum  ))
на    &&((3_Level_ZZ_Semafor) == буферу 5 ))
я не могу никак сообразить.

## Елена4 — 2014-10-01 08:10

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

## AlexeyVik — 2014-10-01 08:35

> Цитата (Елена4):
> Здравствуйте. Помогите научить скрипт определять какие ордера выставлять. Стоповые или лимитные в зависимости от указанной цены, выше ниже. Заранее спасибо.

Что-то я от жизни отстал, что-ли? Неужели уже есть такие компьютеры которые читают мысли человека?

Ну указали цену, и что? Выше неё можно поставить и стоп и лимит так-же и ниже этой цены можно поставить и SellStop и BuyLimit. 
Проще написать разные скрипты на каждый случай отдельно, или найти готовые.

## jenzo — 2014-10-01 10:36

Пацаны как можно эти ошибки исправить?

Пытаюсь сам что то сделать :)

[изображение: http://i.imgur.com/UTcwxEy.png]

[изображение: http://i.imgur.com/FLQ6dpM.png]

[изображение: http://i.imgur.com/fUq78u3.png]

## viplert — 2014-10-01 11:15

> Цитата (jenzo):
> Пацаны как можно эти ошибки исправить?
>
> Пытаюсь сам что то сделать :)
>
>
> 
> [изображение: http://i.imgur.com/UTcwxEy.png]
>
> [изображение: http://i.imgur.com/FLQ6dpM.png]
>
> [изображение: http://i.imgur.com/fUq78u3.png]
>
> 

Скинь попробую исправить

## jenzo — 2014-10-01 11:49

> Цитата (jenzo):
> Пацаны как можно эти ошибки исправить?
>
> Пытаюсь сам что то сделать :)
>
>
> 
> [изображение: http://i.imgur.com/UTcwxEy.png]
>
> [изображение: http://i.imgur.com/FLQ6dpM.png]
>
> [изображение: http://i.imgur.com/fUq78u3.png]
>
> 

вопрос снимается.

## ksardas — 2014-10-01 12:23

> Цитата (Atragenarius):
> Здравствуйте!
> Подскажите пожалуйста как можно грамотно заменить вот такое выражение в советнике:
> if((use_Max_trades &&  Orders_Total<Max_trades)&&((iRSI(NULL, PERIOD_H1,28,  PRICE_CLOSE, 1) < RsiMinimum ))
> на примерно такое &&((3_Level_ZZ_Semafor) == буферу 4 ))
> и
> if((use_Max_trades && Orders_Total<Max_trades)&&((iRSI(NULL, PERIOD_H1,28, PRICE_CLOSE, 1) >RsiMaximum  ))
> на    &&((3_Level_ZZ_Semafor) == буферу 5 ))
> я не могу никак сообразить.

Хи-хи... Это вроде -как заменить чайник на трубу от самовара:D
В условиях сравнивается мах кол-во ордеров - это убирать ненужно, и дополнительно сигнал RSI сравнивается с уровнем
Что б заменить сигнал на семафор нужно сравнить значение буфера с каким-то уровнем...и написать примерно так
..iCustom(Symbol(),Period(),"3_Level_ZZ_Semafor",4,1)>= значение

это значит-символ текущий, тф текущий, имя, дальше можно поставить параметры для замены, буфер, номер бара-1-предыдущий

## Atragenarius — 2014-10-01 14:31

**Попробую разобраться**

То что вы написали уважаемый **ksardas **для меня пока ещё тёмный лес. Но я попытаюсь разобраться. А суть вопроса такова, как только выскакивает семафор высшего порядка ( буфер 4 или 5) то и зелёный свет для открытия ордеров. Вот если бы Ваш ответ был сформулирован подобным образом мне было бы легче его подставить. А так придётся методом втыка, подставлять или всё или по частям то выражение которое Вы составили. Но всё равно ещё раз спасибо за участие.

## ksardas — 2014-10-01 15:34

> Цитата (Atragenarius):
> методом втыка,

Что за новый метод??? **втыка**:not-good:

Просто все:
if((use_Max_trades && Orders_Total<Max_trades)&&(iCustom(Symbol(),Period(),"3_Level_ZZ_Semafor",4 ,1) < уровень ))
в мт кнопка данные -смотрим. что есть в буфере в нужный момент и с чем-нить сравниваем....все;)

Посмотрел- буфер 5 на селл - сравниваем или с бид, или лучше с ценой закрытия свечи
примерно так
...&&(iCustom(Symbol(),Period(),"3_Level_ZZ_Semafor",5 ,1) > Close ))
buy :
..&&(iCustom(Symbol(),Period(),"3_Level_ZZ_Semafor",4 ,1)< Close ))

Тока учти семафор сдвигает свои экстремумы и луше брать со 2 или 3 бара;)

## Atragenarius — 2014-10-01 19:48

Ну Вы мне полностью левую часть выражения разжевали. Осталось понять
 функцию Close. Её надо самому сочинить, это  мне не по силам, или скинуть на панель в таком виде extern double Close: , или вообще убрать из выражения как лишнюю деталь. потому что в этом советнике важен не точный вход а только окно 1-3 бара создаваемое семафором? Для точного входа есть другие механизмы. Вот и три варианта метода **втыка**, буду наугад втыкать и компилировать. А что получится не знаю. Впрочем, наверняка есть и другие, неизвестные мне , варианты.

## ksardas — 2014-10-01 19:56

> Цитата (Atragenarius):
> Осталось понять функцию Close. .

В едиторе жми F1 и кури справочник MQL - там все разжевано, я начинал так:)

> Цитата:
> double Close[]
>
> Массив-таймсерия, содержащий цены закрытия каждого бара текущего графика.
>
> Индексация элементов таймсерий производится задом наперед, от последнего к первому. Текущий бар, самый последний в массиве, имеет индекс 0. Самый старый бар, первый на графике, имеет индекс Bars-1.

## railwayman — 2014-10-01 20:55

здравствуйте.помогите убрать магик в этом советнике,чтобы учитывал все ордера по текущему инструменту

## zhserg — 2014-10-02 06:25

> Цитата (railwayman):
> здравствуйте.помогите убрать магик в этом советнике,чтобы учитывал все ордера по текущему инструменту

:)

## Елена4 — 2014-10-02 06:50

> Цитата (AlexeyVik):
> Что-то я от жизни отстал, что-ли? Неужели уже есть такие компьютеры которые читают мысли человека?
>
> Ну указали цену, и что? Выше неё можно поставить и стоп и лимит так-же и ниже этой цены можно поставить и SellStop и BuyLimit.
> Проще написать разные скрипты на каждый случай отдельно, или найти готовые.

Если бы Вы посмотрели скрипт, то и не было такого удивления. В скрипте можно выбирать направление. Sell или Buy. Остается только добавить функцию, чтобы он определял ставить стоп или лимит. Иногда кажется что проще самой голову сломать, но сделать, чем просить. Умничать могут все, а помочь не каждый может.

## ksardas — 2014-10-02 07:07

> Цитата (Елена4):
> проще самой голову сломать, но сделать,

Дык сломайте -удивите всех:embrace:
Условие такое -if(Price>Ask) - значит ставится ,OP_SELLLIMIT или OP_BUYSTOP
если if(Price<Bid) значит ставится ,OP_BUYLIMIT или OP_SELLSTOP
*hi*

## Елена4 — 2014-10-02 08:08

> Цитата (ksardas):
> Дык сломайте -удивите всех:embrace:
> Условие такое -if(Price>Ask) - значит ставится ,OP_SELLLIMIT или OP_BUYSTOP
> если if(Price<Bid) значит ставится ,OP_BUYLIMIT или OP_SELLSTOP
> *hi*

Пошла ломать. А вось.

## AlexeyVik — 2014-10-02 09:14

> Цитата (Елена4):
> Если бы Вы посмотрели скрипт, то и не было такого удивления. В скрипте можно выбирать направление. Sell или Buy. Остается только добавить функцию, чтобы он определял ставить стоп или лимит. Иногда кажется что **проще самой голову сломать**, но сделать, чем просить. Умничать могут все, а помочь не каждый может.

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

## railwayman — 2014-10-02 11:09

спасибо zhserg.учитывает все открытые сделки, но он не закрывает сделки когда прибыль от эквити.у меня на счете работает сразу несколько советников этот нужен как закрытие от стартового equity

---

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