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

 
AUser:
Народ! Подскажите новичку в программировании, как работать с handle. Что это такое - некий файл в буфере? Как из него извлечь информацию, чтобы с ней работать?

Посмотрите:

Справочник MQL5 / Технические индикаторы

Справочник MQL5 / Доступ к таймсериям и индикаторам / CopyBuffer  

Если вкратце, то хендл - это некий указатель (ссылка) на созданную программой копию индикатора, предназначенный для использования в  функции CopyBuffer. 

Посмотрите также статьи для начинающих, там про это рассказано. 

 
AUser:

А как присвоить переменной значения текущей цены не подскажите?

Наверное проще со статьей познакомиться - "Переход с MQL4 на MQL5".

Да и в документацию не лишне по чаще заглядывать.

А это ответ на вопрос из примера для функции SymbolInfoDouble

double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
 

AUser:

И еще интересует, есть ли возможность загрузить в хендл индикатора его исторические данные?

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

Как минимум с этими функциями стоит познакомиться по ближе

CopyBuffer

Получает в массив данные указанного буфера от указанного индикатора

CopyRates

Получает в массив исторические данные структуры Rates для указанных символа и периода

CopyTime

Получает в массив исторические данные по времени открытия баров по соответствующим символу и периоду

CopyOpen

Получает в массив исторические данные по цене открытия баров по соответствующим символу и периоду

CopyHigh

Получает в массив исторические данные по максимальной цене баров по соответствующим символу и периоду

CopyLow

Получает в массив исторические данные по минимальной цене баров по соответствующим символу и периоду

CopyClose

Получает в массив исторические данные по цене закрытия баров по соответствующим символу и периоду

 

AUser:

А вот с историей индикатора не все ясно. Проблема то вот в чем: прежде чем сравнивать значения индикаторов на барах их же надо накопить в массивах индикаторов. Ну ладно - значения с 15минутных баров можно и подождать, а как быть, скажем, с недельными? Полистал справочник - не понял))) Вот эта допустим: CopyClose (Получает в массив исторические данные по цене закрытия баров по соответствующим символу и периоду) Данные-то получим, а как заставить посчитать по ним значения индикатора? Чего-то я тут недопонимаю.


Я так понимаю Вы пишете эксперт использующий индикаторы?

Если хендл получен и явных проблем нет, то получение данных из кастомного (пользовательского) индюка выполняется при помощи CopyBuffer, для стандартных технических индикаторов лучше применять следующие функции

Данный код должен записать в массив buffer данные по 20 барам из 0 буфера, при этом вернуть количество реально скопированных элементов массива либо -1

int Res = CopyBuffer(MyHandle,0,0,20,buffer[]);

При этом отсчет 20 баров производится от 0 бара, следовательно нам не следует забывать о серийности (подробно читаем тут). О получении дополнительных данных можно прочитать тут.

 
AUser:
Ругается.. что не так

опубликуйте здесь справку по функции OrderSend

 
AUser:
Там так написано, что без подготовки понять сложно)

опубликуйте здесь справку по функции OrderSend

я только надеюсь вас заставить читать.  Иначе ничего не сможете делать.

 

AUser, - Sergeev прав. У функции OrderSend  всего два параметра. Нужно потратить немножко времени на изучение матчасти MQL5.

 
AUser:

Написал:

OrderSend(TRADE_ACTION_DEAL,Symbol(),1,SL,TP,10,ORDER_TYPE_BUY,ORDER_FILLING_CANCEL);

Ругается.. что не так?

Хочу купить по настоящей цене.

1. Хочется получить более подробный код этого участка или работающий пример;

2. Хочется сразу определиться с языком на котором этот код реализован;

3. Хочется чтобы люди научились читать справку, в данном случае прочитали описание функции OrderSend.

В данном случае вполне хватит вот этого фрагмента!!!

Функция OrderSend() предназначена для совершения торговых операций через отправку запросов на торговый сервер

bool  OrderSend(
   MqlTradeRequest&  request,  // структура запроса
   MqlTradeResult&   result        // структура ответа
   );

4. Хочется чтобы люди побольше узнали о структурах MqlTradeRequest и MqlTradeResult

5. Хочется чтобы хоть кто-то познакомился с такой замечательной вещью как CTrade (начинка данного класса расположена в файле \MQL5\Include\Trade\Trade.mqh)

Пример применения в эксперте можно посмотреть в стандартном эксперте - MACD Sample.

Скажу даже больше, хорошо бы ознакомиться с тем что происходит с приказом начиная от класса CSampleExpert до следующего функционала коасса CTrade:

а) PositionOpen -  Открывает позицию с заданными параметрами

б) PositionModify - Изменяет параметры позиции по указанному символу

б) PositionClose - Закрывает позицию по указанному символу.

PS

В заключении, хочется чтобы люди не только читали справку но умели искать информацию в файлах стандартной библиотеки (неплохо будет познакомиться с комбинацией клавиш Ctrl+Shift+F) и в примерах находящихся на данном сайте (Code Base - сильная штука, если уметь ей пользоваться).

 

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

Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 

Вопрос про структуру MqlTradeResult. Не обнаружил в ней поле time - время успешной базовой проверки запроса (или что-нибудь в этом роде) Кто-нибудь помнит, поднимался ли вопрос о введении дополнительного поля time в структуру MqlTradeResult? Потребовалось для выуживания отложенного ордера, если он вдруг уйдёт в историю.

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