Вопросы от "чайника" - страница 141

 
Yedelkin:

Похоже, проблема в другом.

Значение "3" - ну никак не возвращается :) Ведь в перечислениях нумерация идёт с нуля.

 

Используйте для вывода значений перечислений функцию EnumToString
 
В MQL5 значения периодов типа PERIOD_M1 ... PERIOD_MN1 - это значения целого типа? Хочу сравнивать их с помощью оператора switch. Напр. правильно ли выражение:
input ENUM_TIMEFRAMES Period_code=PERIOD_H4;
int result; string big;

switch (Period_code)
{
case PERIOD_H4: { result=1; big="data 1"; break; }
case PERIOD_D1: { result=2; big="data 2"; break; }
}
 

Rosh:

Yedelkin:

Похоже, проблема в другом.

Значение "3" - ну никак не возвращается :) Ведь в перечислениях нумерация идёт с нуля.

Используйте для вывода значений перечислений функцию EnumToString     

Странно то, что это предложение не прозвучало ранее, когда автор локального топика излагал свои результаты в виде "Возвращается 3". Хорошо, пойдём по непроторенному пути.

T-G:

Возвращается 3 - то есть получается SYMBOL_TRADE_EXECUTION_MARKET

 По совету Роша пишем простейшую проверку (используя EnumToString):

//+------------------------------------------------------------------+
//|                                                       class5.mq5 |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(3))=",EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(3)));
  }
//+------------------------------------------------------------------+

И что мы видим? - Видим то, что цифра "3" никак не соответствует SYMBOL_TRADE_EXECUTION_MARKET. Т.е. возвращаемся к https://www.mql5.com/ru/forum/3775/page143#comment_192116

 
Paladin80:
В MQL5 значения периодов типа PERIOD_M1 ... PERIOD_MN1 - это значения целого типа? Хочу сравнивать их с помощью оператора switch. Напр. правильно ли выражение:   
ENUM_TIMEFRAMES - это перечисление (Справочник MQL5 / Проверка состояния / Period). Перечисления - это целочисленный тип данных (Справочник MQL5 / Основы языка / Типы данных / Целые типы / Перечисления ).
 
Здравствуйте, подскажите функцию, как проверить, были сегодня закрыты Buy и Sell по определенному инструменту.
 
T-G:
Здравствуйте, подскажите функцию, как проверить, были сегодня закрыты Buy и Sell по определенному инструменту.   

Если никто не выложит готовый код, то попробуйте написать самостоятельно. Наверное, самый простой подход такой: выбираете за конкретный день историю сделок (HistorySelect) и перебором ищете в истории сделки, которые относятся к выбранному инструменту

DEAL_SYMBOL

Имя символа, по которой произведена сделка

string

затем проверяете

DEAL_TIME

Время совершения сделки

datetime

 и

DEAL_ENTRY_OUT

Выход из рынка

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

 
Yedelkin:

Странно то, что это предложение не прозвучало ранее, когда автор локального топика излагал свои результаты в виде "Возвращается 3". Хорошо, пойдём по непроторенному пути.

 По совету Роша пишем простейшую проверку (используя EnumToString):

//+------------------------------------------------------------------+
//|                                                       class5.mq5 |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(3))=",EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(3)));
  }
//+------------------------------------------------------------------+

И что мы видим? - Видим то, что цифра "3" никак не соответствует SYMBOL_TRADE_EXECUTION_MARKET. Т.е. возвращаемся к https://www.mql5.com/ru/forum/3775/page143#comment_192116

А если так? :)

Print("SYMBOL_TRADE_EXECUTION_MARKET=",SYMBOL_TRADE_EXECUTION_MARKET);
Print("EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(2))=",EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(2)));
T-G:

Возвращается 3 - то есть получается SYMBOL_TRADE_EXECUTION_MARKET

3 - SYMBOL_TRADE_EXECUTION_EXCHANGE по логике вещей.

Лучше бы сказали что и где пытаемся торговать... :)

 
Interesting:

А если так? :)

Print("SYMBOL_TRADE_EXECUTION_MARKET=",SYMBOL_TRADE_EXECUTION_MARKET);
Print("EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(2))=",EnumToString(ENUM_SYMBOL_TRADE_EXECUTION(2)));

Дык, то же самое. Только с другого ракурса. Ну никак  цифра "3" и значение перечисления "SYMBOL_TRADE_EXECUTION_MARKET" не связаны. Разве только что отношением предшествования.

Interesting:

3 - SYMBOL_TRADE_EXECUTION_EXCHANGE по логике вещей.

 Да не то, чтобы "по логике вещей", а именно так и есть на данный момент.

 
Yedelkin:

Дык, то же самое. Только с другого ракурса. Ну никак  цифра "3" и значение перечисления "SYMBOL_TRADE_EXECUTION_MARKET" не связаны. Разве только что отношением предшествования.

 Да не то, чтобы "по логике вещей", а именно так и есть на данный момент.

Ну так все логично, имеем биржевое исполнение (SYMBOL_TRADE_EXECUTION_EXCHANGE) и соответственно отсутствие TP/SL
 
Interesting:
Ну так все логично, имеем биржевое исполнение (SYMBOL_TRADE_EXECUTION_EXCHANGE) и соответственно отсутствие TP/SL  
Не могу сориентироваться, а где в Справочнике сказано, что при биржевом исполнении запрос не должен содержать TP/SL?