Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
я ведь писал: "Вообще есть стд функция datetime WindowTimeOnDropped(), но странно - если привязать скрипт к сочетанию клавиш (я скрипты имено так вызываю), то вместо времени под курсором в момент вызова она вернёт ноль. Похоже на что её просто надо допилить."
Вообще когда вопросы задаёте по четвёрке, то лучше сразу это указывать - дамы не было путаницы.
я ведь писал: "Вообще есть стд функция datetime WindowTimeOnDropped(), но странно - если привязать скрипт к сочетанию клавиш (я скрипты имено так вызываю), то вместо времени под курсором в момент вызова она вернёт ноль. Похоже на что её просто надо допилить."
Вы читали в документации про WindowTimeOnDropped?
Возвращаемое значение
Значение времени в точке графика, на который был брошен эксперт или скрипт. Значение будет верным только в случае, если эксперт или скрипт перемещены с помощью мыши (технология "drag and drop").
Для пользовательских индикаторов это значение не определено.
В каком месте надо допиливать? Вы же в Вашем случае не используете технологию drag and drop
Вы читали в документации про WindowTimeOnDropped?
В каком месте надо допиливать? Вы же в Вашем случае не используете технологию drag and drop
Говорить можно много, пример:
#define HWND ulong
#else
#define HWND uint
#endif
#import "user32.dll"
int GetCursorPos(int &point[2]);
int GetWindowRect(HWND hWnd, int &rect[4]);
#import
bool cursor_time(datetime &time)
{
#define RIGHT_BORDER_WIDTH 45
int points[2], rect[4];
if( ! GetCursorPos(points) ||
! GetWindowRect((HWND)ChartGetInteger(0, CHART_WINDOW_HANDLE), rect) )
return false;
if(points[0] < rect[0] || points[0] > rect[2] - RIGHT_BORDER_WIDTH)
return false;
int bar = WindowFirstVisibleBar() - int(WindowBarsPerChart() *
double(points[0] - rect[0]) /
(rect[2] - RIGHT_BORDER_WIDTH - rect[0]));
if(bar < 0)
bar = 0;
time = Time[bar];
return true;
}
void OnStart()
{
datetime time;
if( ! cursor_time(time) )
return;
ObjectCreate(IntegerToString(GetTickCount()), OBJ_VLINE, 0, time, 0);
}
Назначить на скрипт какое-нибудь сочетание клавиш и оценить удобство по сравнению с альтернативным перетаскиванием скрипта на график.
Документацию и переписать можно )). А почему только лишь при драг и дроп? Нужно возвращать время по оси Х и тогда, когда перетаскивание не применяется, если курсор за границами графика, то да - вернуть ноль. Кроме перетаскивания можно ведь и задать скрипту сочетание клавиш, например альт Х, при их нажатии курсор может быть в пределах графика.
Назначить на скрипт какое-нибудь сочетание клавиш и оценить удобство по сравнению с альтернативным перетаскиванием скрипта на график.
если пишите для себя, то пусть так.
но лучше откажитесь от апи в пользу CHART_EVENT_MOUSE_MOVE