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

 
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)?

 
key_Ex #:

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

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

Да, всё описанное возможно сделать.

 
Aleksey Vyazmikin #:

Да, всё описанное возможно сделать.

Спасибо, изучил ссылки на ветки под моим комментарием и вроде нашел то что искал
 

int mov1=iMA(NULL,PERIOD_H4,200,0,MODE_EMA,PRICE_CLOSE);

выдает 10


ставлю на евродоллар, почему 10 такое не реально

 
Roman Epifanov #:

int mov1=iMA(NULL,PERIOD_H4,200,0,MODE_EMA,PRICE_CLOSE);

выдает 10


ставлю на евродоллар, почему 10 такое не реально

Возвращаемое значение

Возвращает хэндл указанного технического индикатора, в случае неудачи возвращает INVALID_HANDLE.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nauris Zukas #:

Возвращаемое значение

Возвращает хэндл указанного технического индикатора, в случае неудачи возвращает INVALID_HANDLE.

Ну он возвращает значение , только 10. такого быть не может

Тут ошибки вроде нет.. Я только начинаю программировать , помогите..пож

 
Roman Epifanov #:

Ну он возвращает значение , только 10. такого быть не может

Тут ошибки вроде нет.. Я только начинаю программировать , помогите..пож

10 - это именно хэндл, его значение. Это говорит о том, что индикатор успешно создан.

Чтобы прочитать от успешно созданного индикатора значения его буферов, нужно использовать CopyBuffer(), в котором указать полученный хэндл индикатора.

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