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

 
Ivan Butko #:
Как работает кнопка? 

Смотрю код в справочнике и не пойму, где место, куда писать действие. Вот, нажимаем кнопку на графике и что-то происходит. 

Правильно я понимаю, условие действия нужно писать так: если состояние кнопки "нажата " (true), то делать то-то?
То есть, получить значение свойства
  if(ObjectGetInteger(0,"Button_0",OBJPROP_STATE)==true)                                // проверяешь состояние кнопки, если нажата - функция выполняется
   if(sparam=="Button_0")
      {
      ObjectSetInteger(0,"Button_0",OBJPROP_STATE,false);
      }
 
Почему, в mq5, не удается нормализовать цены, с помощью
NormalizeDouble(Ask, Digits)
при торговле акциями? Можете дать пример без применения SymbolInfo.mqh. У меня используются куски кода mq4, а SymbolInfo.mqh конфликтует с mq4.
 
Tretyakov Rostyslav #:

Спасибо 

 

Подскажите, возможно ли такое: у меня прописан код закрытия ордера по условию 

  res = (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY && TimeCurrent() - OrderOpenTime()== Expiration*60);

              if (res)

           {

                 // то пробуем закрыть ордер 

                  if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))

                    { // иначе выводим в журнал регистрации сообщение об ошибке

                     Print("Ошибка закрытия ордера на покупку, ticket = " + DoubleToStr(OrderTicket()));


Но терминал сам закрывает его по истечении времени экспирации?  Или я фантазирую? Дело в том, что на тестере закрытие открабатывает, есть в журнале  сообщение о закрытии ордера, а на демо-счете есть информация в логах об открытии, но о закрытии информации нет. Но в истории счета ордер прописан с результатом?

 
sportoman #:

Подскажите, возможно ли такое: у меня прописан код закрытия ордера по условию 

  res = (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY && TimeCurrent() - OrderOpenTime()== Expiration*60);

              if (res)

           {

                 // то пробуем закрыть ордер 

                  if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))

                    { // иначе выводим в журнал регистрации сообщение об ошибке

                     Print("Ошибка закрытия ордера на покупку, ticket = " + DoubleToStr(OrderTicket()));


Но терминал сам закрывает его по истечении времени экспирации?  Или я фантазирую? Дело в том, что на тестере закрытие открабатывает, есть в журнале  сообщение о закрытии ордера, а на демо-счете есть информация в логах об открытии, но о закрытии информации нет. Но в истории счета ордер прописан с результатом?

А что прописано в expiration при открытии?
 
Tretyakov Rostyslav #:
А что прописано в expiration при открытии?

Макар, а может лучше сначала поинтересоваться о чём речь? С одной стороны, говорит об экспирации, — вроде-бы должно быть отложенный ордер. С другой стороны — OrderClose()… получается, что вовсе не отложенный, а действующий… И о чём получается вопрос?

 
Alexey Viktorov #:

Макар, а может лучше сначала поинтересоваться о чём речь? С одной стороны, говорит об экспирации, — вроде-бы должно быть отложенный ордер. С другой стороны — OrderClose()… получается, что вовсе не отложенный, а действующий… И о чём получается вопрос?

Я видел код сова, поэтому спрашиваю.
 
Tretyakov Rostyslav #:
Я видел код сова, поэтому спрашиваю.

Так если там отложенные ордера почему дальше в коде не удаление отложенного, а закрытие действующего?

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

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

sportoman, 2022.12.01 18:32

Подскажите, возможно ли такое: у меня прописан код закрытия ордера по условию 

  res = (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY && TimeCurrent() - OrderOpenTime()== Expiration*60);

              if (res)

           {

                 // то пробуем закрыть ордер 

                  if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))

                    { // иначе выводим в журнал регистрации сообщение об ошибке

                     Print("Ошибка закрытия ордера на покупку, ticket = " + DoubleToStr(OrderTicket()));


Но терминал сам закрывает его по истечении времени экспирации?  Или я фантазирую? Дело в том, что на тестере закрытие открабатывает, есть в журнале  сообщение о закрытии ордера, а на демо-счете есть информация в логах об открытии, но о закрытии информации нет. Но в истории счета ордер прописан с результатом?


 
Tretyakov Rostyslav #:
А что прописано в expiration при открытии?
Забыл написать, что речь про БО. Я так понимаю, что в таком случае ордер закрывается принудительно по истечении экспирации? Я прав?
 
Alexey Viktorov #:

Так если там отложенные ордера почему дальше в коде не удаление отложенного, а закрытие действующего?


res = (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY && TimeCurrent() - OrderOpenTime()== Expiration*60);