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

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

---

## Capital Plus — 2024-11-29 20:23

> Цитата (ale9551):
> Уважаемые программисты!
> В советнике некорректно работает мартингейл,если поставить MMLossesMull   = 2.0(например),то лоты после срабатывания стоп лосса будут удваиваться только,если минимальный лот стоит 0.1,т.е следующие сделки после сработки СЛ будут 0.2. 0.4. 0.8. 0.16 и.т.д.
> А при лоте 0.01 лот почему то не удваивается,возможно советник заточен под четырехзнак.
> Сделайте пожалуйста так,чтобы мартингейл срабатывал с лота 0.01 и выше,а не с лота 0.1
> Если возможно,то сделайте пожалуйста время торговли по терминалу.
> Заранее благодарен!

Запустил, всё работает в оригинальном файле

Проверьте настройки, я выставил следующие:

Время торговли добавил

## ale9551 — 2024-11-29 20:36

> Цитата (Capital Plus):
> Запустил, всё работает в оригинальном файле
>
>
>
> Проверьте настройки, я выставил следующие:
>
>
>
>
> Время торговли добавил

Проверил,все равно удвоение после стоп лосса не происходит!
Вот логи:

19:32:42.780    SA_EA_600 v1.1 GBPJPY,H1 inputs: MaxDD=30.0; MMStart=0.1; MMMaximum=50.0; MMLossesMull=2.0; PipeName=SA_600; ServerPairName=; BidCorrection=0.0; AskCorrection=0.0; ActionPips=-2; TargetPips=10; StopPips=2; VirtualStops=0; ConfirmMS=20; SleepMS=20; Slippage=1; Magic=4445; str_time=-----------------  Время торговли; Start_hour=1; Start_minute=19; End_hour=23; End_minute=54; str_time_news=-----------------  Новости; DisabledBeforeNews=60; DisabledAfterNews=60; NewsTime0=11:30; NewsTime1=15:30; NewsTime2=; NewsTime3=; NewsTime4=; NewsTime5=; NewsTime6=; NewsTime7=; NewsTime8=; NewsTime9=;
2    19:32:49.983    SA_EA_600 v1.1 GBPJPY,H1: open #93082286 buy 0.01 GBPJPY at 190.563 ok
2    19:32:50.233    SA_EA_600 v1.1 GBPJPY,H1: modify #93082286 buy 0.01 GBPJPY at 190.563 sl: 190.542 tp: 190.663 ok
2    19:33:02.337    SA_EA_600 v1.1 GBPJPY,H1: open #93082307 buy 0.01 GBPJPY at 190.557 ok
2    19:33:02.759    SA_EA_600 v1.1 GBPJPY,H1: modify #93082307 buy 0.01 GBPJPY at 190.557 sl: 190.531 tp: 190.657 ok
2    19:33:03.853    SA_EA_600 v1.1 GBPJPY,H1: close #93082307 buy 0.01 GBPJPY at 190.557 sl: 190.531 tp: 190.657 at price 190.537
2    19:33:04.244    SA_EA_600 v1.1 GBPJPY,H1: open #93082316 buy 0.01 GBPJPY at 190.554 ok
2    19:33:04.447    SA_EA_600 v1.1 GBPJPY,H1: modify #93082316 buy 0.01 GBPJPY at 190.554 sl: 190.528 tp: 190.654 ok
2    19:33:08.071    SA_EA_600 v1.1 GBPJPY,H1: close #93082316 buy 0.01 GBPJPY at 190.554 sl: 190.528 tp: 190.654 at price 190.533
2    19:33:08.275    SA_EA_600 v1.1 GBPJPY,H1: open #93082343 buy 0.01 GBPJPY at 190.550 ok
2    19:33:08.463    SA_EA_600 v1.1 GBPJPY,H1: modify #93082343 buy 0.01 GBPJPY at 190.550 sl: 190.524 tp: 190.650 ok
2    19:33:08.915    SA_EA_600 v1.1 GBPJPY,H1: close #93082343 buy 0.01 GBPJPY at 190.550 sl: 190.524 tp: 190.650 at price 190.528
2    19:33:09.259    SA_EA_600 v1.1 GBPJPY,H1: open #93082349 buy 0.01 GBPJPY at 190.533 ok
2    19:33:09.525    SA_EA_600 v1.1 GBPJPY,H1: modify #93082349 buy 0.01 GBPJPY at 190.533 sl: 190.506 tp: 190.633 ok
2    19:33:10.290    SA_EA_600 v1.1 GBPJPY,H1: close #93082349 buy 0.01 GBPJPY at 190.533 sl: 190.506 tp: 190.633 at price 190.511
2    19:33:10.494    SA_EA_600 v1.1 GBPJPY,H1: open #93082359 buy 0.01 GBPJPY at 190.527 ok
2    19:33:10.697    SA_EA_600 v1.1 GBPJPY,H1: modify #93082359 buy 0.01 GBPJPY at 190.527 sl: 190.501 tp: 190.627 ok
2    19:33:21.978    SA_EA_600 v1.1 GBPJPY,H1: open #93082409 buy 0.01 GBPJPY at 190.506 ok
2    19:33:22.134    SA_EA_600 v1.1 GBPJPY,H1: modify #93082409 buy 0.01 GBPJPY at 190.506 sl: 190.485 tp: 190.606 ok

