Вопросы от "чайника" - страница 20

 

Приветствую всех. 

Вопрос - хочу использовать в советнике методы класса CTrade. Какие команды нужно прописать в коде для этого?

Много экперементировал с #include, #import... Пока ничего не выходит :( 

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 
axmed0207:

Приветствую всех. 

Вопрос - хочу использовать в советнике методы класса CTrade. Какие команды нужно прописать в коде для этого?

Много экперементировал с #include, #import... Пока ничего не выходит :( 


Пример эксперта "MACD Sample" Вам в помощь.

Подключаем модуль так

#include <Trade\Trade.mqh>

объявляем переменную одним из двух вариантов (в зависимости от алгоритма и необходимости применения определенных особенностей реализации)

Можно как самостоятельный объект, а можно как составную часть основного класса.

1. CTrade m_trade;  // trading object (автоматически создается и удаляется)
2. CTrade *m_trade; // trading object (указатель на динамический объект, требуется инициализация и деинициализация. В противном случая будут проблемы)

Пример закрытия позиции (подробно в коде)

m_trade.PositionClose(Symbol())

Пример модификации позиции (подробно в коде)

m_trade.PositionModify(Symbol(),sl,tp)

PS

Можно также подробно изучить начинку класса CExpert.

 
Огромное спасибо за исчерпывающий ответ :)
 
2011.07.15 13:30:35 2011.07.08 00:00:01   Infinite Sleep loop detected while testing.
Что это значит?
 
dentraf:
2011.07.15 13:30:35 2011.07.08 00:00:01   Infinite Sleep loop detected while testing.
Что это значит?

Теоретически это повод для дисквалификации участника чемпионата (как минимум проблемы при автоматическом тестировании эксперта), а по сути неправильная работа со sleep().

Советую поподробней изучить эту стать (возможно и другие).

Что качается заданного вопроса то вот цитата из статьи:

Функция Sleep() в тестере

Функция Sleep() позволяет в эксперте или скрипте приостановить выполнение mql5-программы на некоторое время при работе на графике. Это может понадобиться при запросе каких-либо данных, которые в момент запроса еще не готовы и необходимо дождаться момента их готовности. Подробный пример использования функции Sleep() можно посмотреть в разделе Организация доступа к данным.

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

Если в результате выполнения функции Sleep() текущее время в тестере вышло за  конец периода тестирования, то  будет получена ошибка "бесконечный цикл в Sleep". При получение такой ошибки результаты тестирования не отбрасываются,  все вычисления производятся в полном объеме (количество сделок, просадка и т.д.) и результаты данного тестирования передаются терминалу.

Функция Sleep() не будет работать в OnDeinit(), так как после ее вызова тестерное время гарантированно окажется за пределами интервала тестирования.

 

Товарищи!

Собираюсь дописать анализ истории в эксперт. Подскажите, как организовать вывод данных?

Ну скажем максимально длинный бар за год истории. Как получить значение понятно, а куда выводить? Удобнее было бы прямо на график, это возможно? Или функцией Print в журнал, но что-то не соображу, как это дело будет работать? Постоянно будет перепечатывать значения? Надо там что-ли какое условие хитрое для печати задать? В общем что посоветуете?

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

Товарищи!

Собираюсь дописать анализ истории в эксперт. Подскажите, как организовать вывод данных?

Ну скажем максимально длинный бар за год истории. Как получить значение понятно, а куда выводить? Удобнее было бы прямо на график, это возможно? Или функцией Print в журнал, но что-то не соображу, как это дело будет работать? Постоянно будет перепечатывать значения? Надо там что-ли какое условие хитрое для печати задать? В общем что посоветуете?


Попробуйте воспользоваться функцией Comment(). Она размещает текст в верхнем левом углу графика.

В ней также можно использовать символ "\n" для перехода на следующую строку. К сожалению, "\t" не работает.

 
voix_kas:

Попробуйте воспользоваться функцией Comment(). Она размещает текст в верхнем левом углу графика.

В ней также можно использовать символ "\n" для перехода на следующую строку. К сожалению, "\t" не работает.

Самое оно, спасибо)
 

Не подскажите, сколько данных можно запихать в один массив? Массив структуры MqlRates, собираюсь запихать всю историю часовых баров с 2009го года, влезет?

п.с. Еще чего-то с тестером стратегий, по выходным не работает из за недоступности сервера или у меня чего сглюкнуло? В пятницу вроде работало как надо))

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

1. Вроде как всю. Если и есть ограничения, то на уровне пороговых значений int или long. Столько оперативки в компе нет. =)

2. Более точнее опишите проблему с неработоспособностью тестера. Коды ошибок, скрины...

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений - Документация по MQL5