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

Capital Plus

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

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

1732900968272.png

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

1732900999032.png


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

1732901026437.png
 

Вложения

ale9551

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

Посмотреть вложение 558177

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

Посмотреть вложение 558178


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

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

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

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

Посмотреть вложение 558177

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

Посмотреть вложение 558178


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

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

FxMen

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


m1.jpg
 

Capital Plus

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

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

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

Capital Plus

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


Посмотреть вложение 558182

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

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

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

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

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

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

1732904259450.png



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

FxMen

VIP-участник
Это тот же самый? ATR Signals?

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

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

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

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

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

Посмотреть вложение 558184



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

M5.jpg
 

Вложения

mobidik

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

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

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

Capital Plus

Местный житель
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();

}

}

}
//--------------------------------------------------------------------------------------------------



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

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

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

1732917700059.png



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

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

Capital Plus

Местный житель

Вложения

Capital Plus

Местный житель

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

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

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


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

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

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


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

FxMen

VIP-участник
Вот опять залипла!

Посмотреть вложение 558198
У меня есть одна мысль:

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

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


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

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

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


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

Capital Plus

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

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

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

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

1732920207422.png

1732920156952.png
 

Вложения

mobidik

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

PS.

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

Capital Plus

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

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

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

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

Посмотрели (454) Посмотреть

Отслеживают (1805) Посмотреть