Вот,сейчас стал срабатывать мартингейл,но по несколко раз подряд

19:35:59.514    SA_EA_600 v1.1 GBPJPY,H1: modify #93083229 buy 0.03 GBPJPY at 190.518 sl: 190.491 tp: 190.618 ok
2    19:36:06.530    SA_EA_600 v1.1 GBPJPY,H1: close #93083229 buy 0.03 GBPJPY at 190.518 sl: 190.491 tp: 190.618 at price 190.500
2    19:36:06.999    SA_EA_600 v1.1 GBPJPY,H1: open #93083284 buy 0.05 GBPJPY at 190.513 ok
2    19:36:07.171    SA_EA_600 v1.1 GBPJPY,H1: modify #93083284 buy 0.05 GBPJPY at 190.513 sl: 190.490 tp: 190.613 ok
2    19:36:27.921    SA_EA_600 v1.1 GBPJPY,H1: open #93083387 buy 0.04 GBPJPY at 190.492 ok
2    19:36:28.264    SA_EA_600 v1.1 GBPJPY,H1: modify #93083387 buy 0.04 GBPJPY at 190.492 sl: 190.469 tp: 190.592 ok
2    19:36:29.202    SA_EA_600 v1.1 GBPJPY,H1: open #93083396 buy 0.04 GBPJPY at 190.480 ok
2    19:36:29.608    SA_EA_600 v1.1 GBPJPY,H1: modify #93083396 buy 0.04 GBPJPY at 190.480 sl: 190.453 tp: 190.580 ok
2    19:36:32.249    SA_EA_600 v1.1 GBPJPY,H1: close #93083396 buy 0.04 GBPJPY at 190.480 sl: 190.453 tp: 190.580 at price 190.458
2    19:36:32.561    SA_EA_600 v1.1 GBPJPY,H1: open #93083419 buy 0.04 GBPJPY at 190.474 ok
2    19:36:32.796    SA_EA_600 v1.1 GBPJPY,H1: modify #93083419 buy 0.04 GBPJPY at 190.474 sl: 190.451 tp: 190.574 ok
2    19:37:01.561    SA_EA_600 v1.1 GBPJPY,H1: open #93083608 buy 0.04 GBPJPY at 190.467 ok
2    19:37:01.842    SA_EA_600 v1.1 GBPJPY,H1: modify #93083608 buy 0.04 GBPJPY at 190.467 sl: 190.441 tp: 190.567 ok
2    19:37:09.717    SA_EA_600 v1.1 GBPJPY,H1: close #93083608 buy 0.04 GBPJPY at 190.467 sl: 190.441 tp: 190.567 at price 190.444
2    19:37:10.046    SA_EA_600 v1.1 GBPJPY,H1: open #93083684 buy 0.04 GBPJPY at 190.460 ok
2    19:37:10.295    SA_EA_600 v1.1 GBPJPY,H1: modify #93083684 buy 0.04 GBPJPY at 190.460 sl: 190.434 tp: 190.560 ok
2    19:37:45.592    SA_EA_600 v1.1 GBPJPY,H1: close #93083684 buy 0.04 GBPJPY at 190.460 sl: 190.434 tp: 190.560 at price 190.435
2    19:37:46.123    SA_EA_600 v1.1 GBPJPY,H1: open #93083847 buy 0.04 GBPJPY at 190.460 ok
2    19:37:46.296    SA_EA_600 v1.1 GBPJPY,H1: modify #93083847 buy 0.04 GBPJPY at 190.460 sl: 190.434 tp: 190.560 ok
2    19:37:58.092    SA_EA_600 v1.1 GBPJPY,H1: close #93083847 buy 0.04 GBPJPY at 190.460 sl: 190.434 tp: 190.560 at price 190.440
2    19:37:58.389    SA_EA_600 v1.1 GBPJPY,H1: open #93083917 buy 0.04 GBPJPY at 190.452 ok
2    19:37:58.514    SA_EA_600 v1.1 GBPJPY,H1: modify #93083917 buy 0.04 GBPJPY at 190.452 sl: 190.430 tp: 190.552 o

