Здравствуйте.
Подскажите, пожалуйста, что не устроило Lazarus в коде индикатора на этой картинке и как исправить.
Спасибо.
Что за ошибка в коде?
-
- Сообщения: 41
- Зарегистрирован: Чт окт 14, 2010 8:25 am
Что за ошибка в коде?
- Вложения
-
- name errors.jpg
- (124.04 КБ) 2860 скачиваний
-
- Сообщения: 41
- Зарегистрирован: Чт окт 14, 2010 8:25 am
Вот этот код:
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.
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.
-
- Сообщения: 329
- Зарегистрирован: Сб июл 11, 2009 3:59 pm
Здравствуйте, Алексей,
Проект какого типа Вы создали в лазарусе? Тип проекта должен быть "библиотека функций (Library)", а у Вас похоже "Application".
Мы рекомендуем посмотреть вот это обучающее видео:
http://www.youtube.com/watch?v=kL7z8kG7WCw
здесь показано как скомпилировать индикатор с помощью лазаруса.
Проект какого типа Вы создали в лазарусе? Тип проекта должен быть "библиотека функций (Library)", а у Вас похоже "Application".
Мы рекомендуем посмотреть вот это обучающее видео:
http://www.youtube.com/watch?v=kL7z8kG7WCw
здесь показано как скомпилировать индикатор с помощью лазаруса.
-
- Сообщения: 41
- Зарегистрирован: Чт окт 14, 2010 8:25 am
Спасибо, уважаемый FT Support, тип проекта я изменил. Но появились новые ошибки - прокомментируйте, пожалуйста. Картиночку прилагаю. Сразу скажу, что, в частности, способ записи функции определения часа (по аналогии сделал - минут) я увидел в хелпе Доступ к массивам данных, оператор Time.
Хочу сразу извиниться за то, что буду кидать все вопросы по ошибкам в связи с этим индикатором в эту ветку, пока индикатор не заработает. Просто этот индикатор всем нам, кто использует режим ручного теста, сэкономил бы кучу времени на отслеживании самого Времени рабочего дня. Мы же все купили это ПО только в расчете экономить время, а сделать это не можем из-за не очень удобной шкалы и сложной системы создания индиктаоров. Хотя, в остальном программа очень хороша.
Понимаю, что этими вопросами об ошибках мы отнимем наоборот у Вас раз в 50-100 больше времени, чем если бы Вы просто согласились проверить код и скомпиллировать. Но Вы уже отвечали, что авторам проверить нужный всем индикатор трудноемко, и что Время поставлено в Очередь. Мы все взрослые люди, понимаем, что где очередь - там Вечность, даже если в очереди стоит Время. Поэтому и вынуждены задавать вопросы и изучать средства, не имеющие прямого отношения к бизнесу. Очень неудобно тратить Ваше время в таком объеме, но вариантов нет.
Спасибо еще раз за любую помощь, которая позволит решить задачу без дополнительных платежей третьим очень уважаемым лицам.
Хочу сразу извиниться за то, что буду кидать все вопросы по ошибкам в связи с этим индикатором в эту ветку, пока индикатор не заработает. Просто этот индикатор всем нам, кто использует режим ручного теста, сэкономил бы кучу времени на отслеживании самого Времени рабочего дня. Мы же все купили это ПО только в расчете экономить время, а сделать это не можем из-за не очень удобной шкалы и сложной системы создания индиктаоров. Хотя, в остальном программа очень хороша.
Понимаю, что этими вопросами об ошибках мы отнимем наоборот у Вас раз в 50-100 больше времени, чем если бы Вы просто согласились проверить код и скомпиллировать. Но Вы уже отвечали, что авторам проверить нужный всем индикатор трудноемко, и что Время поставлено в Очередь. Мы все взрослые люди, понимаем, что где очередь - там Вечность, даже если в очереди стоит Время. Поэтому и вынуждены задавать вопросы и изучать средства, не имеющие прямого отношения к бизнесу. Очень неудобно тратить Ваше время в таком объеме, но вариантов нет.
Спасибо еще раз за любую помощь, которая позволит решить задачу без дополнительных платежей третьим очень уважаемым лицам.
- Вложения
-
- newerrors 1.jpg
- (94.98 КБ) 10509 скачиваний