Страница 1 из 1
Использование функции Print
Добавлено: Вт авг 08, 2006 1:12 pm
Smile
Печать типа Integer:
Print(String(IntTostr(a))); где a - переменная типа integer, значение которой нужно вывести в журнал
Печать типа Double:
Print(String(FloatToStrF(Price, ffFixed, 10, 4))); где Price - переменная типа Double, значение которой нужно вывести в журнал
Re: Использование функции Print
Добавлено: Вт авг 08, 2006 2:01 pm
Terranin
Smile писал(а):Печать типа Integer:
Print(String(IntTostr(a))); где a - переменная типа integer, значение которой нужно вывести в журнал
Печать типа Double:
Print(String(FloatToStrF(Price, ffFixed, 10, 4))); где Price - переменная типа Double, значение которой нужно вывести в журнал
Ну во первых не надо делать string() достаточно Print(IntToStr(a));
Потом в Дельфи есть замечательная функция 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
Добавлено: Ср авг 09, 2006 1:11 pm
Smile
Не знал... Спасибо, теперь буду знать
Добавлено: Чт авг 10, 2006 6:27 pm
AndyMEN
Terranin
Как можно заставить команду Print или Format печатать не только в журнал но в сами графики?
Добавлено: Пт авг 11, 2006 1:22 pm
Terranin
AndyMEN писал(а):Terranin
Как можно заставить команду Print или Format печатать не только в журнал но в сами графики?
Никак. Для графиков скорее всего будет механизм объектов, когда создается строка и обновляется.
Добавлено: Пт июн 08, 2007 11:10 pm
Mike
AndyMEN писал(а):Terranin
Как можно заставить команду Print или Format печатать не только в журнал но в сами графики?
Подобный вопрос: Как можно информацию из журнала "впихнуть" скажем в историю счета (например добавить поле в историю счета или заменить какое-либо поле на своё)? И можно ли так вообще сделать? Или как вытащить инфу из журнала?
Спасибо!
Добавлено: Сб июн 09, 2007 5:20 pm
Terranin
Mike писал(а):AndyMEN писал(а):Terranin
Как можно заставить команду Print или Format печатать не только в журнал но в сами графики?
Подобный вопрос: Как можно информацию из журнала "впихнуть" скажем в историю счета (например добавить поле в историю счета или заменить какое-либо поле на своё)? И можно ли так вообще сделать? Или как вытащить инфу из журнала?
Спасибо!
Журнал пишется в файл \Logs\ForexTester.log
Добавлено: Ср июн 20, 2007 11:17 am
Mike
Михаил, подскажите плиз!
По йенозависимым парам получаем результат(например):
1.19, а нужно 119.00
Как получить именно такой формат 000.00 ?
Спасибо.
Добавлено: Ср июн 20, 2007 1:04 pm
Terranin
Mike писал(а):Михаил, подскажите плиз!
По йенозависимым парам получаем результат(например):
1.19, а нужно 119.00
Как получить именно такой формат 000.00 ?
Спасибо.
Похоже что-то считается неправильно если выходит такое число. %.2f значит вывести с 2мя знаками после запятой, а 1.19 там будет или 119.00 это зависит от самого числа.
Добавлено: Сб фев 23, 2008 7:11 pm
income
Terranin писал(а):Mike писал(а):Михаил, подскажите плиз!
По йенозависимым парам получаем результат(например):
1.19, а нужно 119.00
Как получить именно такой формат 000.00 ?
Спасибо.
Похоже что-то считается неправильно если выходит такое число. %.2f значит вывести с 2мя знаками после запятой, а 1.19 там будет или 119.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.
и выводит он нам: 0.00, а как считается? - 7467.2-7407.0(это котировки ДАКСа) = 60.2
Вот это и надо вывести: 60.2, или я неправильно накодил...?он постоянно мне выдает нули...что делать?
Подскажите пожалуйста?
Добавлено: Сб фев 23, 2008 7:57 pm
Terranin
Выведите все значения, валюту, hi, low и результат и посмотрите что показывает.
Print(format('%s, %.4f, %.4f, %.4f, ширина канала =%.2f', [Currency, h, l, r, r]));
Добавлено: Сб фев 23, 2008 8:11 pm
income
Terranin писал(а):Выведите все значения, валюту, hi, low и результат и посмотрите что показывает.
Print(format('%s, %.4f, %.4f, %.4f, ширина канала =%.2f', [Currency, h, l, r, r]));
FDAXFU, 7461,0000, 7461,0000, 0,0000, ширина канала =0,00
вот что показывает, получается что у хай и лоу одинаковая цена, как это может быть??
З.Ы. Кстати для фунта аналогично написанное работает правильно!
Добавлено: Сб фев 23, 2008 8:29 pm
income
income писал(а):Terranin писал(а):Выведите все значения, валюту, hi, low и результат и посмотрите что показывает.
Print(format('%s, %.4f, %.4f, %.4f, ширина канала =%.2f', [Currency, h, l, r, r]));
FDAXFU, 7461,0000, 7461,0000, 0,0000, ширина канала =0,00
вот что показывает, получается что у хай и лоу одинаковая цена, как это может быть??
З.Ы. Кстати для фунта аналогично написанное работает правильно!
теперь меняю в строке CurrTime := iTime(Currency, PERIOD_H1, 0);период на Н1 или D1 тогда все работаета, только зачем то по три раза печатает с интервалом по 15 минут:
2007.09.12 10:15:00 ширина канала =19,50
2007.09.12 10:30:00 ширина канала =19,50
2007.09.12 10:45:00 ширина канала =19,50
Добавлено: Сб фев 23, 2008 8:53 pm
Terranin
income писал(а):income писал(а):Terranin писал(а):Выведите все значения, валюту, hi, low и результат и посмотрите что показывает.
Print(format('%s, %.4f, %.4f, %.4f, ширина канала =%.2f', [Currency, h, l, r, r]));
FDAXFU, 7461,0000, 7461,0000, 0,0000, ширина канала =0,00
вот что показывает, получается что у хай и лоу одинаковая цена, как это может быть??
З.Ы. Кстати для фунта аналогично написанное работает правильно!
теперь меняю в строке CurrTime := iTime(Currency, PERIOD_H1, 0);период на Н1 или D1 тогда все работаета, только зачем то по три раза печатает с интервалом по 15 минут:
2007.09.12 10:15:00 ширина канала =19,50
2007.09.12 10:30:00 ширина канала =19,50
2007.09.12 10:45:00 ширина канала =19,50
Значит что-то не то с загруженными котировками. Программе нужны минутные котировки как база для генерации тиков. Свеча не меняется вот и лепит там одни и теже данные.
Добавлено: Сб фев 23, 2008 8:59 pm
income
действительно проблемы с котировками (минуток нету)этого долбанного МТ, бл....
ну в принципе все работает сейчас как надо, ширину выдает, только котировки обновлю.
Спасибо за оперативную помощь!
Нашел минутки, - теперь все работает правильно и один раз печатает ширину!