Возможно ли чтобы мартин срабатывал после каждого стоп лосса по схеме 0.01,0.02,0.04,0.08,0.16 и.т.д. Если поставить мин лот 0.10,то тогда удвоение проиходит сразу.

## ale9551 — 2024-11-29 20:55

> Цитата (Capital Plus):
> Запустил, всё работает в оригинальном файле
>
>
>
> Проверьте настройки, я выставил следующие:
>
>
>
>
> Время торговли добавил

Спасибо Огромное! Вроде подобрал приблизителные настройк:
MaxDD=90
MMStart=20
MMMaximum=400
При них удваивается,но по схеме 0.01,0.02,0.04,0.07.
Вопрос снимаю,Спасибо Огромное!

## FxMen — 2024-11-29 20:59

Почти грааль получился, но есть косяки со стрелками! 
Делался, чтоб не рисовал, а теперь они стали залипать. )))
Как-то можно убрать этот косяк?

## Capital Plus — 2024-11-29 21:01

> Цитата (ale9551):
> Спасибо Огромное! Вроде подобрал приблизителные настройк:
> MaxDD=90
> MMStart=20
> MMMaximum=400
> При них удваивается,но по схеме 0.01,0.02,0.04,0.07.
> Вопрос снимаю,Спасибо Огромное!

Там очень-очень длинная формула расчёта лота, которая чувствительная к параметрам допустимой просадки, учитывает маржу и прочее-прочее, длиною во всю ширину монитора.

Наверное, поэтому она так странно работает на разном депо

## Capital Plus — 2024-11-29 21:08

> Цитата (FxMen):
> Почти грааль получился, но есть косяки со стрелками!
> Делался, чтоб не рисовал, а теперь они стали залипать. )))
> Как-то можно убрать этот косяк?

Это тот же самый? ATR Signals?

Если да, то в нём добавлена предварительная очистка буферов как при иницализации специальной буферной функцией, так и перед первым проходом - ещё и массивной.

В самом коде в части логики алгоритма строго прописана отрисовка только одной стрелки через добавление else (иначе).

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

А если они есть, то тут вопросы к терминалу.

+ я проверил на двух терминалах разных брокеров, никаких косяков нет. Вот тот участок, стрелки на месте, лишних нет

Если Вы про другой индикатор, то желательно его выложить (прикрепить) сюда

## FxMen — 2024-11-29 23:52

> Цитата (Capital Plus):
> Это тот же самый? ATR Signals?
>
> Если да, то в нём добавлена предварительная очистка буферов как при иницализации специальной буферной функцией, так и перед первым проходом - ещё и массивной.
>
> В самом коде в части логики алгоритма строго прописана отрисовка только одной стрелки через добавление else (иначе).
>
> То есть, никаких дополнительных стрелок на одной свече не может быть чисто технически, согласно коду.
>
> А если они есть, то тут вопросы к терминалу.
>
> + я проверил на двух терминалах разных брокеров, никаких косяков нет. Вот тот участок, стрелки на месте, лишних нет
>
>
>
>
>
> Если Вы про другой индикатор, то желательно его выложить (прикрепить) сюда

Да! Это тоже самый индикатор, стрелка так бывает залипает. 
Но после переключения таймами туда-сюда обратно она пропадает. )))
Вшейте, пожалуйста, эти стрелки в этот канал АТР, он в качестве фильтра зайдёт!

## FxMen — 2024-11-29 23:57

Вот опять залипла!

## mobidik — 2024-11-30 00:01

> Цитата (Capital Plus):
> В самом коде в части логики алгоритма строго прописана отрисовка только одной стрелки через добавление else (иначе).
>
> То есть, никаких дополнительных стрелок на одной свече не может быть чисто технически, согласно коду.
>
> А если они есть, то тут вопросы к терминалу.

1. Вопросов к терминалу нет.
2. ... согласно коду - так вот, согласно коду: не может быть установлена стрелка вверх, если она уже установлена и не может быть установлена стрелка вниз, если она уже есть  на данном баре. Так, что, данное условие не запрещает одновременную установку противоположных стрелок. 
Читайте код внимательно.

## Capital Plus — 2024-11-30 00:52

> Цитата (mobidik):
> 1. Вопросов к терминалу нет.
> 2. ... согласно коду - так вот, согласно коду: не может быть установлена стрелка вверх, если она уже установлена и не может быть установлена стрелка вниз, если она уже есть  на данном баре. Так, что, данное условие не запрещает одновременную установку противоположных стрелок.
> **Читайте код внимательно.**

А теперь прочитайте красный оператор

//-------------------------------------------------------------------------------------------------
// Логика для стрелки вверх

        if (close > high[i + 1] + atrValue)

        {

            if (arrup == EMPTY_VALUE) // Только если стрелка не нарисована

            {

                arrup = low - arrow_shift * Shift_koef; // Голубая стрелка под свечу

                if (TimeCurrent() - lastAlertTime > AlertDelay && i < 2)

                {

                    Alert(Symbol() + " " + Tf() + ": " + " signal at ", TimeToString(time, TIME_DATE | TIME_MINUTES) + "    BUY");

                    lastAlertTime = TimeCurrent();

                }

            }

        }

        **else **if (close < low[i + 1] - atrValue)

        {

            if (arrdn == EMPTY_VALUE) // Только если стрелка не нарисована

            {

                arrdn = high + arrow_shift * Shift_koef; // Розовая стрелка над свечу

                if (TimeCurrent() - lastAlertTime > AlertDelay && i < 2)

                {

                    Alert(Symbol() + " " + Tf() + ": " + " signal at ", TimeToString(time, TIME_DATE | TIME_MINUTES) + "    SELL");

                    lastAlertTime = TimeCurrent();

                }

            }

        }
*//--------------------------------------------------------------------------------------------------*

И теперь скажите, пожалуйста, как код сюда умудряется забраться, когда только что выполнил условие выше:* «или это, или то, третьего не дано*»

Мне правда интересно, вам ведь всё понятно

И потом ответьте на следующий вопрос: почему у меня на двух терминалах НЕТ этих двойных стрелок

И третье — это как понимать? То есть, они (стрелки) как бы должны быть двойными, но потом не должны? :

> Цитата (FxMen):
> **Но после переключения таймами туда-сюда обратно она пропадает. )))**

Вы (mobidik) сами читайте, что пишете. И проверяйте посты выше, они недалеко.

## Capital Plus — 2024-11-30 01:16

> Цитата (FxMen):
> Да! Это тоже самый индикатор, стрелка так бывает залипает.
> Но после переключения таймами туда-сюда обратно она пропадает. )))
> Вшейте, пожалуйста, эти стрелки в этот канал АТР, он в качестве фильтра зайдёт!

## Capital Plus — 2024-11-30 01:21

> Цитата (FxMen):
> Вот опять залипла!

У меня есть одна мысль:

Существуют два режима автоматической проверки кода: обычная и через директиву #property strict

Второй режим более строгий, при нём компилятор чаще ругается на ошибки, когда первый режим - допускает (пропускает мимо) многое.

Так вот, я сейчас попробовал установить эту директиву - компилятор сразу запретил авторасширение массива АТР.

То есть, при строгой проверке нужно создать отдельный буфер именно для заполнения массива атр, он не отрисовочный будет, а расчётный.

И как только такой создаётся, то больше половины стрелок - отметаются сразу. То есть, стрелки есть, они также на разворотах встречаются, но их намного меньше.

Я не знаю, что это за эффект (может другие программисты подскажут), но если что - могу скинуть версию с директивой строгой проверки кода.

## FxMen — 2024-11-30 01:27

Вот опять залипла!

> Цитата (Capital Plus):
> У меня есть одна мысль:
>
> Существуют два режима автоматической проверки кода: обычная и через директиву #property strict
>
> Второй режим более строгий, при нём компилятор чаще ругается на ошибки, когда первый режим - допускает (пропускает мимо) многое.
>
>
> Так вот, я сейчас попробовал установить эту директиву - компилятор сразу запретил авторасширение массива АТР.
>
> То есть, при строгой проверке нужно создать отдельный буфер именно для заполнения массива атр, он не отрисовочный будет, а расчётный.
>
> И как только такой создаётся, то больше половины стрелок - отметаются сразу. То есть, стрелки есть, они также на разворотах встречаются, но их намного меньше.
>
>
> Я не знаю, что это за эффект (может другие программисты подскажут), но если что - могу скинуть версию с директивой строгой проверки кода.

Киньте, проверим. И спасибо за работу!

## Capital Plus — 2024-11-30 01:46

> Цитата (FxMen):
> Киньте, проверим. И спасибо за работу!

Один и тот же участок:

1 скрин - предыдущая версия

2 скрин - с директивой (добавление ещё одного буфера для хранения расчётного атр)

## mobidik — 2024-11-30 02:36

> Цитата (Capital Plus):
> Вы (mobidik) сами читайте, что пишете. И проверяйте посты выше, они недалеко.

Условия: ***if (close > high[i + 1] + atrValue) *** и ***if (close < low[i + 1] - atrValue) ****в режиме **реального времени **могут выполниться на одном и том же баре. А Ваше else работает только на истории. Вот по этому у Вас и нет двух стрелок на баре, т.к., смотрите только историю и не включаете логику: данный код работает не только по барно, а еще и по тиково.

PS.*
На счет else: в данном случае оператор защищает логику кода от гепов.

## mobidik — 2024-11-30 02:44

> Цитата (FxMen):
> Вот опять залипла!

Забирай, больше ты не увидишь двух стрелок на одном баре.

## Capital Plus — 2024-11-30 02:45

> Цитата (mobidik):
> Условия: ***if (close > high[i + 1] + atrValue) *** и ***if (close < low[i + 1] - atrValue) ****в режиме **реального времени **могут выполниться на одном и том же баре. А Ваше else работает только на истории. Вот по этому у Вас и нет двух стрелок на баре, т.к., смотрите только историю и не включаете логику: данный код работает не только по барно, а еще и по тиково.*

А чего сразу не сказали?

Я на истории причину ищу, а про онлайн с нулевым баром и не вспомнил

Тут ветка доработок, а не полуслова, в следующий раз раскрывайте мысль подробней, если зашли ветку (или прикрепляйте отредактированный файл сразу).
Учителей много, лучше бы помогали пользователям

## mobidik — 2024-11-30 02:52

> Цитата (Capital Plus):
> А чего сразу не сказали?

Так если прямо указать, то под коркой ничего не отложиться и снова наступите на те же грабли. Читайте код внимательней...

## Capital Plus — 2024-11-30 02:53

> Цитата (mobidik):
> Так если прямо указать, то под коркой ничего не отложиться и снова наступите на те же грабли. Читайте код внимательней...

Ясно. Благодарю, взял на заметку подобный случай.

## consul — 2024-11-30 10:13

> Цитата (mobidik):
> Забирай, больше ты не увидишь двух стрелок на одном баре.

Привет . В тестере почему-то стрелок не ставит . Надеюсь , в реальном времени будет все в порядке . Спасибо .

---

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