Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 908

 
ребят спасибо 
 
A.Vakutin:

Поделитесь, пожалуйста, кто знает и умеет, как запретить советнику продажи после срабатывания стопа?

// Оставанивливает работу всех советников, если сработал SL.

#include <MT4Orders.mqh>      // https://www.mql5.com/ru/code/16006
#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

void OnTrade()
{
  static int PrevTotal = OrdersHistoryTotal();
  const int Total = OrdersHistoryTotal();
  
  for (int i = Total - 1; i >= PrevTotal; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == DEAL_REASON_SL))
    {
      long Chart = ChartFirst();
  
      while (Chart != -1)
      {
        if ((Chart != ChartID()) && EXPERT::Is(Chart))
          EXPERT::Remove(Chart);
  
        Chart = ChartNext(Chart);
      }

      break;
    }        
    
  PrevTotal = Total;
}
 

Добрый вечер, форумчане!

Возникла делемма.

У меня произошла сделка и я запомнил ее в переменную

datetime now=TimeCurrent();

Через время у меня произошло событие и я запомнил время в переменную

datetime now2=TimeCurrent();

Как проверить, прошло ли между этими событиями 15 минут?

Думал, что у меня две переменные now и now2 заданы в секундах, пытался брать разность, и она должна быть больше 700 секунд

 if(now2-now>700)

НО это не работает((

Прошу помощи у сообщества!

 
ISL:

Добрый вечер, форумчане!

Возникла делемма.

У меня произошла сделка и я запомнил ее в переменную

Через время у меня произошло событие и я запомнил время в переменную

Как проверить, прошло ли между этими событиями 15 минут?

Думал, что у меня две переменные now и now2 заданы в секундах, пытался брать разность, и она должна быть больше 700 секунд

НО это не работает((

Прошу помощи у сообщества!

Переменная datetime представляется в виде даты и времени. Можно по разному решить задачу, например представить 700 (хотя 15 минут это 900 секунд) в типе datetime

if(now2-now>(datetime)700)

или наоборот переменные представить типом int

if(int(now2-now)>700)

или так

if((int)now2-(int)now>700)
В общем надо проверять...
 
Alexey Viktorov:

Переменная datetime представляется в виде даты и времени. Можно по разному решить задачу, например представить 700 (хотя 15 минут это 900 секунд) в типе datetime


Вечер даёт о себе знать)))

 
ISL:

Вечер даёт о себе знать)))

Ага... Я сейчас часа полтора не мог подключить функцию из инклюдника...

 
Vladimir Karputov:

Подключите стандартный торговый класс CTrade
 
(он идёт в стандартной поставке вместе с терминалом)

и вызовете два метода:

SetTypeFillingBySymbol

Устанавливает тип ордера по исполнению согласно настройкам указанного символа

SetMarginMode

Устанавливает режим расчета маржи в соответствии с настройками текущего счета

владимир добрый вечер ну подскажите еще пожалуста делаю функцию которая подсчитывает процент профит хочу подсчитать проторгованный обьем и не получается считает не правильно я так понимаю нужно выявить ордера с направлением out  и сних посчитать обьем 

double ALL_PROFIT(int rezult)
  {
   HistorySelect(0,TimeCurrent());
   double   rez=0.0;
   double   alprof=0.0;
   uint     total=HistoryDealsTotal();
   for(uint i=0;i<=total;i++) 
     {
      if(m_ticket.SelectByIndex(i))
        {
         if(m_ticket.Magic()==Mg)
           {
            alprof+=(m_ticket.Profit()+m_ticket.Swap()+m_ticket.Commission());
            rez=alprof;
            if(rezult==1 && alprof!=0.00){rez=alprof/(AccountInfoDouble(ACCOUNT_BALANCE)-alprof)*100;}
            if(rezult==2){rez+=m_ticket.Volume();}      
           }
        }
     }
   return(NormalizeDouble(rez,2)); 
  }
кстати с количеством закрытых позиций тоже беда что бы узнать сколько от торговало 
 
TYRBO:

владимир добрый вечер ну подскажите еще пожалуста делаю функцию которая подсчитывает процент профит хочу подсчитать проторгованный обьем и не получается считает не правильно я так понимаю нужно выявить ордера с направлением out  и сних посчитать обьем 

Ничего не понятно - все буквы в куче.. Пропустите свой код через стилизатор кода.

 
TYRBO:

владимир добрый вечер ну подскажите еще пожалуста делаю функцию которая подсчитывает процент профит хочу подсчитать проторгованный обьем и не получается считает не правильно я так понимаю нужно выявить ордера с направлением out  и сних посчитать обьем 


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

Пожалуйста, вставляйте код правильно. Я Вам уже один раз исправил и вставил код правильно - зачем Вы снова вставляете не читаемую простыню букофф?

 
TYRBO:

владимир добрый вечер ну подскажите еще пожалуста делаю функцию которая подсчитывает процент профит хочу подсчитать проторгованный обьем и не получается считает не правильно я так понимаю нужно выявить ордера с направлением out  и сних посчитать обьем 

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

Вставил Ваш код правильно в третий раз. Интересно, сколько ещё попыток впереди? :)