Краткое описание функций Wealth Lab. Часть 2

Функции Wealth-Lab. Часть 2

 

  1. Функции технических индикаторов
  2. Строковые функции

 

Часть 1 назад

 

Функции технических индикаторов

Технические индикаторы позволяют проводить технический анализ. На основе этих функций можно создавать собственные индикаторы и стратегии.

Индикаторы имеют 2 синтаксические формы. Первая возвращает значение индикатора на конкретном баре, вторая – возвращает целочисленный указатель на весь ценовой ряд индикатора.

SMA

SMA( Bar: integer; Series: integer; Period: integer ): float;

SMASeries( Series: integer; Period: integer ): integer;

SMA возвращает индикатор Simple Moving Average (Простая скользящая средняя). SMA – это самая простая из всего разнообразия скользящих средних: это просто средняя цена за указанный период.

Расчет

SMA – средняя из значений ряда за указанный период времени.

Пример

{ An SMA Crossover system }
var BAR, hSlow, hFast, SlowPer, FastPer: integer;
SlowPer := 100;
FastPer := 40;
hSlow := SMASeries( #Close, SlowPer );
hFast := SMASeries( #Close, FastPer );
PlotSeries( hSlow, 0, 000, #Thick );
PlotSeries( hFast, 0, 502, #Thick );
for Bar := SlowPer to BarCount - 1 do
begin
if not LastPositionActive then
begin
if CrossOver( Bar, hFast, hSlow ) then
BuyAtMarket( Bar + 1, '');
end
else
begin
if CrossUnder( Bar, hFast, hSlow ) then
SellAtMarket( Bar + 1, LastPosition, '' );
end;
end;

В начало

Round

Round( Value: float ): integer;

Округляет значение числа с плавающей точкой до ближайшего целого, которое и возвращает как целочисленный тип integer. При этом Round использует т.наз. «банковское округление», которое означает что результат округления числа, находящегоя ровно межлу 2-мя целыми числами будет всегда четным числом.

Пример

{ n equals 2 and p equals -3 at the end of the example }
var x: float;
var n, p: integer;
x := 2.5;
n := Round( x );
x := -3.49;
p := Round( x );
ShowMessage( IntToStr(n) + #9 + IntToStr(p) );

В начало

Random

Random: float;

Возвращает случайное число между 1 и 0.

Пример

{ Get a random value between 100 and 200 }
var x: float;
x := Random * 100 + 100;

В начало

RSI

RSI( Bar: integer; Series: integer; Period: integer ): float;

RSISeries( Series: integer; Period: integer ): integer;

Возвращает индикатор RSI (индекс относительной силы), измеряющий силу тренда.

Значение индикатора колеблется в интервале от 0 to 100. Наиболее популярные периоды для расчета RSI – 9, 14 и 25. Создатель индекса У.Уилдер использовал 14 периодов. Чем меньше периодов используется для расчета, тем более волатильным становится индикатор.

Расчет

RSI = 100 – ( 100 / ( 1 + RS ) )

где,

RSI – индекс относительной силы

RS = (среднее значение положительных ценовых изменений за период) / (среднее значение отрицательных ценовых изменений за период)

Периоды обычно берутся размером в 14 баров.

Пример

{ This script colors each bar based on the RSI oversold/overbought level }
var X: float;
var RSIPANE, BAR, COL: integer;
RSIPane := CreatePane( 75, true, true );
SetPaneMinMax( RSIPane, 0, 100 );
PlotSeries( RSISeries( #Close, 14 ), RSIPane, 005, #Thin );
DrawLabel( 'RSI( Close, 14 )', RSIPane );
for Bar := 42 to BarCount - 1 do
begin
x := RSI( Bar, #Close, 14 );
if x #* [# 50 then
begin
x := x - 50;
x := x * 2;
x := x / 9;
col := Trunc( x ) * 100;
end
else
begin
x := 50 - x;
x := x * 2;
x := x / 9;
col := Trunc( x ) * 10;
end;
SetBarColor( Bar, col );
end;

В начало

EMA

EMA( Bar: integer; Series: integer; Period: integer ): float;

EMASeries( Series: integer; Period: integer ): integer;

EMA возвращает индикатор Exponential Moving Average (экспоненциальная скользящая средняя) для указанного периода. EMA аналогична SMA, в том что также рассчитывает среднюю за период. Однако EMA в отличие SMA придает больший вес наиболее последним значениям периода.

Расчет

EMA = ( K x ( C – P ) ) + P

где,

C = Текущая цена

P = Предыдущие периоды EMA (SMA используется для вычислений на первых периодах)

K = Экспоненциальная константа

Константа K для своего расчет опирается на число периодов для расчета средней: K = ( 1 / n) * 2, где n – период на котором строится EMA.

Пример

{ Dual EMA CrossOver System }
var BAR, P: integer;
{ UseUpdatedEMA( true ); } {Alternate smoothing exponent}
PlotSeries( EMASeries( #Close, 60 ), 0, 002, #Thick );
DrawLabel( 'EMA( Close, 60 )', 0 );
PlotSeries( EMASeries( #Close, 120 ), 0, 202, #Thin );
DrawLabel( 'EMA( Close, 120 )', 0 );
for Bar := 120 to BarCount - 1 do
begin
if not LastPositionActive then
begin
if CrossOver( Bar, EMASeries( #Close, 60 ), EMASeries( #Close, 120
) ) then
BuyAtMarket( Bar + 1, '' );
end
else
begin
if CrossUnder( Bar, EMASeries( #Close, 60 ), EMASeries( #Close, 120
) ) then
SellAtMarket( Bar + 1, LastPosition, '' );
end;
end;

В начало

StdDev

StdDev( Bar: integer; Series: integer; Period: integer ): float;

StdDevSeries( Series: integer; Period: integer ): integer;

Стандартное отклонение (Standart Deviation) – это статистическое измерение волатильности рынка. Индикатор характеризует размер колебаний цены относительно скользящего среднего.

Пример

{ Divide Standard Deviation by Average Price to arrive
at a normalized Volatility indicator }
var MYVOLATILITY, VOLPANE: integer;
MyVolatility := DivideSeries( StdDevSeries( #Close, 30 ),
SMASeries( #Close, 30 ) );
VolPane := CreatePane( 100, true, true );
PlotSeries( MyVolatility, VolPane, #Purple, #ThickHist );

В начало

BBandLower

BBandLower( Bar: integer; Series: integer; Period: integer; StdDev: float ): float;

BBandLowerSeries( Series: integer; Period: integer; StdDev: float ): integer;

Линии Bollinger Bands (Полосы Боллинджера) строятся как полоса вокруг скользящей средней. Ширина полосы пропорциональна стандартному отклонению от скользящей средней за указанный период времени.

Расчет

В начале считается и строится SMA, потом на тех же данных строится StdDev. Для построения верхней границы полосы используется SMA+ StdDev, для нижней – SMA-StdDev

Обычно используется следующие значения:

Краткосрочный период: 10 дневная SMA, полоса в 1.5 StdDev.

Среднесрочный период: 20 дневная SMA, полоса в 2 StdDev.

Долгосрочный период: 50 дневная SMA, полоса в 2.5 StdDev.

Пример

{ Flag bars that have penetrated the lower BBand }
var Bar: integer;
PlotSeries( BBandLowerSeries( #Close, 10, 1.50 ), 0, 205, #Thick );
for Bar := 10 to BarCount - 1 do
if PriceLow( Bar ) < BBandLower( Bar, #Close, 10, 1.50 ) then
SetBarColor( Bar, #Red );

В начало

BBandUpper

BBandUpper( Bar: integer; Series: integer; Period: integer; StdDev: float ): float;

BBandUpperSeries( Series: integer; Period: integer; StdDev: float ): integer;

См. BBandLower

Пример

{ Flag bars that have penetrated the upper BBand }
var Bar: integer;
PlotSeries( BBandUpperSeries( #Close, 10, 1.50 ), 0, 205, #Thick );
for Bar := 10 to BarCount - 1 do
if PriceHigh( Bar ) #* [# BBandUpper( Bar, #Close, 10, 1.50 ) then
SetBarColor( Bar, 050 );

В начало

Highest

Highest( Bar: integer; Series: integer; Period: integer ): float;

HighestSeries( Series: integer; Period: integer ): integer;

Возвращает наибольшее значение ценового ряда в рассматриваемом периоде.

Расчет

Просматривает указанное число последних баров и возвращает наибольшую цену за период.

Пример

{ Have we made a 100 bar high? }
var BAR: integer;
for Bar := 100 to BarCount - 1 do
if PriceHigh( Bar ) = Highest( Bar, #High, 100 ) then
AnnotateBar( 'NH', Bar, true, #Black, 8 );

В начало

Lowest

Lowest( Bar: integer; Series: integer; Period: integer ): float;

LowestSeries( Series: integer; Period: integer ): integer;

Возвращает наименьшее значение ценового ряда в рассматриваемом периоде.

Расчет

Просматривает указанное число последних баров и возвращает наименьшую цену за период.

Пример

{ Plot the most recent 40 bar low as dots on the chart }
PlotSeries( LowestSeries( #Low, 40 ), 0, #Maroon, #Dots );
DrawLabel( 'Lowest( Low, 40 )', 0 );

В начало

StochD

StochD( Bar: integer; Period: integer; Smooth: integer ): float;

StochDSeries( Period: integer; Smooth: integer ): integer;

StochD возвращает стохастический индикатор Stochastic %D. Это сглаженная на коэффициент Smooth версия Stochastic %K. Стохастик изменяется в диапазоне от 0 до 100. При этом значение 0% означает, что соответствующая ему цена закрытия была самой низкой за определенный период времени, а значение 100 наоборот говорит о том, что в этом месте имелась максимальная цена закрытия.

Сочетание %K and %D называют быстрым стохастиком. StochD можно использовать как основу для создания медленного стохастика %K. Чтобы создать медленного стохастика нужно взять скользящую среднюю StochD.

Расчет

n = Число периодов, обычно 5

S = Число сглаженных интервалов, обычно 3

%D = Медленный стохастик K, сглаженный за S периодов (не SMA сглаживание)

HH(Bar-j) = Наибольшая величина бара за Bar-j из n периодов

LL(Bar-j) = Наименьшая величина бара за Bar-j из n периодов

C(Bar-j) = Цена закрытия бара Bar-j

S?= Сумма за: от j = 0 до S – 1 периодов

Sum1 = S(C(Bar-j) – LL(Bar-j) )

Sum2 = S(HH(Bar-j) – LL(Bar-j) )

%D = 100 * Sum1 / Sum2

Пример

{ Simple system based on Slow Stochastic }
var STOCHPANE, SLOWK, SLOWD, BAR: integer;
StochPane := CreatePane( 120, true, true );
SlowK := StochDSeries( 10, 3 );
SlowD := SMASeries( SlowK, 3 );
PlotSeries( SlowK, StochPane, #Purple, #Thick );
PlotSeries( SlowD, StochPane, #Black, #Thin );
for Bar := 20 to BarCount - 1 do
begin
if not LastPositionActive then
begin
if CrossOver( Bar, SlowK, SlowD ) then
if GetSeriesValue( Bar - 1, SlowK ) < 20 then
BuyAtMarket( Bar + 1, '');
end
else
begin
if CrossOverValue( Bar, SlowK, 80 ) then
SellAtMarket( Bar + 1, LastPosition, '' );
end;
end;

В начало

StochK

StochK( Bar: integer; Period: integer ): float;

StochKSeries( Period: integer ): integer;

StochK возвращает стохастический осциллятор Stochastic Oscillator %K.

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

Классическая интерпретация стохастика предполагает, что при достижении %K уровня более 70 обычно означает перекупленность, а ниже 30 – перепроданность.

Расчет

n = Число периодов, обычно 5

HHn = Наибольшая величина бара за n периодов

LLn = Наименьшая величина бара за n периодов

C = Цена закрытия текущего бара

%K = Stochastic K = 100 * ( C – LLn ) / ( HHn – LLn )

Пример

{ A system based on Fast Stochastic Extreme Levels }
var STOCHPANE, BAR, P: integer;
StochPane := CreatePane( 100, true, true );
PlotSeries( StochKSeries( 14 ), StochPane, 505, #Thick );
DrawLabel( 'StochK( 14 )', StochPane );
for Bar := 14 to BarCount - 1 do
begin
if CrossUnderValue( Bar, StochKSeries( 14 ), 20 ) then
BuyAtMarket( Bar + 1, '');
if CrossOverValue( Bar, StochKSeries( 14 ), 20 ) then
for P := 0 to PositionCount - 1 do
if PositionActive( P ) then
SellAtMarket( Bar + 1, P, '' );
end;

В начало

Sum

Sum( Bar: integer; Series: integer; Period: integer ): float;

SumSeries( Series: integer; Period: integer ): integer;

Возвращает сумму значений ценового ряда за определенный период. Это не является само по себе индикатором, но используется для создания других индикаторов как математическая функция суммирования значений ценового ряда.

Расчет

Простое сложение цен за период

Sum = ( P1 + P2 + … + Pn )

где,

Sum = сложение значения цен

P = цены: #Open, #Close, SMASeries, и т.д.

. . .

n = число баров в периоде

Пример

{ Plot 20 bar sum of Highs minus Lows }
var XUP, XDOWN: float;
var UPMINUSDOWN, BAR, UDPANE: integer;
UpMinusDown := CreateSeries;
for Bar := 20 to BarCount - 1 do
begin
xUp := Sum( Bar, #High, 20 );
xDown := Sum( Bar, #Low, 20 );
SetSeriesValue( Bar, UpMinusDown, xUp - xDown );
end;
UDPane := CreatePane( 70, false, true );
PlotSeries( UpMinusDown, UDPane, #Olive, #Thick );

В начало

WilderMA

WilderMA( Bar: integer; Series: integer; Period: integer ): float;

WilderMASeries( Series: integer; Period: integer ): integer;

WilderMA возвращает скользящую среднюю, рассчитанную по формуле У.Уайлдера (Welles Wilder) представленной в его книге «Новые концепции технических торговых систем» (New Concepts in Technical Trading). Этот индикатор похож на экспоненциальную скользящую среднюю. TВ сравнении с другими скользящими средними WildersMA сравнительно медленно реагирует на изменения цен. WildersMA рассчитанная на n периодах дает сходные значения с EMA, построенной на 2n периодах. Например, EMA на a 14 периодах имеет практически те же значения, что и WilderMA на 7-ми периодах.

Расчет

WilderMA для n периодов рассчитывается по следующей формуле:

Wilder MA = ( Previous Wilder MA * ( n – 1 ) + Price Series Value ) / n

где,

n = число периодов

Price Series Value = ценовый ряд, для которого нужно рассчитать среднюю

Пример

{ Compare a Simple and Exponential Moving Average with Wilder's MA }
var n: integer;
var s, s2: string;
n := 14;
s := '(Close, ' + IntToStr( n ) + ' )';
s2 := '(Close, ' + IntToStr( 2 * n ) + ' )';
PlotSeriesLabel( WilderMASeries( #Close, n ), 0, 090, #Thick,
'WilderMA' + s );
PlotSeriesLabel( SMASeries( #Close, n ), 0, 900, #Thin, 'SMA' + s );
PlotSeriesLabel( EMASeries( #Close, 2 * n ), 0, 005, #Thin, 'EMA' + s2
);

BOP

BOP( Bar: integer ): float;

BOPSeries: integer;

Индикатор Баланс сил (Balance of Market Power), созданный Игорем Лившиным, измеряет силу быков против силы медведей, оценивая способность каждого из них вытолкнуть цену к экстремальному уровню.

Расчет

Баланс сил рассчитывается по следующей формуле:

BOP = (C – O)/(H – L)

где,

C = Close, O = Open, H = High and L = Low

Пример

{ Plot a smoothed Balance of Power below Volume }
var BOPSmoothed, BOPPane: integer;
BOPSmoothed := SMASeries( BOPSeries, 20 );
BOPPane := CreatePane( 80, false, true );
PlotSeries( BOPSmoothed, BOPPane, 642, #Thick );

В начало

CCI

CCI( Bar: integer; Period: integer ): float;

CCISeries( Period: integer ): integer;

Индекс Товарного Канала (Commodity Channel Index), разработанный Ламбертом, определяет циклические движения торгуемых инструментов. Он предполагает, что все активы движутся циклически. Цикл – это интервал от минимума к минимуму или от максимума к максимуму. Ламберт рекомендовал в качестве основного параметра индекса 1/3 цикла. Высокие значения индекса (больше +100) указывают на то, что актив перекуплен, а слишком низкие значения (меньше -100) – что перепродан.

Расчет

Индекс товарного канала (CCI) вычисляется как разница между усредненной ценой за период и средней от той усредненной цены. Разница сопоставляется со средней разницей за период.

Результат умножается на костанту с тем чтобы большинство значений попадало в стандартный интервал от +/- 100.

CCI = ( AveP – SMA_of_AveP ) / ( 0.015 * Среднее отклонение )

где,

CCI = Commodity Channel Index

AveP = Средняя цена (Average Price) = (High + Low + Close) / 3

Константа 0.015 гарантирует 70-80% попадания CCI в интервал +/-100.

Пример

{ Color bars oversold/overbought based on CCI level }
var Bar, CCIPane: integer;
CCIPane := CreatePane( 80, true, true );
PlotSeries( CCISeries( 10 ), CCIPane, 505, #Histogram );
DrawLabel( 'CCI(10)', CCIPane );
for Bar := 10 to BarCount - 1 do
begin
if CCI( Bar, 10 ) #* [# 100 then
SetBarColor( Bar, #Red )
else if CCI( Bar, 10 ) < -100 then
SetBarColor( Bar, #Green );
end;

В начало

LastPositionActive

LastPositionActive: boolean;

Возвращает истину, если последняя позиция в настоящее время активна.

Пример

var BAR: integer;
InstallStopLoss( 20 );
InstallProfitTarget( 7 );
for Bar := 40 to BarCount - 1 do
begin
ApplyAutoStops( Bar );
if not LastPositionActive then
if CrossOverValue( Bar, RSISeries( #Average, 40 ), 25 ) then
BuyAtLimit( Bar + 1, PriceHigh( Bar ), '' );
end;

В начало

Строковые функции

Выполняют различные манипуляции о строковыми данными: сравнение, извлечение данных, и т.д.

CharAt

CharAt( Value: string; Index: integer ): string;

Возвращает один строковый символ с позиции номер Index строки Value. Индекс первого символа в Value равен 1. Если Index неверен, то функция возвращает NULL

Пример

{ A re-useable vertical labeling routine }
procedure VerticalLabel( Bar: integer; str: string; AbovePrices:
boolean; Color, Size: integer );
begin
var n: integer;
if AbovePrices then
begin
for n := Length( str ) downto 1 do
AnnotateBar( CharAt( str, n ), Bar, AbovePrices, Color, Size );
end
else
for n := 1 to Length( str ) do
AnnotateBar( CharAt( str, n ), Bar, AbovePrices, Color, Size );
end;
const S1 = 'PEAK';
const S2 = 'TROUGH';
var Bar, PB, TB: integer;
{ Make extra room for peak label }
HidePaneLines;
CreatePane( 20, true, false );
Bar := BarCount - 1;
PB := PeakBar( Bar, #Close, 5 );
VerticalLabel( PB, S1, true, #Blue, 8 );
TB := TroughBar( Bar, #Close, 5 );
VerticalLabel( TB, S2, false, #Red, 8 );

В начало

Chr

Chr( ASCIICode: integer ): string;

Возвращает строковый символ указанного ASCIICode, который может быть целочисленной переменной или литеральной константой.

Также можно использовать нотацию “#asciicode”. В этом случае необходимо указать константу от 0 to 255 как показано на примере.

Пример

{ Print a list of the ASCII characters to the debug
window starting with printable characters }
var i: integer;
for i := 33 to 255 do
{ Separate the items by a Tab character, ASCII 9 }
Print( IntToStr( i ) + #9 + Chr( i ) );

В начало

CompareStr

CompareStr( s1: string; s2: string ): integer;

Функция сравнивает 2 строки: s1 и s2, является чувствительной к регистру. Если строки одинаковы – возвращает 0. Если первая строка больше второй (в алфавитном порядке), то функция возвращает положительное целое, если же меньше, то отрицательное целое.

Пример

var s1, s2: string;
s1 := Input( 'Enter First String' );
s2 := Input( 'Enter Second String' );
ShowMessage( 'CompareStr Result is: '
+ IntToStr( CompareStr( s1, s2 ) ) );

В начало

CompareText

CompareText( s1: string; s2: string ): integer;

Функция сравнивает 2 строки: s1 и s2, является не чувствительной к регистру. Если строки одинаковы – возвращает 0. Если первая строка больше второй (в алфавитном порядке), то функция возвращает положительное целое, если же меньше, то отрицательное целое.

Пример

var s1, s2: string;
s1 := Input( 'Enter First String' );
s2 := Input( 'Enter Second String' );
ShowMessage( 'CompareText Result is: '
+ IntToStr( CompareText( s1, s2 ) ) );

В начало

Copy

Copy( String: string; Index: integer; Count: Integer ): string;

Возвращает подстроку заданной строки String. Подстрока начинается с позиции указанной в параметре Index, а длина подстроки задается параметром Count.

Пример

function GetFirstWord( s: string ): string;
var n: integer;
begin
Result := '';
n := Pos( ' ', s );
if n #* [# 2 then
Result := Copy( s, 1, n - 1 );
end;
DrawLabel( GetFirstWord( GetSecurityName ), 0 );

В начало

Delete

Delete( String: string; Index: integer; Count: integer);

Удаляет подстроку из указанной строки String. Удаление подстроки начинается с позиции, заданной параметром Index, а длина подстроки задается параметром Count.

Пример

var s: string;
s := 'Honest Abe Lincoln';
Delete( s, 8, 4 );
ShowMessage( s );

В начало

FloatToStr

FloatToStr( Value: float ): string;

Преобразовывает в строку заданное значение с плавающей точкой Value. Для преобразования с учетом формата строки используйте функцию FormatFloat.

Пример

{ Display the change over a one year period }
var X, X2, XCHANGE, XPCT: float;
x := PriceClose( BarCount - 251 );
x2 := PriceClose( BarCount - 1 );
xChange := x2 - x;
xPct := ( xChange / x ) * 100;
DrawLabel( 'Net Change over a past year: '
+ FloatToStr( xPct ) + '%', 0 );

В начало

FormatFloat

FormatFloat( FormatString: string; Value: float );

Преобразовывает в строку значение с плавающей точкой Value в соответствие с заданным форматом строки FormatString. Для формата строки обычно используются следующие символы:

  1. 0 – Поле для цифры. Если форматируемая величина имеет в этой позиции цифру, то вставляется она, в противном случае вставляется 0.
  2. # – аналогично 0. Если форматируемая величина имеет в этой позиции цифру, то вставляется она, в противном случае ничего не вставляется.
  3. , – символ для разделителя тысяч. Добавляет символ разделения разрядов определенный в Windows Regional Options. Вне зависимости от позиции запятой в форматирующей строке группировка будет производиться только по тысячам.
  4. . – десятичная точка. Добавляет символ разделения целочисленной и дробной части определенный в Windows Regional Options. Использование более 1 точки в строке сгенерирует ошибку.

    #Прочие симолы – прочие печатные символы, которые выводятся как буквы в тех позициях, где они появляются в строке формата. Например можно добавить символы валют ($, ?, и т.п.), или процентов (%), например ‘$#,##0.00′ or ’0.0%’

Пример

{ Print a closing value to the debug window }
var BAR: integer;
Print( FormatFloat( '#,##0.00', PriceClose( Bar ) ) );

В начало

GetToken

GetToken( String: string; TokenNum: integer; Delimiter: string ): string;

Разбирает строку String и возвращает подстроку после указанного символа разделителя TokenNum-того по счету. Сама строка не изменяется при вызове этой функции. Для функции в качестве параметра задается символ используемый в качестве разделителя (Delimiter) и порядковые номер этого маркера. 0 вернет подстроку после первого разделителя, 1 – после второго и т.д. Если лексема с заданным номером не найдена, то функция GetToken вернет нулевую строку (ASCII Code 0).

Пример

{ Return a token from a space-delimited string }
s := 'This is a line of tokens';
sToken := GetToken( s, 5, ' ' );
{ sToken now contains the string "tokens" }

В начало

Insert

Insert( Source: string; S: string; Index: Integer);

Вставляет подстроку Source, в строку S начиная с места, заданного параметром Index.

Пример

var s: string;
s := 'Honest Lincoln';
Insert( 'Abe ', s, 8 );
ShowMessage( s );

В начало

IntToStr

IntToStr( Value: integer ): string;

Преобразовывает целочисленное значение параметра Value в строку.

Пример

{ Display the total number of bars in the chart }
DrawLabel( 'The Chart has ' + IntToStr( BarCount ) + ' Bars', 0 );

В начало

Length

Length( String: string ): integer;

Возвращает длину строки String.

Пример

var s: string;
s := 'Wealth-Lab';
n := Length( s ); //n is now 10

В начало

LowerCase

LowerCase( Value: string ): string;

Возвращает строку Value в строчных буквах.

Пример

{ Capitalize the first letter of the name only }
var S, FIRSTLETTER: string;
s := LowerCase( GetSecurityName );
if s = '' then
Exit;
FirstLetter := UpperCase( Copy( s, 1, 1 ) );
s := FirstLetter + Copy( s, 2, Length( s ) );
ShowMessage( s );

В начало

Ord

Ord( Value: string ): integer;

Возвращает ASCII code первого символа строки Value.Строка не должна быть пустой.

Пример

{ Create a table of printable characters }
var c: integer;
for c := 32 to 128 do
Print( IntToStr( c ) + #9 + Chr( c )
+ #9 + IntToStr( Ord( Chr( c ) ) ) );

В начало

Pos

Pos( SubString: string; String: string ): integer;

Возвращает номер позиции первого символа подстроки Substring, встретившегося в строке String.

Пример

var s: string;
var n: integer;
s := Input( 'Give me a string!' );
n := Pos( 'A', UpperCase( s ) );
if n = 0 then
ShowMessage( 'The letter ''A'' is not present.' )
else
ShowMessage( 'The letter ''A'' is at position ' + IntToStr( n ) + '.'
);

В начало

StrToFloat

StrToFloat( Value: string ): float;

Преобразовывает строку Value в число одинарной точности с плавающей точкой.

Пример

{ Read a value from an external file and convert to floating point }
var f: integer;
var s: string;
var x: float;
f := FileOpen( 'MyFile.txt' );
s := FileRead;
x := StrToFloat( s );

В начало

StrToFloatDef

StrToFloatDef( Value: string; Default: float ): float;

Преобразовывает указанную строку Value в число с плавающей точкой. Если строка не может быть преобразована в число с плавающей точкой, функция возвращает значение параметра Default.

Пример

{ Let the user specify the Standard Deviations to use for Bollinger
Bands }
var S: string;
var X: float;
s := Input( 'Bollinger Band Std Dev?' );
x := StrToFloatDef( s, 1.5 );
PlotSeries( BBandLowerSeries( #Close, 10, x ), 0, 009, #Thin );
PlotSeries( BBandUpperSeries( #Close, 5, x ), 0, 009, #Thin );

В начало

StrToInt

StrToInt( Value: string ): integer;

Преобразовывает строку Value в целое число.

Пример

function ConvertDate( Date: string ): integer;
begin
var y, m, d: string;
m := GetToken( Date, 0, '/' );
d := GetToken( Date, 1, '/' );
y := GetToken( Date, 2, '/' );
Result := StrToInt( y ) * 10000
+ StrToInt( m ) * 100
+ StrToInt( d );
end;
const MyDate = '5/18/2005';
Print( 'ConvertDate returns: ' + IntToStr( ConvertDate( MyDate ) ) );
try
Print( 'StrToDate returns: ' + IntToStr( StrToDate( MyDate ) ) );
except
Print( '' );
Print( 'Your computer''s short date format is not mm/dd/yyyy' );
end;

В начало

StrToIntDef

StrToIntDef( Value: string; Default: integer ): integer;

Преобразовывает строку Value в целое число. Если строка не может быть преобразована в целое, то функция вернет значение параметра Default.

Пример

{ Let the user specify the period they want to use }
var S: string;
var N: integer;
s := Input( 'EMA Period?' );
n := StrToIntDef( s, 50 );
PlotSeries( EMASeries( #Close, n ), 0, 002, #Thick );

В начало

Trim

Trim( s: string ): string;

Возвращает копию указанной строки s, отсекая пробелы в начале и в конце строки.

Пример

{ Read a line from an external file }
var s: string;
var n: integer;
n := FileOpen( 'C:\MyFile.txt' );
s := FileRead( n );
s := Trim( s );

В начало

TrimLeft

TrimLeft( s: string ): string;

Возвращает копию указанной строки s, отсекая пробелы в начале строки.

Пример

{ Get second word of company name }
var s: string;
var n: integer;
s := GetSecurityName;
n := Pos( ' ', s );
if n #* [# 0 then
begin
s := Copy( s, n, Length( s ) );
s := TrimLeft( s );
end;

В начало

TrimRight

TrimRight( s: string ): string;

Возвращает копию указанной строки s, отсекая пробелы в конце строки.

Пример

{ Output contents of a file }
var s: string;
var f: integer;
f := FileOpen( 'C:\MyFile.txt' );
while not FileEOF( f ) do
Print( TrimRight( FileRead( f ) ) );

В начало

UpperCase

UpperCase( s: string ): string;

Возвращает копию строки s в прописных буквах.

Пример

{ Print the names of all your ChartBooks to the Debug window }
var F: integer;
f := FileOpen( 'Namespaces.txt' );
while not FileEOF( f ) do
Print( UpperCase( FileRead( f ) ) );

В начало

 

Часть 1 назад

 

Sorry, the comment form is closed at this time.

BullsTime is Powered by Wordpress. ??????????? ????????? ?? ??????? ?? ???? ??????????????. 2008 - 2012