Вопрос на самом деле не тупой.
Просмотреть тот период времени, который выведен в Account History терминала - вопросов нет, без проблем. Но мне нужно в МТ4 из робота просматривать либо всю историю счета, либо указывать нужный период.
Тщательно пересмотрел все функции в ручном режиме. Увы. Нужное не нашел.
В том что это можно делать не сомневаюсь, в противном случае ни один сервис мониторинга счетов не смог бы выдавать инфу об истории предыдущей торговли. Вопрос только один: КАК?
только один вариант - сохранять историю в свою базу.
на самом деле несложно, открыл/закрыл ордер, записал результат в базу. А потом SELECT (openTime,closeTime,ticket,side,lots,profit) FROM orders WHERE openTime BETWEEN (.....)
только один вариант - сохранять историю в свою базу.
на самом деле несложно, открыл/закрыл ордер, записал результат в базу. А потом SELECT (openTime,closeTime,ticket,side,lots,profit) FROM orders WHERE openTime BETWEEN (.....)
А если история уже набрана достаточно большая и запись не делалась? И если это пишется не только для себя?
На чистом МТ4 выбрать период истории невозможно. Только просить пользователя сделать.
Но можно при помощи WinAPI:
#define WM_COMMAND int(0x0111) #define MENU_ALL_HISTORY_ID int(0x8122) #import "user32.dll" int GetParent(int hWnd); int SendMessageW(int hWnd, int msg, int wParam, int lParam); #import int g_hChart, g_hSymbol, g_hMDIClient, g_hMT; ... g_hChart = WindowHandle(Symbol(), Period()); if (g_hChart <= 0) { Alert(WindowExpertName(), ": не удалось получить дескриптор окна чарта. Эксперт отключен."); return false; } g_hSymbol = GetParent(g_hChart); if (g_hSymbol <= 0) { Alert(WindowExpertName(), ": не удалось получить дескриптор окна символа чарта. Эксперт отключен."); return false; } g_hMDIClient = GetParent(g_hSymbol); if (g_hMDIClient <= 0) { Alert(WindowExpertName(), ": не удалось получить дескриптор окна родителя всех открытых графиков. Эксперт отключен."); return false; } g_hMT = GetParent(g_hMDIClient); if (g_hMT <= 0) { Alert(WindowExpertName(), ": не удалось получить дескриптор главного окна терминала. Эксперт отключен."); return false; } ... SendMessageW(g_hMT, WM_COMMAND, MENU_ALL_HISTORY_ID, 0); ...
только один вариант - сохранять историю в свою базу.
на самом деле несложно, открыл/закрыл ордер, записал результат в базу. А потом SELECT (openTime,closeTime,ticket,side,lots,profit) FROM orders WHERE openTime BETWEEN (.....)
Увы, это не проходит. "Для себя" я могу еще проще - вывел всю историю, нажал кнопку, сов просчитал все что требуется. Но я то пишу "для народа". Не прикажешь же каждому открывать всю историю при запуске сова. Была бы функция, которой я из кода мог бы открывать в терминале всю историю при первом запуске сова - нет проблем. Но увы, нет такой функции.
На чистом МТ4 выбрать период истории невозможно. Только просить пользователя сделать.
Но можно при помощи WinAPI:
Спасибо за ответ и попытку помочь, но, увы, подгрузка .dll категорически запрещена дурацкими правилами Маркета, такой сов не опубликуют. Даже если пытаться подгружать абсолютно штатные .dll от самого Билла ;)
Так что вижу определенно - строку initial_deposit из меню убрать аж никак не получится. Да и много чего другого тоже не сделаешь, если нет возможности ковыряться в истории из кода. А жаль. Я то надеялся на то что авось чего не знаю, что-то недочитал...
Вопрос на самом деле не тупой.
Просмотреть тот период времени, который выведен в Account History терминала - вопросов нет, без проблем. Но мне нужно в МТ4 из робота просматривать либо всю историю счета, либо указывать нужный период.
Тщательно пересмотрел все функции в ручном режиме. Увы. Нужное не нашел.
В том что это можно делать не сомневаюсь, в противном случае ни один сервис мониторинга счетов не смог бы выдавать инфу об истории предыдущей торговли. Вопрос только один: КАК?
Тут по ходу, если рассуждать логически, то компания владеющая терминалом Вам не обязана регулировать Ваши отношения с брокером и по идее - им должно быть все по барабану, для них это чужее. Тут по ходу нужна функция обращение к брокеру, что бы можно было все это по счету с ним(брокером), согласовать. Так, обращения к брокеру функции есть(это я рассуждаю), только если предварительно с брокером оговаривать такого рода вопросы по телефону, что на запросы они будут отвечать и таким образом можно будет из советника такую штуковину сотворить, что будет отправлено сообщение по запросу, о счете, с чистым файлом, в который брокер пропишет информацию и которая считается советником, такие функции точно есть. Но такие манипуляции надо оговаривать с брокером, а то могут приписать ст УК РФ 158 ч 3 попытка кражи в особо крупных размерах и т.д. А так не знаю?!
Увы, это не проходит. "Для себя" я могу еще проще - вывел всю историю, нажал кнопку, сов просчитал все что требуется. Но я то пишу "для народа". Не прикажешь же каждому открывать всю историю при запуске сова. Была бы функция, которой я из кода мог бы открывать в терминале всю историю при первом запуске сова - нет проблем. Но увы, нет такой функции.
В таких случаях пишутся "Правила использования", в которых черным по белому прописывается требование к корректной работе советника: должна быть доступна вся история. В противном случае правильность работы алгоритма не гарантируется. Другого пути нет.
В таких случаях пишутся "Правила использования", в которых черным по белому прописывается требование к корректной работе советника: должна быть доступна вся история. В противном случае правильность работы алгоритма не гарантируется. Другого пути нет.
Да нет. Это того не стоит, там и так менюшка на 3 экрана и мануал к ней трехтомный ;). Просто останется в меню строка "Начальный депозит", в которую нужно вводить корректные данные. Можно и некорректные, можно вообще не вводить - на работе не скажется, но вывод статистики по счету будет искажен. Хотел сделать красиво, исключить "человеческий фактор". Не получается. Ну и фиг с ним. Кто захочет видеть корректные данные, тот будет вводить то что есть.
"Задачу по истории", которая на самом деле для работы нужна я решил давно (просчет текущего профита/убытка индивидуально по каждой паре. Нужно для работы Разруливателя). И это главное.
Всем спасибо.
На чистом МТ4 выбрать период истории невозможно. Только просить пользователя сделать.
Но можно при помощи WinAPI:
На чистом МТ4 выбрать период истории невозможно. Только просить пользователя сделать.
Но можно при помощи WinAPI:
День добрый . Подскажите пожалуйста почему в OnTimer() не отображает всю историю при таком коде ?
При вставке в OnTick() все работает .
if(TotalHistOrders != OrdersHistoryTotal()) { SendMessageW(g_hMT, WM_COMMAND, MENU_ALL_HISTORY_ID, 0); // Print("TotalHistOrders = ",TotalHistOrders, " OrdersHistoryTotal() = ",OrdersHistoryTotal()); TotalHistOrders = OrdersHistoryTotal(); // Print("/////TotalHistOrders = ",TotalHistOrders, " OrdersHistoryTotal() = ",OrdersHistoryTotal()); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Просмотреть тот период времени, который выведен в Account History терминала - вопросов нет, без проблем. Но мне нужно в МТ4 из робота просматривать либо всю историю счета, либо указывать нужный период.
Тщательно пересмотрел все функции в ручном режиме. Увы. Нужное не нашел.
В том что это можно делать не сомневаюсь, в противном случае ни один сервис мониторинга счетов не смог бы выдавать инфу об истории предыдущей торговли. Вопрос только один: КАК?