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

 
Marco Nicholas #:
Здравствуйте. Можете подсказать как правильно реализовать в коде такое условие.

Нужно открывать первую позицию после указанного в настройках времени (час, минута,  пример "открыть первую сделку после 23-55") и дальше не обращать внимание на это условие. 

Такой код отлично работает, но абсолютно все  сделки открывает после "one_time_current.hour" и "one_time_open.min" , а нужно только один раз выполнить это условие (для открытия 1 позиции), а для последующих его не применять.

Здравствуйте, Марко! Вы просили помочь сделать так, чтобы открывалась одна позиция. Теперь Вы пишите, что:

Спасибо, немного не то. Такой код не дает открыть много позиции. Без него открывает намного больше.

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

С уважением, Владимир.

 
Marco Nicholas #:
Здравствуйте. Можете подсказать как правильно реализовать в коде такое условие.

Нужно открывать первую позицию после указанного в настройках времени (час, минута,  пример "открыть первую сделку после 23-55") и дальше не обращать внимание на это условие. 

Такой код отлично работает, но абсолютно все  сделки открывает после "one_time_current.hour" и "one_time_open.min" , а нужно только один раз выполнить это условие (для открытия 1 позиции), а для последующих его не применять.

Значит для последующих должно быть другое условие, но не игнорируя условие «после 23:55», так я понимаю?

 
MrBrooklin #:

Здравствуйте, Марко! Вы просили помочь сделать так, чтобы открывалась одна позиция. Теперь Вы пишите, что:

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

С уважением, Владимир.

Да, именно так, мы неправильно поняли друг друга. Когда я написал:  

"Такой код отлично работает, но абсолютно все  сделки открывает после "one_time_current.hour" и "one_time_open.min" , а нужно только один раз выполнить это условие (для открытия 1 позиции), а для последующих его не применять." 

Хотел уточнить это, не для открытия одной позиции " 1 позиции" (Вы наверное именно так поняли), имел ввиду применить условие для открытия только первой позиции, а для последующих не применять.

Спасибо, что откликнулись.

 
Alexey Viktorov #:

Значит для последующих должно быть другое условие, но не игнорируя условие «после 23:55», так я понимаю?

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

Возможно все в одном условие это сделать?

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
 
Marco Nicholas #:

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

Возможно все в одном условие это сделать?

  bool first_position_was_opened=false;
  ...
  if(first_position_was_opened || ( one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min))

And don't forget to set "first_position_was_opened=true" after opening any position.

The "first_position_was_opened" variable must be global or static.
 
Помогите пожалуйста!!!
Нужна функция рассчитывающая прибыль за последнюю неделю по конкретному символу и магику.
Без магика примеры нашел, но прикрутить магик не получается(((
 
JRandomTrader #:

And don't forget to set "first_position_was_opened=true" after opening any position.

The "first_position_was_opened" variable must be global or static.

Спасибо. Интересный рабочий вариант.

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

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
if(item_positions==0) для первой


if(item_positions>0) для последующих

Благодаря вашим ответам изучение mql5 происходит намного быстрее.
 

Или можно в коде от @JRandomTrader вместо переменной first_position_was_opened использовать PositionsTotal():

if(PositionsTotal() > 0 || (one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)) {}

В этом случае эта переменная не нужна и не нужно будет эту переменную устанавливать в True после открытия и в False после закрытия всех позиций.

 

Добрый день. Я тестирую советник, и когда я отлаживаю его на исторических данных, все идет так, как ожидалось. Сделки инициируются и закрываются, как положено, и советник, похоже, работает правильно.
Однако, когда я включаю этот же советник для "торговли" на демо-счете, он просто не отправляет ордера, оставаясь абсолютно инертным.
Другими словами, я могу проводить бэктесты на основе этого советника, в том числе следить за ним на графике во время отладки, но по какой-то причине он не отправляет ордера на рынок в реальном времени (демо-счет).

Тестируемый актив - WINM22.


В "дневнике" МТ5 появляются следующие сообщения:
- эксперт успешно загружен
- автоматическая торговля включена

И больше ничего. Ни одного сообщения об ошибке за всю торговую сессию.

Может ли кто-нибудь помочь мне понять, что происходит?



Команды, которые я использую для отправки ордеров, следующие:
mrequest.action = TRADE_ACTION_DEAL;
mrequest.price = NormalizeDouble(last_price,1);
mrequest.sl = NormalizeDouble(last_price + STP,1);
mrequest.tp = NormalizeDouble(last_price - TKP,1);
mrequest.symbol= _Symbol;
mrequest.volume = Lot;
mrequest.magic = EA_Magic; 
mrequest.type= ORDER_TYPE_SELL;
mrequest.type_filling = ORDER_FILLING_FOK;
mrequest.deviation=NormalizeDouble(slippage,_Digits);
OrderSend( mrequest , mresult );

Спасибо.

 

Здравствуйте, хочу поинтересоваться.. можно ли на MT4/5 написать советник, чтобы он при заключении сделки опирался не только на вшитые в MT индикаторы, но и на данные из вне (например с моего сервера)?

И еще один вопрос: может ли советник руководствоваться индикаторами не только к привязанному к нему инструменту, но и к другим (образно говоря советник на валютной паре EURUSD руководствуется индикатором с DXY)?

Причина обращения: