Как спозиционировать график ?

 
Можно ли программно из скрипта спозиционировать график цены на определённую временную отметку?
 
Что-то никто не отвечает, может вопрос не понятен?
 
я отвечу - нельзя.
Если позволите, маленький совет: откройте в МетаЭдиторе список функций и просмотрите их. Сразу и станет понятно, что можно, а что - увы!
 
Можно ли программно из скрипта спозиционировать график цены на определённую временную отметку?

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


#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property show_inputs
extern int Nbar=200;
#include <WinUser32.mqh>

int start()
  {
int h=WindowHandle(Symbol(),NULL);
PostMessageA(h,WM_KEYDOWN,36,1);
PostMessageA(h,WM_KEYUP,36,1);


for (int i=0;i<Nbar;i++)PostMessageA(h,WM_KEYDOWN,123,1);
PostMessageA(h,WM_KEYUP,123,1);



   return(0);
  }





Я думаю логика понятна сначала програмно нажимаем в окне графика кнопку home, потом нажимаем F12 столько раз сколько нужно чтоб сдвинуть график. Вам остается перевожить время в количество баров, а ускорение можно сделать если сначала нажимать PageDown(пролистывает страницу) затем стрелочку в право (пролистывает помоему по 4 бара) и кнопкой f12 пройти последние 3 бара.

ЗЫ Через Шанхай, но зато в Лондон :)

 
А и правда! Джонни, молодец! Хоть и через ж..., а все-таки можно!
 
Jhonny гениально!!

ведь так же можно и символ и таймфрейм переключать!

а вот как таким образом сделать обновление значений индикаторов? (меню:графики:обновление)
 
Конечно можно обновить этим замудренным способом, надо просто нажать последовательность клавишь Alt, "U", потом несколько раз вниз, потом enter, но если я не ошибаюсь то есть стандартная функция для этого RefreshRates( );

PS А вообще этим методом можно написать небольшую библиотеку торговых функций чтоб обходить запрет ДЦ на торговлю экспертами, так как этот метод эмулирует ручную торговлю, во как.
 
Конечно можно обновить этим замудренным способом, надо просто нажать последовательность клавишь Alt, "U", потом несколько раз вниз, потом enter, но если я не ошибаюсь то есть стандартная функция для этого RefreshRates( );


RefreshRates разве вызывает start() всех индикаторов? интересно..... надо попробовать..

вообще "alt-u" только на русской раскладке работает, но это не важно... разберусь.

а как его передать? я под винды не програмил ни когда :(
(но вообще для оъектно-ориентированной среды писал, так что чуть соображаю.. )
 
вообще "alt-u" только на русской раскладке работает, но это не важно... разберусь.

Это типа быстрый метод можно по тупому раз 5 нажать стрелку в право тотже эфект будет.
а как его передать?

PostMessageA(h,WM_KEYDOWN,18,1); посылает сообщение окну с дескриптором h сообщение WM_KEYDOWN(нажата клавиша) с кодом 18(Alt), второй параметр передает разную информацию в зависимости от того какое знаечение примет, это надо смотреть MS SDK по API функциям, точно не помню.Здесь не надо нажимать комбинацию клавиш поэтому тут все просто можно обойтись простой последовательностью.
Коды клавиш можно тамже посмотреть(в поиске по справке введете Virtual-Key Codes).
 
ок, разберусь, спасибо!
Причина обращения: