Использование функции Print
-
- Сообщения: 27
- Зарегистрирован: Вт авг 08, 2006 1:06 pm
Использование функции Print
Печать типа Integer:
Print(String(IntTostr(a))); где a - переменная типа integer, значение которой нужно вывести в журнал
Печать типа Double:
Print(String(FloatToStrF(Price, ffFixed, 10, 4))); где Price - переменная типа Double, значение которой нужно вывести в журнал
Print(String(IntTostr(a))); где a - переменная типа integer, значение которой нужно вывести в журнал
Печать типа Double:
Print(String(FloatToStrF(Price, ffFixed, 10, 4))); где Price - переменная типа Double, значение которой нужно вывести в журнал
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Re: Использование функции Print
Ну во первых не надо делать string() достаточно Print(IntToStr(a));Smile писал(а):Печать типа Integer:
Print(String(IntTostr(a))); где a - переменная типа integer, значение которой нужно вывести в журнал
Печать типа Double:
Print(String(FloatToStrF(Price, ffFixed, 10, 4))); где Price - переменная типа Double, значение которой нужно вывести в журнал
Потом в Дельфи есть замечательная функция format -
вывести integer, longword, word, byte (целое)
Print(format('a=%d, b=%d', [a, b]));
> a=10, b=20
вывести double (с плавающей точкой)
Print(format('c=%.4f но d=%.2f', [c, d]));
> c=1.1375 но d=1.22
вывести строку
Print(format('text=%s', [s]));
> text=Hello
-
- Сообщения: 27
- Зарегистрирован: Вт авг 08, 2006 1:06 pm
-
- Сообщения: 1
- Зарегистрирован: Пн июл 24, 2006 7:51 am
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
-
- Сообщения: 38
- Зарегистрирован: Пт мар 16, 2007 2:03 pm
Подобный вопрос: Как можно информацию из журнала "впихнуть" скажем в историю счета (например добавить поле в историю счета или заменить какое-либо поле на своё)? И можно ли так вообще сделать? Или как вытащить инфу из журнала?AndyMEN писал(а):Terranin
Как можно заставить команду Print или Format печатать не только в журнал но в сами графики?
Спасибо!
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Журнал пишется в файл \Logs\ForexTester.logMike писал(а):Подобный вопрос: Как можно информацию из журнала "впихнуть" скажем в историю счета (например добавить поле в историю счета или заменить какое-либо поле на своё)? И можно ли так вообще сделать? Или как вытащить инфу из журнала?AndyMEN писал(а):Terranin
Как можно заставить команду Print или Format печатать не только в журнал но в сами графики?
Спасибо!
Asta la vista
Mike
Mike
-
- Сообщения: 38
- Зарегистрирован: Пт мар 16, 2007 2:03 pm
Михаил, подскажите плиз!
По йенозависимым парам получаем результат(например):
1.19, а нужно 119.00
Как получить именно такой формат 000.00 ?
Спасибо.
Код: Выделить всё
Print(format('ширина =%.2f', [raznica]));
1.19, а нужно 119.00
Как получить именно такой формат 000.00 ?
Спасибо.
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Похоже что-то считается неправильно если выходит такое число. %.2f значит вывести с 2мя знаками после запятой, а 1.19 там будет или 119.00 это зависит от самого числа.Mike писал(а):Михаил, подскажите плиз!
По йенозависимым парам получаем результат(например):Код: Выделить всё
Print(format('ширина =%.2f', [raznica]));
1.19, а нужно 119.00
Как получить именно такой формат 000.00 ?
Спасибо.
Asta la vista
Mike
Mike
-
- Сообщения: 12
- Зарегистрирован: Сб фев 16, 2008 3:27 pm
Вычитаем из текущего дневного хая - текущий дневной лоу:Terranin писал(а):Похоже что-то считается неправильно если выходит такое число. %.2f значит вывести с 2мя знаками после запятой, а 1.19 там будет или 119.00 это зависит от самого числа.Mike писал(а):Михаил, подскажите плиз!
По йенозависимым парам получаем результат(например):Код: Выделить всё
Print(format('ширина =%.2f', [raznica]));
1.19, а нужно 119.00
Как получить именно такой формат 000.00 ?
Спасибо.
Код: Выделить всё
library WidthChannelFDAX ;
uses
SysUtils, Classes, StrategyInterfaceUnit, TechnicalFunctions, DateUtils, Math;
var
Currency: PChar = nil;
TimeFrame: integer;
LotSize: double;
OrderHandle: integer;
LastTime: TDateTime;
CurrTime: TDateTime;
r: double;
{-----Init strategy----------------------------------------------------------}
procedure InitStrategy; stdcall;
begin
StrategyShortName('Width ChannelFDAX');
StrategyDescription('Ширина канала по времени FDAX');
RegOption('Currency', ot_Currency, Currency);
ReplaceStr(Currency, 'GBPUSD');
RegOption('LotSize', ot_Double, LotSize);
SetOptionDigits('LotSize', 1);
lotSize := 0.1;
end;
{-----Done strategy----------------------------------------------------------}
procedure DoneStrategy; stdcall;
begin
FreeMem(Currency);
end;
{-----Reset strategy---------------------------------------------------------}
procedure ResetStrategy; stdcall;
begin
OrderHandle := -1;
LastTime := 0;
end;
{-----Process single tick----------------------------------------------------}
procedure GetSingleTick; stdcall;
var
h: double;
l: double;
begin
// проверяем нашу валюту
if Symbol <> Currency then
exit;
// устанавливаем валюту и таймфрейм
SetCurrencyAndTimeFrame(Symbol, Timeframe);
// проверяем время последнего бара
CurrTime := iTime(Currency, PERIOD_M5, 0);
if Time(0) <> LastTime then
begin
LastTime := Time(0);
if (HourOf(Time(0)) = 14) and (MinuteOf(CurrTime) = 00) then
begin
h := iHigh(Currency, PERIOD_D1, 0);
l := iLow(Currency, PERIOD_D1, 0);
r := h - l;
Print(format('ширина канала =%.2f', [r]));
end;
end;
end;
exports
InitStrategy,
DoneStrategy,
ResetStrategy,
GetSingleTick;
end.
Вот это и надо вывести: 60.2, или я неправильно накодил...?он постоянно мне выдает нули...что делать?
Подскажите пожалуйста?
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
-
- Сообщения: 12
- Зарегистрирован: Сб фев 16, 2008 3:27 pm
FDAXFU, 7461,0000, 7461,0000, 0,0000, ширина канала =0,00Terranin писал(а):Выведите все значения, валюту, hi, low и результат и посмотрите что показывает.
Print(format('%s, %.4f, %.4f, %.4f, ширина канала =%.2f', [Currency, h, l, r, r]));
вот что показывает, получается что у хай и лоу одинаковая цена, как это может быть??
З.Ы. Кстати для фунта аналогично написанное работает правильно!
-
- Сообщения: 12
- Зарегистрирован: Сб фев 16, 2008 3:27 pm
теперь меняю в строке CurrTime := iTime(Currency, PERIOD_H1, 0);период на Н1 или D1 тогда все работаета, только зачем то по три раза печатает с интервалом по 15 минут:income писал(а):FDAXFU, 7461,0000, 7461,0000, 0,0000, ширина канала =0,00Terranin писал(а):Выведите все значения, валюту, hi, low и результат и посмотрите что показывает.
Print(format('%s, %.4f, %.4f, %.4f, ширина канала =%.2f', [Currency, h, l, r, r]));
вот что показывает, получается что у хай и лоу одинаковая цена, как это может быть??
З.Ы. Кстати для фунта аналогично написанное работает правильно!
2007.09.12 10:15:00 ширина канала =19,50
2007.09.12 10:30:00 ширина канала =19,50
2007.09.12 10:45:00 ширина канала =19,50
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Значит что-то не то с загруженными котировками. Программе нужны минутные котировки как база для генерации тиков. Свеча не меняется вот и лепит там одни и теже данные.income писал(а):теперь меняю в строке CurrTime := iTime(Currency, PERIOD_H1, 0);период на Н1 или D1 тогда все работаета, только зачем то по три раза печатает с интервалом по 15 минут:income писал(а):FDAXFU, 7461,0000, 7461,0000, 0,0000, ширина канала =0,00Terranin писал(а):Выведите все значения, валюту, hi, low и результат и посмотрите что показывает.
Print(format('%s, %.4f, %.4f, %.4f, ширина канала =%.2f', [Currency, h, l, r, r]));
вот что показывает, получается что у хай и лоу одинаковая цена, как это может быть??
З.Ы. Кстати для фунта аналогично написанное работает правильно!
2007.09.12 10:15:00 ширина канала =19,50
2007.09.12 10:30:00 ширина канала =19,50
2007.09.12 10:45:00 ширина канала =19,50
Asta la vista
Mike
Mike
-
- Сообщения: 12
- Зарегистрирован: Сб фев 16, 2008 3:27 pm