Там же ясно написано, что в 553 строке возможно использование переменной, у которой отсутствует значение. Попробуйте написать bool pr=false; Этим Вы обманете компилятор, но лучше все как следует проверить. Ведь если тип ордера будет отложка, то pr останется у Вас без значения...
Просто вопрос задан в теме о языке mql4 и сразу бросилось в глаза Time[0]
Посмотрев повнимательней стало понятно, что это пользовательский массив.
И примечание из документации:
Примечание
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.
Так как объект в одной координате цены может иметь несколько значений, то необходимо указать номер линии. Эта функция применима только для следующих объектов:
Трендовая линия (OBJ_TREND)
Трендовая линия по углу (OBJ_TRENDBYANGLE)
Линия Ганна (OBJ_GANNLINE)
Равноудаленный канал (OBJ_CHANNEL) - 2 линии
Канал на линейной регрессии (OBJ_REGRESSION) - 3 линии
Канал стандартного отклонения (OBJ_STDDEVCHANNEL) - 3 линии
Там же ясно написано, что в 553 строке возможно использование переменной, у которой отсутствует значение. Попробуйте написать bool pr=false; Этим Вы обманете компилятор, но лучше все как следует проверить. Ведь если тип ордера будет отложка, то pr останется у Вас без значения...
спасибо что напомнили мне про отложки)
вот так правильно делать?
void zakritj_vse_sdelki()
{
bool pr;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
pr=false;
if (OrderType()==OP_BUY) pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );
if (OrderType()==OP_SELL) pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
}
}
}
написал вот такой вот код
метаэдитор матюкается.
почему он матюкается?
стоит #property strict
А у вас pr инициализирована?
написал вот такой вот код
метаэдитор матюкается.
почему он матюкается?
стоит #property strict
Там же ясно написано, что в 553 строке возможно использование переменной, у которой отсутствует значение. Попробуйте написать bool pr=false; Этим Вы обманете компилятор, но лучше все как следует проверить. Ведь если тип ордера будет отложка, то pr останется у Вас без значения...
на предыдущей, и что тут от mql4? функция OnTick()?
Просто вопрос задан в теме о языке mql4 и сразу бросилось в глаза Time[0]
Посмотрев повнимательней стало понятно, что это пользовательский массив.
И примечание из документации:
Примечание
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.
Так как объект в одной координате цены может иметь несколько значений, то необходимо указать номер линии. Эта функция применима только для следующих объектов:
А у вас pr инициализирована?
я думал, что при объявлении она инициилизируется нулем.
Там же ясно написано, что в 553 строке возможно использование переменной, у которой отсутствует значение. Попробуйте написать bool pr=false; Этим Вы обманете компилятор, но лучше все как следует проверить. Ведь если тип ордера будет отложка, то pr останется у Вас без значения...
спасибо что напомнили мне про отложки)
вот так правильно делать?
спасибо что напомнили мне про отложки)
вот так правильно делать?
if (pr==false) эквивалентно if (!pr)
if (pr==true) эквивалентно if (pr)
Вместо Print использую Alert - сразу появляется на экране без открытия журнала. И лишняя информация отсутствует
if (pr==false) эквивалентно if (!pr)
if (pr==true) эквивалентно if (pr)
Вместо Print использую Alert - сразу появляется на экране без открытия журнала. И лишняя информация отсутствует
OrderClosePrice() мы же получаем после закрытия сделки.
разве можно OrderClosePrice() так писать?
OrderClosePrice() мы же получаем после закрытия сделки.
Можно. Но осторожно. У открытой позиции он возвращает цену её закрытия. Соответственно: для Buy - Bid, для Sell - Ask