Изучаем и пишем вместе на MQL5 - страница 31

 
Urain:

А инициализировать Пушкин будет?

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

Меня же интересует его базовое значение, например значение double равно нулю, bool вроде 1, а тут что?

Пример с даблом:

double Statys;

void OnTick()
{
if (Statys == 0)
{OpenBuy();}

}

И вроде работает))


Точно, не обнуляеццо)) А я их там никогда не инициализировал)


 
AUser:

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

Меня же интересует его базовое значение, например значение double равно нулю, bool вроде 1, а тут что?


Точно, не обнуляеццо)) А я их там никогда не инициализировал)

В разделе Инициализация переменных справки по MQL5 явно сказано:

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

Вам просто везет до поры до времени, но в какой-то прекрасный день не повезет и Вы будет мучительно долго искать ошибку в коде, не подозревая, что дьявол прячется в мелочах. Не нужно полагаться на то, что "мне повезет".
 
Rosh:

В разделе Инициализация переменных справки по MQL5 явно сказано:

Вам просто везет до поры до времени, но в какой-то прекрасный день не повезет и Вы будет мучительно долго искать ошибку в коде, не подозревая, что дьявол прячется в мелочах. Не нужно полагаться на то, что "мне повезет".
Точняк, спасибо)) Сча все допишу как надо))
 

Пишу простую функцию для проверки направления индексации  в массиве. Сами массивы берутся из OnCalculate(), т.е. имеют разные типы (double, datetime и т.д.). В справочнике есть примеры терминальных функций, которые при обработке массивов различных типов используют заголовок типа f(void &array[]). Но компилятор ругается на использование типа void в пользовательской функции. Имеется ли какой-нибудь универсальный способ указать компилятору, что для пользовательской функции тип массива-параметра не важен?

 

Хотелось бы уточнить Структура результата торгового запроса (MqlTradeResult)

double price; // Цена в сделке, подтверждённая брокером

Не возвращает цену отложенного ордера? Спец написал такой код:

double Statys = 0;
void OnTick()
{
if (Statys == 0)
{OpenBuy();}
}

                              void OpenBuy()
                              {
                              MqlTradeRequest o; MqlTradeResult p;
                              double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
              
                              o.action = TRADE_ACTION_PENDING;
                              o.symbol = _Symbol;
                              o.volume = 1;
                              o.price = 82.000;
                              o.sl = 81.800;
                              o.tp = 82.200;
                              o.type = ORDER_TYPE_BUY_STOP;
                              o.type_filling = ORDER_FILLING_AON;
                              o.type_time = ORDER_TIME_GTC;
                              OrderSend(o,p);     
                              Statys = p.price;
                              }


Судя по тому, что открыто много сделок рискну предположить, что ответ price = 0. Это както вроде странно.. хотя..


Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - Документация по MQL5
 
Yedelkin:

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

Делаете перегрузку функции на разные типы данных в массиве.
Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Основы языка / Функции / Перегрузка функций - Документация по MQL5
 
AUser:

Хотелось бы уточнить Структура результата торгового запроса (MqlTradeResult)

double price; // Цена в сделке, подтверждённая брокером

Не возвращает цену отложенного ордера? Спец написал такой код:


Судя по тому, что открыто много сделок рискну предположить, что ответ price = 0. Это както вроде странно.. хотя..


Отложенный ордер не означает совершение сделки. Посмотрите справку по структуре MqlTradeResult:

Описание полей

Поле

Описание

retcode

Код возврата торгового сервера

deal

Тикет сделки, если она совершена. Сообщается при торговой операции TRADE_ACTION_DEAL

order

Тикет ордера, если он выставлен. Сообщается при торговой операции TRADE_ACTION_PENDING

volume

Объем сделки, подтверждённый брокером. Зависит от типа ордера по исполнению

price

Цена в сделке, подтверждённая брокером. Зависит от поля deviation в торговом запросе и/или от типа торговой операции

bid

Текущая рыночная цена предложения (цены реквоты)

ask

Текущая рыночная цена спроса (цены реквоты)

comment

Комментарий брокера к операции (по умолчанию заполняется расшифровкой)

Кроме  того, вставляйте код правильно, пожалуйста.
 
Так, стоп. Строки тоже инициализировать обязательно??? Это же не атомарный тип.
 
Rosh:

Отложенный ордер не означает совершение сделки. Посмотрите справку по структуре MqlTradeResult:

Кроме  того, вставляйте код правильно, пожалуйста.
Понял)
 
TheXpert:
Так, стоп. Строки тоже инициализировать обязательно??? Это же не атомарный тип.
Не нужно полагаться на инициализацию по умолчанию. Никогда.
Причина обращения: