Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 448

 
Mickey Moose:


все правильно, вот и хочу его вытащить

получить исходники из этого файла намного сложнее чем решить задачу такого типа)

можно вообще сделать прикольно: советник(или что там у вас без исходников) будет отправлять почту в соседний чарт :-)

просто на досуге сделал http://luxtrade.tk/atcl:start (ветка форума: https://www.mql5.com/ru/forum/224745)

а там в пакетах есть SMTP-сервер (https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)

то есть можно в индикаторе скомандывать Eval("package require smtpd"), потом задать callback для deliver и получить нужную почту сразу,  фактически не выходя за пределы MetaTrader, в том-же процессе

ATcl
  • luxtrade.tk
Рад представить вам библиотеку ATcl v1 beta - интерпретатор Tcl для MT4. Расширяте возможности ваших программ MQL, используйте СУБД, дополняйте сетевыми средствами, интегрируйте их с любыми программами используя Tcl.
 
Maxim Kuznetsov:

можно вообще сделать прикольно: советник(или что там у вас без исходников) будет отправлять почту в соседний чарт :-)

просто на досуге сделал http://luxtrade.tk/atcl:start (ветка форума: https://www.mql5.com/ru/forum/224745)

а там в пакетах есть SMTP-сервер (https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)

то есть можно в индикаторе скомандывать Eval("package require smtpd"), потом задать callback для deliver и получить нужную почту сразу,  фактически не выходя за пределы MetaTrader, в том-же процессе

попробую разобраться, если что могу поделится результатом

 
Artyom Trishkin:

Вот этот должен просто точки ставить по всей истории на дистанции в барах, которую вы задаёте в настройках.

Спасибо, но я пытаюсь узнать номер бара, на котором стрелка и только потом сравнивать его с десяткой (для примера) Без вложенного цикла не обойтись.

Мне нужно в текущий момент времени знать на каком баре стрелка вызываемого индикатора.

Похоже, я совсем не умею выражать свои мысли ). На примере, думаю, будет по понятнее что хочу сделать

К примеру по условию if(Open[i+1]>Cloce[i+1]) по всей истории поставить Text  на High[i+1] с номером бара на котором стоит стрелка
 
Mickey Moose:

попробую разобраться, если что могу поделится результатом

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

Подскажите, как реализовать на MQL5 закрытие всех сделок по всем валютным парам при достижении определенного профита всем сделкам, не важно этом советником они открыты или еще как то? 

Я сделал вот так, правильно ли это?

   if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=0; i<OrdersTotal(); i++)
            trade.PositionClose(OrderGetTicket(i),40);
 

Artyom Trishkin, решила. Действительно вложенных циклов ненужно. Спасибо )

 
Roman Sharanov:

Подскажите, как реализовать на MQL5 закрытие всех сделок по всем валютным парам при достижении определенного профита всем сделкам, не важно этом советником они открыты или еще как то? 

Я сделал вот так, правильно ли это?

Нет не правильно. В mql5 OrdersTotal() это количество отложенных ордеров, а действующие называются позиции. Соответственно цикл должен быть построен по количеству позиций, PositionsTotal()
 
Roman Sharanov:

Я сделал вот так, правильно ли это?

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(PositionGetTicket(i),40);

Как-то так.

Вы используете цикл от ноля, а нужно наоборот от большего к нолю, т.к. вы закрываете ордера прям в цикле. Ну и второе вам уже было сказано использовать PositionsTotal().

 
Понял, благодарю за помощь!
 
Roman Sharanov:
Понял, благодарю за помощь!

Tолько OrderGetTicket() не забудьте поменять на PositionGetTicket() в выделенной строке.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам

Konstantin Nikitin, 2018.02.03 08:38

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(OrderGetTicket(i),40);

Как-то так.

Вы используете цикл от ноля, а нужно наоборот от большего к нолю, т.к. вы закрываете ордера прям в цикле. Ну и второе вам уже было сказано использовать PositionsTotal().


Причина обращения: