Страница 1 из 1

Что за ошибка в коде?

Добавлено: Вс ноя 28, 2010 2:18 pm
Alexey
Здравствуйте.
Подскажите, пожалуйста, что не устроило Lazarus в коде индикатора на этой картинке и как исправить.
Спасибо.

Добавлено: Вс ноя 28, 2010 2:19 pm
Alexey
Вот этот код:



library TimeToTrade;
//
uses
// Use index buffer
graphics, IndicatorInterfaceUnit;
//
var
// Outside parameters
sh: integer;
sm: integer;
eh: integer;
em: integer;
//
// Index buffers and variables
StartTime: TIndexBuffer;
EndTime: TIndexBuffer;
RestTime: TIndexBuffer;
//
//------------------------------
// Inicialisation
//------------------------------
procedure Init; stdcall;
begin
// Назначение параметров
IndicatorShortName('Time');
SetOutputWindow(ow_ChartWindow);
// зарегистрировать внешние параметры
AddSeparator('Start');
RegOption('StartHour', ot_Integer, sh);
RegOption('StartMin', ot_Integer, sh);
AddSeparator('End');
RegOption('EndHour', ot_Integer, eh);
RegOption('EndMin', ot_Integer, em);
SetOptionRange('StartHour', 0,24);
SetOptionRange('StartMin', 0,60);
SetOptionRange('EndHour', 0,24);
SetOptionRange('EndMin', 0,60);
sh:=6;
sm:=5;
eh:=17;
eh:=5;
//
// Making index buffer
IndicatorBuffers(3);
StartTime:= CreateIndexBuffer;
EndTime:= CreateIndexBuffer;
RestTime:= CreateIndexBuffer;
SetIndexBuffer(1,StartTime);
SetIndexBuffer(2,EndTime);
SetIndexBuffer(3,RestTime);
SetIndexStyle(1,0,psSolid,1,Red);
SetIndexStyle(2,0,psSolid,1,Green);
SetIndexStyle(3,0,psSolid,1,Grey);
end;
//
//-----------------------------
// Last bar count
//----------------------------
procedure Calculate(index: integer); stdcall;
var
i: integer;
begin
for i:=0 to index do
begin
if Hour(Time(0))=sh and Minute(Time(0))=sm then StartTime:=1; else StartTime:=0;
if Hour(Time(0))=eh and Minute(Time(0))=em then EndTime:=1; else EndTime:=0;
if (Hour(Time(0))<=sh and Minute(Time(0))<sm) or (Hour(Time(0))>=eh and Minute(Time(0))>em) then RestTime:=1; else RestTime:=0;
end;
//
exports
// Outside procedures
Init, Done, Calculate;
end.

Добавлено: Пн ноя 29, 2010 9:16 am
FT Support
Здравствуйте, Алексей,

Проект какого типа Вы создали в лазарусе? Тип проекта должен быть "библиотека функций (Library)", а у Вас похоже "Application".
Мы рекомендуем посмотреть вот это обучающее видео:
http://www.youtube.com/watch?v=kL7z8kG7WCw
здесь показано как скомпилировать индикатор с помощью лазаруса.

Добавлено: Пн ноя 29, 2010 11:35 am
Alexey
Спасибо.

Добавлено: Пн ноя 29, 2010 3:13 pm
Alexey
Спасибо, уважаемый FT Support, тип проекта я изменил. Но появились новые ошибки - прокомментируйте, пожалуйста. Картиночку прилагаю. Сразу скажу, что, в частности, способ записи функции определения часа (по аналогии сделал - минут) я увидел в хелпе Доступ к массивам данных, оператор Time.

Хочу сразу извиниться за то, что буду кидать все вопросы по ошибкам в связи с этим индикатором в эту ветку, пока индикатор не заработает. Просто этот индикатор всем нам, кто использует режим ручного теста, сэкономил бы кучу времени на отслеживании самого Времени рабочего дня. Мы же все купили это ПО только в расчете экономить время, а сделать это не можем из-за не очень удобной шкалы и сложной системы создания индиктаоров. Хотя, в остальном программа очень хороша.

Понимаю, что этими вопросами об ошибках мы отнимем наоборот у Вас раз в 50-100 больше времени, чем если бы Вы просто согласились проверить код и скомпиллировать. Но Вы уже отвечали, что авторам проверить нужный всем индикатор трудноемко, и что Время поставлено в Очередь. :D Мы все взрослые люди, понимаем, что где очередь - там Вечность, даже если в очереди стоит Время. Поэтому и вынуждены задавать вопросы и изучать средства, не имеющие прямого отношения к бизнесу. Очень неудобно тратить Ваше время в таком объеме, но вариантов нет.

Спасибо еще раз за любую помощь, которая позволит решить задачу без дополнительных платежей третьим очень уважаемым лицам.