Вопрос по API

Индикаторы, написанные участниками форума. Делимся своими наработками.
Ответить
Сообщение
Автор
dimade
Сообщения: 1
Зарегистрирован: Пт окт 27, 2017 2:34 pm

Вопрос по API

#1 Сообщение dimade » Пт окт 27, 2017 3:00 pm

Здравствуйте!
Хочу написать свой индикатор и возникла такая ситуация:

Код: Выделить всё

EXPORT void __stdcall Calculate(int index) {
if (!ObjectExists(objName)) {
	  auto ok = ObjectCreate(objName, obj_Rectangle, 0, Time(10), Close(10), Time(0), Close(0));
}
else {
	 lastTime = Time(0);
	 ObjectSet(objName, OBJPROP_TIME2, lastTime);
}
Мне нужно, чтобы все прямоугольники расширялись для моей стратегии.
Но в вашем API есть недокументированная функция EXPORT void __stdcall OnPaint(int handle),
с помощью которой я хотел бы видеть обновление прямоугольников и, возможно, других вспомогательных объектов при их перемещении, изменении размеров. Для этого я сделал следующее:

Код: Выделить всё

EXPORT void __stdcall OnPaint(int handle) {
    if (ObjectExists(objName)) {
        ObjectSet(objName, OBJPROP_TIME2, lastTime);
        или даже
        ObjectGet(objName, OBJPROP_TIME2);
    }
}
При изменении размеров все нормально, но при перемещении прямоугольника обе цены (OBJPROP_PRICE1, OBJPROP_PRICE2) становятся равными 0.
Правильно ли использовать функции ObjectSet, ObjectGet и другие Object... в функции OnPaint()?
Видел что-то подобное в индикаторе TimeBox_FST для объекта obj_Text, но там объекты постоянно пересоздаются.

Ответить