програмное отображение выбраного бара истории

 

На одном из форумов я видел код, который позволяет програмно отобразить позицию

требуемого бара истории.. К сожалению машина ушла в зависание и место затерялось..

В свое время идея отображения бара истории я сумел реализовать но этот метод через

перемещения от текущей точки в глубину истории посредством эмуляции нажатия клавиш PgUp и PgDn не сильно радует..

За предоставленный код буду очень благодарен..

 
forte928 >>:

На одном из форумов я видел код, который позволяет програмно отобразить позицию

требуемого бара истории.. К сожалению машина ушла в зависание и место затерялось..

В свое время идея отображения бара истории я сумел реализовать но этот метод через

перемещения от текущей точки в глубину истории посредством эмуляции нажатия клавиш PgUp и PgDn не сильно радует..

За предоставленный код буду очень благодарен..

Надо искать SendMesasge, где-то проскакивало.

Например, можно написать дату в окне быстрого перехода ('Фишка: отправка данных работающему эксперту'). Но было и более правильно решение.

 

Благодарю komposter

на основании https://www.mql5.com/ru/forum/112654 я сделал то что так

долго искал, подобное решение ввода строки..

//+------------------------------------------------------------------+
//|                                                     ShiftBar.mq4 |
//|                       |
//|                                         |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

#property show_inputs
//----Внешние параметры.---------------------------------------------
extern datetime    VisibleTime = D'05.12.2008 07:32';  // Отображаемая дата истории.
//----Включаемые файлы.----------------------------------------------
#import "user32.dll"
  int      GetDlgItem(int h, int controlID);
#import
#include 
#include 
//===================================================================
int start()
{
int Handle = WindowHandle (Symbol(), Period());
int hEdit;

datetime VisibleTime=D'05.12.2008 07:32';
int Visible=iBarShift(NULL,0,VisibleTime,false);
int Index=WindowFirstVisibleBar();
int BarCount=WindowBarsPerChart();
Alert("BarCount=",BarCount);
Alert("Index=",Index);

EnterCodeKey(Handle,VK_ENTER);Print("Enter");
hEdit = GetDlgItem(Handle, 0x45A);
if (hEdit>0){// нашли окошко// активно диалоговое окно ввода
SetWindowTextA(hEdit, TimeToStr(VisibleTime,TIME_DATE|TIME_MINUTES));
Print(TimeToStr(VisibleTime,TIME_DATE|TIME_MINUTES));
}
EnterCodeKey(hEdit,VK_ENTER);
return;
}
//+------------------------------------------------------------------+
void EnterCodeKey(int iHandle,int KeyCode)
{
PostMessageA (iHandle, WM_KEYDOWN, KeyCode, 1);
PostMessageA (iHandle, WM_KEYUP, KeyCode, 1); 
Sleep(100);
return;
}
//+------------------------------------------------------------------+
Причина обращения: