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

 

Помогите, пожалуйста. Что тут не так?

 double buy_OrderProfit = 0;
 double sell_OrderProfit = 0;
 double buy_Order_price  = 0;
 double sell_Order_price = 0;
 
  double Drop_proc1 =AccountEquity();
  double Drop_proc2 =AccountBalance();
  double Drop_proc3 =(Drop_proc1*100)/Drop_proc2;
  
  if (Drop_procK <= Drop_proc3)
  {
  for(int i=OrdersTotal()-1; i>=0; i--)
       if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
            if((OrderType()==OP_SELL) sell_OrderProfit + OrderProfit())
                 if((OrderType()==OP_BUY)  buy_OrderProfit + OrderProfit()) 

  for (int i=OrdersTotal()-1; i>=0; i--)
        if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
             if ((OrderType()==OP_BUY ) && ( buy_OrderProfit < sell_OrderProfit ) )     
                  OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
                    if ((OrderType()==OP_SELL) && sell_OrderProfit < buy_OrderProfit )
                         OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);  
        } 
   else 1=1;

 

ошибка 'if' - expressions are not allowed on a global scope v.4.1.5(2).mq4 793 3



 
new-rena:

Господа знатоки!

Как программно узнать при инициализации советника MQL4 - закрыт рынок или нет? (какой командой?)

Нет такой команды. Можно попытаться выставить дальний отложенный ордер, а потом удалить, если выставится.
 
Kisolen:

Помогите, пожалуйста. Что тут не так?

Условие if может быть только внутри какой-нибудь функции.
 
Sergei Vladimirov:
Условие if может быть только внутри какой-нибудь функции.
Спасибо, что откликнулись. Этот код находится внутри функции void OnTick(), внутри фигурных скобок. Он далеко наверху, извиняюсь , что не скопировал. Я все так понимаю? Это же функция? И ошибка все равно есть. 
 
Kisolen:
Спасибо, что откликнулись. Этот код находится внутри функции void OnTick(), внутри фигурных скобок. Он далеко наверху, извиняюсь , что не скопировал. Я все так понимаю? Это же функция? И ошибка все равно есть. 
Компилятор пишет, что if находится в глобальной области. Возможно, просто дисбаланс скобок, проверьте (немудрено, кстати, при таком стиле кода).
 
Vitaly Muzichenko:

Попробуйте эту, когда-то вроде работала, но ней не пользовался:

Ваш код - нерабочий, потому что текущее время определяется через TimeCurrent(), а она возвращает время последней котировки, и ваша функция будет всегда возвращать true. Можно сделать то же самое через TimeLocal(), учтя разность часовых поясов компьютера и сервера, но это не гарантирует правильный результат: и часы на компе могут идти неправильно, и дц может не заполнить на сервере время сессий, и в праздники (на Новый год) неизвестно, что будет возвращаться... А простой и надежной функции вроде MarketIsClosed() в мкл нет.
 
Sergei Vladimirov:
Нет такой команды. Можно попытаться выставить дальний отложенный ордер, а потом удалить, если выставится.

Да, хороший вариант. Команда вернет ошибку "Рынок закрыт"

Вопрос решен.

Спасибо!

 

День добрый, всем.

Подскажите пожалуйста в какой сторону копать, ну или если можно кусок кода для примера :)

Нужно следующее:

На график натянут эксперт и индикатор. Как с помощью эксперта изменить параметры индикатора?

Заранее спасибо за ответы. 

 
GrRusel:

День добрый, всем.

Подскажите пожалуйста в какой сторону копать, ну или если можно кусок кода для примера :)

Нужно следующее:

На график натянут эксперт и индикатор. Как с помощью эксперта изменить параметры индикатора?

Заранее спасибо за ответы. 

Визуально не измените настройки индикатора, но при считывания данных в эксперт через iCustom из индикатора, можете задавать параметры которые получает эксперт из данного индикатора. Ну или через глобальные переменные, если индикатор научить их использовать.
 
Vladimir Zubov:
Визуально не измените настройки индикатора, но при считывания данных в эксперт через iCustom из индикатора, можете задавать параметры которые получает эксперт из данного индикатора. Ну или через глобальные переменные, если индикатор научить их использовать.
через icustom я всё и делаю, но когда в эксперте меняю настройки для индикатора, хочется что бы и у индикатора они тоже менялись для визуализации - допустим поменял зоны OBOS. Может как нить удалять его с графика а потом заново добавлять но с новыми настройками, но делать всё это надо через эксперта. Неужели никто не сталкивался с такой проблемой и каждый раз меняют всё ручками - не может такого быть...