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

Per favore, alcuni programmatori potrebbero aggiungere avvisi (acquisto, vendita, neutrale) sonori e notifiche push sul cellulare (possibilmente alla chiusura di OGNI candela) sull'indicatore Powersystem MT5. Grazie mille in anticipo.
 

Вложения

Per favore, alcuni programmatori potrebbero aggiungere avvisi (acquisto, vendita, neutrale) sonori e notifiche push sul cellulare (possibilmente alla chiusura di OGNI candela) sull'indicatore Powersystem MT5. Grazie mille in anticipo.
2026-03-04_004734.jpg

Как настроить мобильные уведомления: Если вы ещё не настроили Push-уведомления в MT5: Откройте мобильное приложение MT5 на телефоне, перейдите в Настройки > Сообщения и найдите свой MetaQuotes ID (код из 8 символов). В десктопной версии MT5 перейдите в Сервис > Настройки > Уведомления. Установите галочку «Включить Push-уведомления». Введите ваш MetaQuotes ID и нажмите «Проверить». Если телефон издаст звуковой сигнал — настройка завершена успешно!
 

Вложения

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

Come impostare le notifiche push su dispositivi mobili: se non hai ancora impostato le notifiche push su MT5, apri l'app mobile di MT5 sul tuo telefono, vai su Impostazioni > Messaggi e trova il tuo ID MetaQuotes (codice di 8 caratteri). Nella versione desktop di MT5, vai su Strumenti > Impostazioni > Notifiche. Seleziona la casella "Abilita notifiche push". Inserisci il tuo ID MetaQuotes e clicca su "Test". Se il telefono emette un segnale acustico, la configurazione è avvenuta correttamente!
WOW! So fast, and so complete. I thank you very much, appreciate your reply. Many many thanks again.
 
Еще раз обращаюсь с просьбой, очень надо.
Эксперт в таком виде работает без проблем.
if(triger == 2) - открываем 2 лота Buy (Lots*2). Sell - аналогично.
Помогите прописать возможнось закрытия одного лота из 2 открытых т.е
if triger == 1 - закрыть 1 лот Buy.
if triger == -1 - закрыть 1 лот Sell.

ИванМН посоветовал такой вариант, но я не могу это прописать.
" Вы имеете в виду частичное закрытие позиции? Просто указываете в функции OrderClose необходимую лотность и всё. Только не забудьте нормализовать количество лотов перед отправкой приказа.
У Вас закроется требуемый объём, на оставшуюся часть терминалом будет создана новая позиция с новым номером ("тикетом").
И добавится соответствующий комментарий к закрывшейся и оставшейся частям ".
Спасибо сочувствующим.
 

Вложения

Еще раз обращаюсь с просьбой, очень надо.
Эксперт в таком виде работает без проблем.
if(triger == 2) - открываем 2 лота Buy (Lots*2). Sell - аналогично.
Помогите прописать возможнось закрытия одного лота из 2 открытых т.е
if triger == 1 - закрыть 1 лот Buy.
if triger == -1 - закрыть 1 лот Sell.

ИванМН посоветовал такой вариант, но я не могу это прописать.
" Вы имеете в виду частичное закрытие позиции? Просто указываете в функции OrderClose необходимую лотность и всё. Только не забудьте нормализовать количество лотов перед отправкой приказа.
У Вас закроется требуемый объём, на оставшуюся часть терминалом будет создана новая позиция с новым номером ("тикетом").
И добавится соответствующий комментарий к закрывшейся и оставшейся частям ".
Спасибо сочувствующим.

Сводная таблица работы триггеров​

ТриггерДействие
2Закрыть все Sell → Открыть Buy с Lots*2
-2Закрыть все Buy → Открыть Sell с Lots*2
1Частично закрыть Buy на Lots (из Lots*2 останется Lots)
-1Частично закрыть Sell на Lots (из Lots*2 останется Lots)
0Закрыть всё

Как это работает​

  1. trigger == 2 — открывается позиция Buy объёмом Lots*2 (например, 0.02)
  2. trigger == 1 — вызывается PartialClose_ord_by_type(OP_BUY, Lots), которая передаёт в OrderClose объём Lots (например, 0.01) вместо полного объёма позиции
  3. Терминал закрывает указанную часть и создаёт новую позицию с новым тикетом на оставшийся объём (0.01)
  4. Magic number и символ сохраняются, поэтому советник продолжает корректно отслеживать позицию через ord_in_market()
Аналогично работает для Sell с триггерами -2 и -1.
 

Вложения

Краткое описание всех изменений
Подробности о функциях
UseMoneyManagement true → лоты рассчитываются на основе капитала; false → используется фиксированное значение лотов
RiskPercent Процент от капитала счета, используемый для определения размера лота (по умолчанию 2%)
DecreaseFactor Сохраняется из исходного значения — уменьшает лот после последовательных убытков
Нормализация лота Привязана к MODE_LOTSTEP, ограничена диапазоном MODE_MINLOT / MODE_MAXLOT
MaxSpreadPoints Максимально допустимый спред в пунктах; 0 = фильтр отключен
IsSpreadAllowed() Вызывается в CheckForOpen() — пропускает сделку и регистрирует сообщение, если спред слишком большой
ReverseSignals false = исходная логика (crossDown→BUY, crossUp→SELL); true = обратная (crossDown→SELL, crossUp→BUY)
Теперь проверяется значение возвращаемого значения OrderSend для сообщений об ошибках; Ошибки, выведенные в журнал
Округление партии Исправлено в исходном коде NormalizeDouble(..., 01) → правильное округление до 2 знаков после запятой с шагом партии
Уважаемый deadsoul! Не могли бы вы добавить в вашу модификацию ещё 2 небольших параметра: 1.Время работы советника
2. Магик номер
Заранее благодарен!
 

Вложения

Вложения

Уважаемые программисты!!! Прошу помощи. Сделайте пожалуйста буферные стрелки......Посмотреть вложение 587996
Я обновил код и добавил BufferBUY (Буфер 6) и BufferSEL (Буфер 7). Я также изменил функцию DrawARROW, чтобы она записывала значения цены в эти буферы до отрисовки графических объектов. Это значит, что твой советник (EA) сможет считывать сигналы, даже если в настройках индикатора на графике выбрать ShowArrows = HideArrows. Вот твой обновленный код
 

Вложения

Вложения

  • 2026-03-08_222802.jpg
    2026-03-08_222802.jpg
    37,9 КБ · Просмотры: 65
Последнее редактирование модератором:
Я обновил код и добавил BufferBUY (Буфер 6) и BufferSEL (Буфер 7). Я также изменил функцию DrawARROW, чтобы она записывала значения цены в эти буферы до отрисовки графических объектов. Это значит, что твой советник (EA) сможет считывать сигналы, даже если в настройках индикатора на графике выбрать ShowArrows = HideArrows. Вот твой обновленный код
огромное спасибо.....
 
Уважаемый deadsoul! Можбыть я не все понимаю, обьясните пожалуйста.
Я прикрепил код _DBL_SHsq.mq4 для доработки, Вы выложили код _DBL_SHsq(1)-MOD.mq4.
Значит ли это,что код был доработан ?
Но этот MOD.mq4 не работает. Стоит ли ждать следующего MOD.mq4 ?
 
Уважаемые кодеры, не мог бы кто нибудь сделать индикатор так, чтобы точки для построения задавались вручную?
 

Вложения

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

Смотрят сейчас (2) Посмотреть

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

Назад
Верх